This is the implementation of the Primal-Dual System, allowing the usage of an inexact linear solver. More...
#include <IpInexactPDSolver.hpp>
Public Member Functions | |
bool | InitializeImpl (const OptionsList &options, const std::string &prefix) |
Implementation of the initialization method that has to be overloaded by for each derived class. | |
virtual bool | Solve (const IteratesVector &rhs, IteratesVector &sol) |
Solve the primal dual system, given one right hand side. | |
Constructor/Destructor | |
InexactPDSolver (AugSystemSolver &augSysSolver, PDPerturbationHandler &perturbHandler) | |
Constructor that takes in the Augmented System solver that is to be used inside. | |
virtual | ~InexactPDSolver () |
Destructor. | |
Public Member Functions inherited from Ipopt::AlgorithmStrategyObject | |
bool | Initialize (const Journalist &jnlst, IpoptNLP &ip_nlp, IpoptData &ip_data, IpoptCalculatedQuantities &ip_cq, const OptionsList &options, const std::string &prefix) |
This method is called every time the algorithm starts again - it is used to reset any internal state. | |
bool | ReducedInitialize (const Journalist &jnlst, const OptionsList &options, const std::string &prefix) |
Reduced version of the Initialize method, which does not require special Ipopt information. | |
AlgorithmStrategyObject () | |
Default Constructor. | |
virtual | ~AlgorithmStrategyObject () |
Destructor. | |
Public Member Functions inherited from Ipopt::ReferencedObject | |
ReferencedObject () | |
virtual | ~ReferencedObject () |
Index | ReferenceCount () const |
void | AddRef (const Referencer *referencer) const |
void | ReleaseRef (const Referencer *referencer) const |
Static Public Member Functions | |
static void | RegisterOptions (SmartPtr< RegisteredOptions > roptions) |
Private Member Functions | |
InexactData & | InexData () |
Method to easily access Inexact data. | |
InexactCq & | InexCq () |
Method to easily access Inexact calculated quantities. | |
void | ComputeResiduals (const SymMatrix &W, const Matrix &J_c, const Matrix &J_d, const Matrix &Pd_L, const Matrix &Pd_U, const Vector &v_L, const Vector &v_U, const Vector &slack_s_L, const Vector &slack_s_U, const Vector &sigma_s, const IteratesVector &rhs, const IteratesVector &res, IteratesVector &resid) |
Internal function for computing the residual (resid) given the right hand side (rhs) and the solution of the system (res). | |
bool | HessianRequiresChange () |
Method for checking if the Hessian matrix has to be modified. | |
Default Compiler Generated Methods | |
(Hidden to avoid implicit creation/calling). These methods are not implemented and we do not want the compiler to implement them for us, so we declare them private and do not define them. This ensures that they will not be implicitly created/called. | |
InexactPDSolver () | |
Default Constructor. | |
InexactPDSolver & | operator= (const InexactPDSolver &) |
Overloaded Assignment Operator. | |
Private Attributes | |
bool | is_pardiso_ |
flag indicating if we are dealing with the Pardiso solver (temporary) | |
Index | last_info_ls_count_ |
Strategy objects to hold on to. | |
SmartPtr< AugSystemSolver > | augSysSolver_ |
Pointer to the Solver for the augmented system. | |
SmartPtr< PDPerturbationHandler > | perturbHandler_ |
Pointer to the Perturbation Handler. | |
Algorithmic options | |
Number | tcc_psi_ |
Psi factor in the tangential component condition. | |
Number | tcc_theta_ |
theta factor in the tangential component condition | |
Number | tcc_theta_mu_exponent_ |
mu exponent when multiplied to theta in the tangential component condition | |
bool | modify_hessian_with_slacks_ |
flag indicating if the Hessian for the (s,s) part should be modified with the slacks instead of the identity matrix | |
Index | inexact_regularization_ls_count_trigger_ |
Threshold on line search evaluation count to trigger Hessian modification. | |
Additional Inherited Members | |
Protected Member Functions inherited from Ipopt::AlgorithmStrategyObject | |
const Journalist & | Jnlst () const |
IpoptNLP & | IpNLP () const |
IpoptData & | IpData () const |
IpoptCalculatedQuantities & | IpCq () const |
bool | HaveIpData () const |
This is the implementation of the Primal-Dual System, allowing the usage of an inexact linear solver.
The step computed is usually for the tangential step.
Definition at line 23 of file IpInexactPDSolver.hpp.
Ipopt::InexactPDSolver::InexactPDSolver | ( | AugSystemSolver & | augSysSolver, |
PDPerturbationHandler & | perturbHandler | ||
) |
Constructor that takes in the Augmented System solver that is to be used inside.
|
virtual |
Destructor.
|
private |
Default Constructor.
|
virtual |
Implementation of the initialization method that has to be overloaded by for each derived class.
Implements Ipopt::AlgorithmStrategyObject.
|
virtual |
Solve the primal dual system, given one right hand side.
|
static |
|
private |
Overloaded Assignment Operator.
|
inlineprivate |
Method to easily access Inexact data.
Definition at line 76 of file IpInexactPDSolver.hpp.
|
inlineprivate |
Method to easily access Inexact calculated quantities.
Definition at line 84 of file IpInexactPDSolver.hpp.
|
private |
Internal function for computing the residual (resid) given the right hand side (rhs) and the solution of the system (res).
|
private |
Method for checking if the Hessian matrix has to be modified.
All required data is obtained from the Data objects, so those values have to be set before this is called.
|
private |
Pointer to the Solver for the augmented system.
Definition at line 94 of file IpInexactPDSolver.hpp.
|
private |
Pointer to the Perturbation Handler.
Definition at line 96 of file IpInexactPDSolver.hpp.
|
private |
Psi factor in the tangential component condition.
Definition at line 128 of file IpInexactPDSolver.hpp.
|
private |
theta factor in the tangential component condition
Definition at line 130 of file IpInexactPDSolver.hpp.
|
private |
mu exponent when multiplied to theta in the tangential component condition
Definition at line 133 of file IpInexactPDSolver.hpp.
|
private |
flag indicating if the Hessian for the (s,s) part should be modified with the slacks instead of the identity matrix
Definition at line 137 of file IpInexactPDSolver.hpp.
|
private |
Threshold on line search evaluation count to trigger Hessian modification.
Definition at line 141 of file IpInexactPDSolver.hpp.
|
private |
flag indicating if we are dealing with the Pardiso solver (temporary)
Definition at line 147 of file IpInexactPDSolver.hpp.
|
private |
Definition at line 149 of file IpInexactPDSolver.hpp.