Fixed database typo and removed unnecessary class identifier.
This commit is contained in:
parent
00ad49a143
commit
45fb349a7d
5098 changed files with 952558 additions and 85 deletions
65
venv/Lib/site-packages/scipy/optimize/_trustregion_krylov.py
Normal file
65
venv/Lib/site-packages/scipy/optimize/_trustregion_krylov.py
Normal file
|
@ -0,0 +1,65 @@
|
|||
from ._trustregion import (_minimize_trust_region)
|
||||
from ._trlib import (get_trlib_quadratic_subproblem)
|
||||
|
||||
__all__ = ['_minimize_trust_krylov']
|
||||
|
||||
def _minimize_trust_krylov(fun, x0, args=(), jac=None, hess=None, hessp=None,
|
||||
inexact=True, **trust_region_options):
|
||||
"""
|
||||
Minimization of a scalar function of one or more variables using
|
||||
a nearly exact trust-region algorithm that only requires matrix
|
||||
vector products with the hessian matrix.
|
||||
|
||||
.. versionadded:: 1.0.0
|
||||
|
||||
Options
|
||||
-------
|
||||
inexact : bool, optional
|
||||
Accuracy to solve subproblems. If True requires less nonlinear
|
||||
iterations, but more vector products.
|
||||
"""
|
||||
|
||||
if jac is None:
|
||||
raise ValueError('Jacobian is required for trust region ',
|
||||
'exact minimization.')
|
||||
if hess is None and hessp is None:
|
||||
raise ValueError('Either the Hessian or the Hessian-vector product '
|
||||
'is required for Krylov trust-region minimization')
|
||||
|
||||
# tol_rel specifies the termination tolerance relative to the initial
|
||||
# gradient norm in the Krylov subspace iteration.
|
||||
|
||||
# - tol_rel_i specifies the tolerance for interior convergence.
|
||||
# - tol_rel_b specifies the tolerance for boundary convergence.
|
||||
# in nonlinear programming applications it is not necessary to solve
|
||||
# the boundary case as exact as the interior case.
|
||||
|
||||
# - setting tol_rel_i=-2 leads to a forcing sequence in the Krylov
|
||||
# subspace iteration leading to quadratic convergence if eventually
|
||||
# the trust region stays inactive.
|
||||
# - setting tol_rel_b=-3 leads to a forcing sequence in the Krylov
|
||||
# subspace iteration leading to superlinear convergence as long
|
||||
# as the iterates hit the trust region boundary.
|
||||
|
||||
# For details consult the documentation of trlib_krylov_min
|
||||
# in _trlib/trlib_krylov.h
|
||||
#
|
||||
# Optimality of this choice of parameters among a range of possibilities
|
||||
# has been tested on the unconstrained subset of the CUTEst library.
|
||||
|
||||
if inexact:
|
||||
return _minimize_trust_region(fun, x0, args=args, jac=jac,
|
||||
hess=hess, hessp=hessp,
|
||||
subproblem=get_trlib_quadratic_subproblem(
|
||||
tol_rel_i=-2.0, tol_rel_b=-3.0,
|
||||
disp=trust_region_options.get('disp', False)
|
||||
),
|
||||
**trust_region_options)
|
||||
else:
|
||||
return _minimize_trust_region(fun, x0, args=args, jac=jac,
|
||||
hess=hess, hessp=hessp,
|
||||
subproblem=get_trlib_quadratic_subproblem(
|
||||
tol_rel_i=1e-8, tol_rel_b=1e-6,
|
||||
disp=trust_region_options.get('disp', False)
|
||||
),
|
||||
**trust_region_options)
|
Loading…
Add table
Add a link
Reference in a new issue