pymor.algorithms.tr
¶
Module Contents¶
- class pymor.algorithms.tr.BasicTRSurrogate(reductor, initial_guess, name=None)[source]¶
Bases:
TRSurrogate
Surrogate for
trust_region
only enriching with the primal solution.- Parameters:
reductor – The reductor used to generate the reduced order models and estimate the output error.
initial_guess – The
parameter values
containing an initial guess for the optimal parameter value.
Methods
Extend the current ROM for new
parameter values
.- extend(mu)[source]¶
Extend the current ROM for new
parameter values
.- Parameters:
mu – The
Mu
instance for which an extension is computed.
- class pymor.algorithms.tr.PrimalDualTRSurrogate(reductor, initial_guess, name=None)[source]¶
Bases:
TRSurrogate
Surrogate for
trust_region
enriching with both the primal and dual solutions.- Parameters:
reductor – The reductor used to generate the reduced order models and estimate the output error.
initial_guess – The
parameter values
containing an initial guess for the optimal parameter value.
Methods
Extend the current ROM for new
parameter values
with primal and dual solutions.- extend(mu)[source]¶
Extend the current ROM for new
parameter values
with primal and dual solutions.- Parameters:
mu – The
Mu
instance for which an extension is computed.
- class pymor.algorithms.tr.QuadraticOutputTRSurrogate(reductor, initial_guess, continuity_estimator_output, product_name=None)[source]¶
Bases:
BasicTRSurrogate
Surrogate for
trust_region
with only the primal enrichment naive output estimate.Note
This specialized TRSurrogate should soon be made obsolete when the quadratic output estimation is included into a reductor.
- Parameters:
reductor – The reductor used to generate the reduced order models and estimate the output error.
initial_guess – The
parameter values
containing an initial guess for the optimal parameter value.continuity_estimator_output – Estimation for the continuity constant of the quadratic output functional.
product_name – Name of the inner-product
Operator
of the ROM w.r.t. which the continuity constant for the output is estimated.
Methods
- class pymor.algorithms.tr.TRSurrogate(reductor, initial_guess, name=None)[source]¶
Bases:
pymor.core.base.BasicObject
Base class for
trust_region
surrogates.Not to be used directly.
Methods
Accept the new ROM.
Reject the new ROM.
- pymor.algorithms.tr.coercive_rb_trust_region(reductor, primal_dual=False, parameter_space=None, initial_guess=None, beta=0.95, radius=0.1, shrink_factor=0.5, miniter=0, maxiter=30, miniter_subproblem=0, maxiter_subproblem=400, tol_criticality=1e-06, radius_tol=0.75, rtol_output=1e-16, rtol_mu=1e-16, tol_sub=1e-08, armijo_alpha=0.0001, line_search_params=None, stagnation_window=3, stagnation_threshold=np.inf, quadratic_output=False, quadratic_output_continuity_estimator=None, quadratic_output_product_name=None)[source]¶
Error aware trust-region method for a coercive RB model as surrogate.
See
trust_region
.- Parameters:
reductor – The reductor used to generate the reduced order models and estimate the output error.
primal_dual – If
False
, only enrich with the primal solution. IfTrue
, additionally enrich with the dual solutions.quadratic_output – Set to
True
if output is given by a quadratic functional.quadratic_output_continuity_estimator – In case of a quadratic output functional, a
ParameterFunctional
giving an upper bound for the norm of the corresponding bilinear form.quadratic_output_product_name – In case of a quadratic output functional, the name of the inner-product
Operator
of the ROM w.r.t. which the continuity constant for the output is estimated.
- pymor.algorithms.tr.trust_region(fom, surrogate, parameter_space=None, initial_guess=None, beta=0.95, radius=0.1, shrink_factor=0.5, miniter=0, maxiter=30, miniter_subproblem=0, maxiter_subproblem=400, tol_criticality=1e-06, radius_tol=0.75, rtol_output=1e-16, rtol_mu=1e-16, tol_sub=1e-08, armijo_alpha=0.0001, line_search_params=None, stagnation_window=3, stagnation_threshold=np.inf)[source]¶
Error-aware trust region algorithm.
This method solves the optimization problem
min J(mu), mu in C
for a model with an output \(J\) depending on a box-constrained
mu
using an adaptive trust region method.The main idea for the algorithm can be found in [YM13], and an application to box-constrained parameters with possible enlarging of the trust radius in [KMO+21].
This method contrasts itself from
scipy.optimize.minimize
in the computation of the trust region:scipy
TR implementations use a metric distance, whereas this function uses an error estimator obtained from the surrogate. Additionally, the cheap model function surrogate here is only updated for each outer iteration, not entirely reconstructed.- Parameters:
fom – The
Model
with outputJ
used for the optimization.surrogate – The
TRSurrogate
used to generate the surrogate model and estimate the output error.parameter_space – If not
None
, theParameterSpace
for enforcing the box constraints on theparameter values
mu
. Otherwise aParameterSpace
with lower bound -1 and upper bound 1 is used.initial_guess – If not
None
,parameter values
containing an initial guess for the solutionmu
. Otherwise, randomparameter values
from theparameter_space
are chosen as the initial value.beta – The factor used to check if the current
parameter values
are close to the trust region boundary.radius – The radius of the initial trust region.
shrink_factor – The factor by which the trust region is shrunk. If the trust region radius is increased, it is increased by
1. / shrink_factor
.miniter – Minimum amount of iterations to perform.
maxiter – Fail if the iteration count reaches this value without converging.
miniter_subproblem – Minimum amount of iterations to perform in the BFGS subproblem.
maxiter_subproblem – Fail the BFGS subproblem if the iteration count reaches this value without converging.
tol_criticality – Finish when the current
parameter values
fulfill the approximate first order critical optimality condition with a value below this threshold.radius_tol – Threshold for increasing the trust region radius upon extending the reduced order model.
rtol_output – See
rtol_output
oferror_aware_bfgs
.rtol_mu – See
rtol_mu
oferror_aware_bfgs
.tol_sub – See
tol_sub
oferror_aware_bfgs
.armijo_alpha – Threshold for the constrained Armijo condition. See
constrained_armijo
.line_search_params – Dictionary of additional parameters passed to the Armijo line search method.
stagnation_window – Finish when the parameter update has not been enlarged by a factor of
stagnation_threshold
during the laststagnation_window
iterations.stagnation_threshold – See
stagnation_window
.
- Returns:
mu –
NumPy array
containing the computed optimalparameter values
.data – Dict containing additional information of the optimization call.
- Raises:
TRError – Raised if the TR algorithm failed to converge.