scipy.optimize минимизировать противоречивые результаты - PullRequest
4 голосов
/ 22 апреля 2019

Я получаю очень странные результаты при запуске функции минимизации от 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)

возвращенные результаты кажутся просто отличными (я изменил целевую функцию)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...