gemseo.mda.quasi_newton module#

A set of quasi Newton algorithm variants for solving MDAs.

quasi-Newton methods

class MDAQuasiNewton(disciplines, settings_model=None, **settings)[source]#

Bases: BaseParallelMDASolver

Quasi-Newton solver for MDA.

Quasi-Newton methods include numerous variants ( Broyden, Levenberg-Marquardt <https://en.wikipedia.org/wiki/Levenberg-Marquardt_algorithm> __, ...).

The name of the variant should be provided via the method parameter of the class.

The new iterate is given by:

\[\begin{split}x_{k+1} = x_k - \\rho_k B_k f(x_k)\end{split}\]

where \(\\rho_k\) is a coefficient chosen in order to minimize the convergence and \(B_k\) is an approximation of \(Df(x_k)^{-1}\), the inverse of the Jacobian of \(f\) at \(x_k\).

Initialize self. See help(type(self)) for accurate signature.

Parameters:
  • disciplines (Sequence[Discipline]) -- The disciplines from which to compute the MDA.

  • settings_model (MDAQuasiNewton_Settings | None) -- The MDA settings as a Pydantic model. If None, use **settings.

  • **settings (Any) -- The MDA settings. These arguments are ignored when settings_model is not None.

Raises:

ValueError -- If the method is not a valid quasi-Newton method.

Settings#

The pydantic model for the settings.

alias of MDAQuasiNewton_Settings

settings: MDAQuasiNewton_Settings#

The settings of the MDA