【发布时间】:2019-12-10 14:22:30
【问题描述】:
我正在使用 this article 中定义的 Chebishev 优化在 Pyomo 中实现 Brachistochrone 问题。
问题的初始条件为 x(0)=y(0)=0。
但是,一旦我运行代码,我会收到以下错误
评估约束 1 时出错:无法评估 sqrt'(0)。
我已经把我的变量写成
def x_initialize (model,i):
return 0.5*(i/value(m.n))
m.x = Var(m.N, within = NonNegativeReals, initialize = x_initialize)
def y_initialize (model,i):
return 0.5*((i)/value(m.n))
m.y = Var(m.N, within = NonNegativeReals, initialize = y_initialize)
和
def f_x_definition(model, i):
return m.f_x[i] == sqrt(2*g*m.y[i])*cos(m.angle[i])
m.f_x_const = Constraint(m.N, rule = f_x_definition)
def f_y_definition(model, i):
return m.f_y[i] == sqrt(2*g*m.y[i])*sin(m.angle[i])
m.f_y_const = Constraint(m.N, rule = f_y_definition)
我尝试在 def x_initialize (model,i): 和 def y_initialize (model,i): 中添加一个小数来补偿,但随后程序返回了恢复失败错误。另一种尝试是使用 **(1/2) 代替 sqrt,但它也没有奏效。
我想不出任何其他解决方案来解决这个问题。
问候。
【问题讨论】:
标签: python optimization equation pyomo sqrt