steihaug(func=None,
dfunc=None,
d2func=None,
args=( ) ,
x0=None,
func_tol=1e-25,
grad_tol=None,
maxiter=1000000.0,
epsilon=1e-08,
delta_max=100000.0,
delta0=1.0,
eta=0.2,
full_output=0,
print_flag=0,
print_prefix='
' )
| source code
|
Steihaug conjugate-gradient trust region algorithm.
Page 75 from 'Numerical Optimization' by Jorge Nocedal and Stephen J.
Wright, 1999, 2nd ed. The CG-Steihaug algorithm is:
-
epsilon > 0
-
p0 = 0, r0 = g, d0 = -r0
-
if ||r0|| < epsilon:
-
while 1:
-
if djT.B.dj <= 0:
-
Find tau such that p = pj + tau.dj minimises m(p) in (4.9)
and satisfies ||p|| = delta
-
return p
-
aj = rjT.rj / djT.B.dj
-
pj+1 = pj + aj.dj
-
if ||pj+1|| >= delta:
-
Find tau such that p = pj + tau.dj satisfies ||p|| = delta
-
return p
-
rj+1 = rj + aj.B.dj
-
if ||rj+1|| < epsilon.||r0||:
-
bj+1 = rj+1T.rj+1 / rjT.rj
-
dj+1 = rj+1 + bj+1.dj
|