![](/img/trans.png)
[英]How to write a multi-conditional nonlinear piecewise function as the objective function in Pyomo?
[英]is it possible to write a nonlinear piecewise function inside the objective function in Pyomo?
我想使用 Pyomo 来解决使用 Ipopt 的非线性优化。 在这方面,我在我的代码中设计了一个 function 作为目标 function,它本身在其中使用了另一个 function。 内部 function 是非线性和分段的,定义如下。
def U3(x,omega,U_alpha3):
if x<=omega/U_alpha3:
return omega*x-U_alpha3/2*x**2
else:
return 0.5*omega**2/U_alpha3
但是这个 function 导致这个错误:
TypeError: '<=' not supported between instances of 'IndexedComponent_slice' and 'numpy.float64'
考虑到我的决策变量在 x 内部(它是“IndexedComponent_slice”类型)并且 omega 和 U_alpha3 是固定参数(它们是“numpy.float64”类型)
是的。 Ipopt 的 Pyomo NL 文件接口通过Expr_If表达式 class 支持这一点,考虑到关于 function 的标准警告,您定义的是两次连续可微分等(我们不会为您验证)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.