Я получаю локальную ошибку неосуществимости в IPOPT (v3.12.10).
Converged to a point of local infeasibility. Problem may be infeasible.
Я также пробовал ее с помощью решателя APOPT, используя 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])
Как можноИзбежать неудачного решения без добавления целевой функции?