scipy.optimize минимизировать противоречивые результаты
Я получаю очень странные результаты при запуске функции минимизации от 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
для каждого элемента х. с fun: -14.164036415985395
С быстрой проверкой, это распределение [3800, 1200]
дает -14.9
Он также очень чувствителен к начальным условиям.
Любые мысли о том, что я делаю неправильно
две функции изображены
ОБНОВЛЕНИЕ Это фактически возвращает начальные условия.
Если я попробую это хотя
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)
возвращенные результаты, кажется, просто отлично (я изменил целевую функцию)