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)

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

0 ответов

Другие вопросы по тегам