我正在尝试针对给定任务优化电机选择,即双摆摆动,似乎 ipopt 无法解决问题,因为它无法识别
我试图实现 math.pow() 但这样做
代码:
from math import pow
def _epsilon_max(M,n):
return M.epsilon_max[n]* pow(M.ratio_motor[n],0.8) -1== 0
m.epsilon_max_cons = Constraint(m.dofs,rule=_epsilon_max)
输出:
TypeError:Pyomo NumericValue 类型“ratio_motor[1]”到浮点数的隐式转换被禁用。此错误通常是在定义表达式时使用 Pyomo 组件作为 Python 内置数学模块函数之一的参数的结果。通过使用 Pyomo 提供的数学函数来避免这个错误。
而不是使用已实现的pow
函数,它仅适用于整数
代码:
def _epsilon_max(M,n):
return M.epsilon_max[n]*(M.ratio_motor[n])**0.8 -1== 0
m.epsilon_max_cons = Constraint(m.dofs,rule=_epsilon_max)
输出:
Ipopt 3.12.11:评估约束 1011 时出错:无法评估 pow'(0,0.8)。