我在 IPOPT (v3.12.10) 中遇到本地不可行错误。
Converged to a point of local infeasibility. Problem may be infeasible.
我还使用 APPT 求解器进行了尝试,m.options.SOLVER=1
并得到了类似的错误。
No feasible solution
这个问题有多个可行的解决方案,有两个方程和三个变量。这个问题的解决方案是平面与球体相交的地方。
from gekko import GEKKO
m = GEKKO()
x=m.Var(); y=m.Var(); z=m.Var()
m.Equations([x**2+y**2+z**2==1,x+z==y])
m.options.SOLVER = 3 # APOPT=1, IPOPT=3
m.solve(debug=0) # debug=0 doesn't stop when unsuccessful
print('Solution 1')
print(x.value[0],y.value[0],z.value[0])
当我添加一个目标函数来最大化z
时,IPOPT 会收敛到一个解决方案。
# add objective
m.Obj(-z) # maximize z
m.solve()
print('Solution 2')
print(x.value[0],y.value[0],z.value[0])
如何在不添加目标函数的情况下避免失败的解决方案?