Как указать параметр, для которого минимизируется целевая функция, используя scipy.optimize.minimize ()? - PullRequest
0 голосов
/ 24 апреля 2020

Предположим, у меня есть целевая функция f (a, b, c) . Я хочу найти значение b , которое минимизирует его, с постоянными a и c, и поэкспериментировать с различными комбинациями a и c, я предпочитаю не писать f (a, b, c) как g (b) .

from scipy.optimize import minimize

def f(a,b,c):
    return((a+1)**2 + b + c/2)

res = minimize(f, x0=1, args=(a,c,),)
print(res.x)

Тогда как мне указать, что b - это параметр, который f (a, b, c) должен быть минимизирован относительно? Этот параметр должен быть выражен как x ? Или я должен сделать b первым аргументом f ?

1 Ответ

1 голос
/ 24 апреля 2020

Как указано в документации , сигнатура функции должна быть fun(x, *args), где x - параметр, для которого свернуто значение. Таким образом, вы можете просто использовать небольшую оболочку вокруг своей первоначальной функции:

res = minimize(lambda b, a, c: f(a, b, c), x0=1, args=(a, c))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...