как использовать scipy.optimize.minimize с функцией, которая имеет много входных переменных, только некоторые из которых требуют оценки - PullRequest
0 голосов
/ 04 марта 2020

Предположим, у меня есть следующие две функции

def f(a,b,c,d):
    return a*b*c-d

def obj(arguments, k):
    """objective function, to be solved."""
    x, arg_1, arg_2 = arguments[0], arguments[1], arguments[2] 
    v_3 = f(x, arg_1, arg_2, k)
    return abs(x-v_3)

Где вы можете без проблем выполнить следующее:

x0 = 1
initial_guess = [1,1,1]  # initial guess can be anything

obj(initial_guess, 2)

Как вы можете видеть, функция Objective содержит переменную, которая делает не нужно оптимизировать, который определен как 2, но я мог бы изменить его на 3 и т. д.

Когда я запускаю следующий код

result = minimize(obj, initial_guess)

Я получаю законную ошибку, которая это:

TypeError: obj() missing 1 required positional argument: 'k'

Я пытался это

result = minimize(obj, (initial_guess,2))

Но снова я получаю ту же ошибку

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