scipy.optimize.minimize создает решение, которое не удовлетворяет ограничениям, но в отчете говорится, что оптимизация успешно завершена.
Цель: (x [0] - 3) ** 2 + (x [1] - 2) ** 2
Ограничение: x [0] + x [1]<= 4 </p>
Правильное решение должно быть [2,5, 1,5]
Ответ от функции [3,2]
Я пробовал разные методы оптимизации.Пробовал без методов.Пробовал вариации по синтаксису.
Вот код (кажется, что он очень простой):
import numpy as np
from scipy import optimize
def f(x):
return (x[0] - 3)**2 + (x[1] - 2)**2
def con(x):
return sum(x)-4
x0 = np.array([0, 0])
res=optimize.minimize(f, x0, method="SLSQP",constraints={"fun": con, "type": "ineq"}, options={'disp':True})
print(res)
print(sum(res.x)-4)