#python #scipy-optimize #scipy-optimize-minimize
#python #ошибка значения #scipy-оптимизировать #scipy-оптимизировать-минимизировать
Вопрос:
Я прочитал документацию и попытался понять, как работать scipy.optimize.minimize()
, но я не могу.
from scipy.optimize import minimize
def f(x):
return x**2
x0 = [-2.0, -1.0, 0.0, 1.0, 2.0]
res = minimize(f, x0)
print(res.x)
Вывод: «Ошибка значения: целевая функция, предоставляемая пользователем, должна возвращать скалярное значение«.
Комментарии:
1. С какими частями этого сообщения об ошибке у вас проблемы? Ваша целевая функция на деле не возвращает скаляр. Например,
f(x0)=[4.0,1.0,0.0,1.0,2.0]
.
Ответ №1:
Я решил это: x0 должно быть числом или (1,) массивом
Ответ №2:
В вашем примере ваш начальный массив x0
в порядке. Ошибка значения вызвана тем, что целевая функция должна возвращать одно значение, а не список / массив значений. Вы можете суммировать его или использовать l2-norm
.
def f(x):
return sum(x**2)
res = minimize(f, x0)
print(res.x)
[-1.82818467e-08 8.41691947e-08 -1.86620236e-07 -8.41691948e-08
1.82818469e-08]