Solver Options

In addition to specifying a solution algorithm, solver behavior can be adjusted by passing the relevant keyword arguments to init or solve.

Trust Region Methods

NonlinearSystems.HybridType
Hybrid{P} <: AbstractAlgorithm{P}

A modified version of Powell's hybrid method (a trust region method with dogleg). The essentially same algorithm can solve both root-finding problems and least-squares problem. To indicate the problem type, set either RootFinding or LeastSquares as type parameter. For keyword arguments accepted by init and solve when using this algorithm, see HybridSolver.

References

  • Moré, Jorge J., Danny C. Sorenson, Burton S. Garbow, and Kenneth E. Hillstrom. 1984. "The MINPACK Project." In Sources and Development of Mathematical Software, ed. Wayne R. Cowell, 88-111. New Jersey: Prentice-Hall.
  • Nocedal, Jorge, and Stephen J. Wright. 2006. Numerical Optimization. 2nd ed. New York: Springer.
  • Powell, Michael J. D. 1970. "A Hybrid Method for Nonlinear Equations." In Numerical Methods for Nonlinear Algebraic Equations, ed. Philip Rabinowitz, 87-114. London: Gordon and Breach.
source
NonlinearSystems.HybridSolverType
HybridSolver(fdf::OnceDifferentiable, x, fx, J, P; kwargs...)

Construct HybridSolver for solving a problem of type P with Hybrid method. Users are not expected to call this method directly but should pass keyword arguments to init or solve instead. See also Hybrid.

Keywords

  • linsolver=default_linsolver(fdf, x0, P): solver for the underlying linear problems.
  • factor_init::Real=1.0: a factor for scaling the initial trust region radius.
  • factor_up::Real=2.0: a factor for expanding the trust region radius.
  • factor_down::Real=0.5: a factor for shrinking the trust region radius.
  • scaling::Bool=true: allow improving the scaling of trust region.
  • rank1update::Bool=true: allow using rank-1 update for the Jacobian matrix and factorization.
  • thres_jac::Integer=2: recompute the Jacobian matrix if the trust region is shrinked consecutively by the specified number of times; setting a non-positive value results in recomputing the Jacobian matrix after each step.
  • thres_nslow1::Integer=10: signal slow solver progress if the reduction in residual norm remains small for the specified number of consecutive steps.
  • thres_nslow2::Integer=5: signal slow solver progress if there is no expansion of trust region after recomputing the Jacobian matrix in the specified number of consecutive steps.
  • warn::Bool=true: print a warning message for slow solver progress
source

Linear Solvers for Subproblems

Documentation for specifying the linear solvers will be added in future.