我想用Pyomo来解决一个非线性优化问题。在这方面,我在代码中设计了一个函数作为目标函数,它本身在代码中使用了另一个函数。内部函数是非线性分段函数,定义如下
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
但此函数会导致此错误:
TypeError: '<=' not supported between instances of 'IndexedComponent_slice' and 'numpy.float64'
考虑到我的决策变量在x(IndexedComponent_slice)类型中,而omega和U_alpha3是固定参数(即'numpy.float64'类型)
对。Ipopt的Pyomo-NL-file接口通过Expr_If表达式类支持这一点,因为您定义的函数有两次连续可微等标准警告(我们不为您验证)
相关问题 更多 >
编程相关推荐