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变量上设置一个小的下限来解决。在您的例子中,您有一个表达式,所以引入一个新的变量和等式约束,以便可以应用此边界。