«Что означает эта ошибка и как ее исправить?»
Это означает, что решатель вместо того, чтобы сходиться к минимуму, предпринял шаги, которые переместили его вбольшие значения координат, где ваше полиномиальное выражение настолько велико, что оно выходит за пределы 64-битных чисел с плавающей запятой.
Если я исправлю формулу, чтобы она была действительной функцией Била, и если я использую начальную точку ближе кожидаемый результат, функция работает.Этот скрипт
from scipy.optimize import minimize
def beale(position):
x, y = position
return (1.5 - x + x*y)**2 + (2.25 - x + x*y**2)**2 + (2.625 - x + x*y**3)**2
x0 = [1.0, 1.0]
res = minimize(beale, x0, method="Nelder-Mead")
print(res)
производит вывод
final_simplex: (array([[3.00002489, 0.50000749],
[2.99993609, 0.49998427],
[3.00005157, 0.50000776]]), array([1.39263183e-10, 6.54120047e-10, 1.00978644e-09]))
fun: 1.392631830241483e-10
message: 'Optimization terminated successfully.'
nfev: 107
nit: 56
status: 0
success: True
x: array([3.00002489, 0.50000749])
Известное точное решение - (3, 0,5).