Я получаю очень странные результаты при запуске функции минимизации от scipy optimize.
Вот код
from scipy.optimize import minimize
def objective(x):
return - (0.05 * x[0] ** 0.64 + 0.4 * x[1] ** 0.36)
def constraint(x):
return x[0] + x[1] - 5000
cons = [{'type':'eq', 'fun': constraint}]
при работе
minimize(objective, [2500.0, 2500.0], method='SLSQP', constraints=cons)
я получаю распределение 2500
для каждого элемента x.
с fun: -14.164036415985395
При быстрой проверке это распределение [3800, 1200]
дает -14.9
Он также очень чувствителен к начальным условиям.
Любые мысли о том, что я делаю неправильно
две функции нанесено
UPDATE
Это на самом деле возвращает начальные условия.
Если я попробую это, хотя
def objective(x):
return - (x[0] ** 0.64 + x[1] ** 0.36)
def constraint(x):
return x[0] + x[1] - 5000.0
cons = [{'type':'eq', 'fun': constraint}]
minimize(objective, [2500, 2500], method='SLSQP', constraints=cons)
возвращенные результаты кажутся просто отличными (я изменил целевую функцию)