Я хочу минимизировать следующее уравнение, изменив параметры B0, B1, B2, B3, T1, T2. Переменная y просто еще одна переменная для вычисления целевой функции. Мне просто нужна помощь, чтобы свести к минимуму эту функцию (используемую в качестве целевой функции), изменив параметры, но я не могу получить результаты. Я пробовал использовать scipy, но параметры не менял. Запустив функцию, я получаю желаемый результат:
funcion_opt(B0, B1, B2, B3, T1, T2)
output: 64.30571361326217
Но когда делаю минимизацию, получаю следующий результат:
res = optimize.minimize(funcion_opt, parameters, args=(beta0, beta1, beta2,
beta3, tau1, tau2))
output: funcion_opt() takes 6 positional arguments but 7 were given
Я знаю, что ошибка - это способ ввести параметры, и здесь мне нужна помощь. Извините, если это недостаточно ясно.
Небольшой пример моей проблемы:
y = np.array([98.494500, 97.828500, 97.610000, 97.314000, 97.014500,
92.959000, 96.696222])
def objective(b0, b1, b2, b3, t1, t2):
return (y * b0 + b1) - ( y * b2 + b3) + t1 + t2
x0 = np.array([0.03, -0.03, 0, 0, 1, 1]) #Initial values of b0, b1...
result = minimize(objective, x0, args=(b0, b1, b2, b3, t1, t2))
Я знаю, что входные данные в функции неправильные, переменные, которые являются постоянными, - это y, и я хочу изменить значения параметров b0, b1, b2, b3, t1, t2. Итак, функция минимизации, которая мне нужна, - это та, которая принимает возврат функции и, настраивая параметры, минимизирует ошибку. Так что, возможно, ошибка заключается в установке целевой функции.
Это фиктивная функция, исходная - это сумма квадратов ошибок. После этого мне нужно минимизировать функцию tat, изменив значения параметров внутри возвращаемого значения b0, b1, b2, b3, t1, t2, потому что в функции эти параметры установлены как. Коэффициент скидки не имеет значения, мне просто нужно изменить параметры на те, которые минимизируют целевую функцию:
Когда я пытаюсь свести к минимуму, получаю вывод, что ошибка такая же, а параметры не изменились. Мы будем очень благодарны за любую помощь в этом. Заранее спасибо.
def objective(b0, b1, b2, b3, t1, t2, y): return (((np.exp(b0 + (b1 + b2) * (1 - np.exp(-x/t1)) * t1/x - b2 * np.exp(-x/t1) + b3 * (1 - np.exp(-x/t2)) * t2 / x - b3 * np.exp(-x / t2)) -1) - y) ** 2).sum() x0 = np.array([0.03, -0.03, 0, 0, 1, 1]) #Initial values of b0, b1... result = optimize.minimize(objective, x0, args=(y)) TypeError: objective() missing 5 required positional arguments: 'b2', 'b3', 't1', 't2', and 'y'
x - это переменная, установленная перед функцией @Jan Spurny. Думаю проблема в том, чтобы связать значения x0 с параметрами функции 16.10.2018