Page 162 - 6734
P. 162
y=input("Iteration %d x=%f y="%(i,x)) # вивести
`x` і ввести відповідне `y`
return y
argmin = fminbound(f, -1, 1) # знайти мінімум
print argmin
Iteration 1 x=-0.236068 y=0.055728
Iteration 2 x=0.236068 y=0.055728
Iteration 3 x=0.527864 y=0.278640
Iteration 4 x=-0.000000 y=0.000000
Iteration 5 x=0.000003 y=0.000000
Iteration 6 x=0.000007 y=0.000000
scipy.optimize.fmin_l_bfgs_b – оптимізація з границями методом
L-BFGS-B
Локальна оптимізація векторної функції (двох змінних)
популярним квазі-ньютонівським методом L-BFGS-B, який
призначений для нелінійних задач із великою кількістю невідомих
(http://en.wikipedia.org/wiki/Limited-memory_BFGS). Інтерфейсом
для оптимізації функції однієї або багатьох змінних різними
методами є minimize. У прикладі шукається мінімум функції
в межах значень [-5, 5] змінних і .
import numpy as np
from scipy.optimize import minimize, fmin_l_bfgs_b
def f(x): # функція двох змінних
return x[0]**2+x[1]**2
res=minimize(f, x0=[1.0, 1.0], method="L-BFGS-B",
bounds=[(-5,5),(-5,5)])
print res.x
argmin = fmin_l_bfgs_b(f, x0=[1.0, 1.0], bounds=[(-
5,5),(-5,5)], approx_grad=True) # або так
print argmin[0]
import matplotlib.pyplot as plt
161