Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization 用PYOMO/PYSP求解MINLP_Optimization_Pyomo - Fatal编程技术网

Optimization 用PYOMO/PYSP求解MINLP

Optimization 用PYOMO/PYSP求解MINLP,optimization,pyomo,Optimization,Pyomo,团队 目前我正在研究一个非线性随机优化问题。到目前为止,工具箱真的很有用,谢谢!但是,添加非线性约束会导致错误。我使用古罗比解算器。该问题是由以下约束导致的 def max_pcr_power_rule(model, t): if t == 0: return 0 <= battery.P_bat_max-model.P_sc_max[t+1]-model.P_pcr else: return model.P_trade_c[t

团队

目前我正在研究一个非线性随机优化问题。到目前为止,工具箱真的很有用,谢谢!但是,添加非线性约束会导致错误。我使用古罗比解算器。该问题是由以下约束导致的

def max_pcr_power_rule(model, t):
    if t == 0:
        return 0 <= battery.P_bat_max-model.P_sc_max[t+1]-model.P_pcr
    else:       
        return model.P_trade_c[t+1] + np.sqrt(-2*np.log(rob_opt.max_vio)) \
        *sum(model.U_max_pow[t,i]**2 for i in set_sim.tme_dat_stp)**(0.5) \
        <= battery.P_bat_max-model.P_sc_max[t+1]-model.P_pcr
model.max_pcr_power = Constraint(set_sim.tme_dat_stp, rule=max_pcr_power_rule)
def最大功率规则(t型):
如果t==0:

返回0正如Erwin在评论中提到的,Gurobi通常不适用于非线性问题。

Gurobi只能处理线性问题(和一些二次问题)。ipopt误差与无法在零处计算pow函数的梯度有关。通常,这可以通过在相应的x变量上设置一个小的下限来解决。在您的例子中,您有一个表达式,所以引入一个新的变量和等式约束,以便可以应用此边界。