Ipopt Documentation  
 
Loading...
Searching...
No Matches
Ipopt::InexactPDSolver Class Reference

This is the implementation of the Primal-Dual System, allowing the usage of an inexact linear solver. More...

#include <IpInexactPDSolver.hpp>

+ Inheritance diagram for Ipopt::InexactPDSolver:

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

InexactDataInexData ()
 Method to easily access Inexact data.
 
InexactCqInexCq ()
 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.
 
InexactPDSolveroperator= (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< AugSystemSolveraugSysSolver_
 Pointer to the Solver for the augmented system.
 
SmartPtr< PDPerturbationHandlerperturbHandler_
 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 JournalistJnlst () const
 
IpoptNLPIpNLP () const
 
IpoptDataIpData () const
 
IpoptCalculatedQuantitiesIpCq () const
 
bool HaveIpData () const
 

Detailed Description

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.

Constructor & Destructor Documentation

◆ InexactPDSolver() [1/2]

Ipopt::InexactPDSolver::InexactPDSolver ( AugSystemSolver augSysSolver,
PDPerturbationHandler perturbHandler 
)

Constructor that takes in the Augmented System solver that is to be used inside.

◆ ~InexactPDSolver()

virtual Ipopt::InexactPDSolver::~InexactPDSolver ( )
virtual

Destructor.

◆ InexactPDSolver() [2/2]

Ipopt::InexactPDSolver::InexactPDSolver ( )
private

Default Constructor.

Member Function Documentation

◆ InitializeImpl()

bool Ipopt::InexactPDSolver::InitializeImpl ( const OptionsList options,
const std::string &  prefix 
)
virtual

Implementation of the initialization method that has to be overloaded by for each derived class.

Implements Ipopt::AlgorithmStrategyObject.

◆ Solve()

virtual bool Ipopt::InexactPDSolver::Solve ( const IteratesVector rhs,
IteratesVector sol 
)
virtual

Solve the primal dual system, given one right hand side.

◆ RegisterOptions()

static void Ipopt::InexactPDSolver::RegisterOptions ( SmartPtr< RegisteredOptions roptions)
static

◆ operator=()

InexactPDSolver & Ipopt::InexactPDSolver::operator= ( const InexactPDSolver )
private

Overloaded Assignment Operator.

◆ InexData()

InexactData & Ipopt::InexactPDSolver::InexData ( )
inlineprivate

Method to easily access Inexact data.

Definition at line 76 of file IpInexactPDSolver.hpp.

◆ InexCq()

InexactCq & Ipopt::InexactPDSolver::InexCq ( )
inlineprivate

Method to easily access Inexact calculated quantities.

Definition at line 84 of file IpInexactPDSolver.hpp.

◆ ComputeResiduals()

void Ipopt::InexactPDSolver::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 
)
private

Internal function for computing the residual (resid) given the right hand side (rhs) and the solution of the system (res).

◆ HessianRequiresChange()

bool Ipopt::InexactPDSolver::HessianRequiresChange ( )
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.

Member Data Documentation

◆ augSysSolver_

SmartPtr<AugSystemSolver> Ipopt::InexactPDSolver::augSysSolver_
private

Pointer to the Solver for the augmented system.

Definition at line 94 of file IpInexactPDSolver.hpp.

◆ perturbHandler_

SmartPtr<PDPerturbationHandler> Ipopt::InexactPDSolver::perturbHandler_
private

Pointer to the Perturbation Handler.

Definition at line 96 of file IpInexactPDSolver.hpp.

◆ tcc_psi_

Number Ipopt::InexactPDSolver::tcc_psi_
private

Psi factor in the tangential component condition.

Definition at line 128 of file IpInexactPDSolver.hpp.

◆ tcc_theta_

Number Ipopt::InexactPDSolver::tcc_theta_
private

theta factor in the tangential component condition

Definition at line 130 of file IpInexactPDSolver.hpp.

◆ tcc_theta_mu_exponent_

Number Ipopt::InexactPDSolver::tcc_theta_mu_exponent_
private

mu exponent when multiplied to theta in the tangential component condition

Definition at line 133 of file IpInexactPDSolver.hpp.

◆ modify_hessian_with_slacks_

bool Ipopt::InexactPDSolver::modify_hessian_with_slacks_
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.

◆ inexact_regularization_ls_count_trigger_

Index Ipopt::InexactPDSolver::inexact_regularization_ls_count_trigger_
private

Threshold on line search evaluation count to trigger Hessian modification.

Definition at line 141 of file IpInexactPDSolver.hpp.

◆ is_pardiso_

bool Ipopt::InexactPDSolver::is_pardiso_
private

flag indicating if we are dealing with the Pardiso solver (temporary)

Definition at line 147 of file IpInexactPDSolver.hpp.

◆ last_info_ls_count_

Index Ipopt::InexactPDSolver::last_info_ls_count_
private

Definition at line 149 of file IpInexactPDSolver.hpp.


The documentation for this class was generated from the following file: