9 #ifndef __IPINEXACTPDSOLVER_HPP__
10 #define __IPINEXACTPDSOLVER_HPP__
41 const std::string& prefix);
This is the base class for all algorithm strategy objects.
IpoptData & IpData() const
IpoptCalculatedQuantities & IpCq() const
Base class for Solver for the augmented system.
Class for all Chen-Goldfarb penalty method specific calculated quantities.
Class to organize all the additional data required by the Chen-Goldfarb penalty function algorithm.
This is the implemetation of the Primal-Dual System, allowing the usage of an inexact linear solver.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for IpoptType.
InexactPDSolver()
Default Constructor.
InexactData & InexData()
Method to easily access Inexact data.
SmartPtr< AugSystemSolver > augSysSolver_
Pointer to the Solver for the augmented system.
SmartPtr< PDPerturbationHandler > perturbHandler_
Pointer to the Perturbation Handler.
bool is_pardiso_
flag indicating if we are dealing with the Pardiso solver (temporary)
Number tcc_psi_
Psi factor in the tangential component condition.
InexactPDSolver & operator=(const InexactPDSolver &)
Overloaded Equals Operator.
virtual ~InexactPDSolver()
Default destructor.
Index inexact_regularization_ls_count_trigger_
Threshold on line search evaluation count to trigger Hessia modification.
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...
bool modify_hessian_with_slacks_
flag indicating if the Hessian for the (s,s) part should be modified with the slacks instead of the i...
InexactCq & InexCq()
Method to easily access Inexact calculated quantities.
InexactPDSolver(AugSystemSolver &augSysSolver, PDPerturbationHandler &perturbHandler)
Constructor that takes in the Augmented System solver that is to be used inside.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class.
Index last_info_ls_count_
Number tcc_theta_
theta factor in the tangential component condition
bool HessianRequiresChange()
Method for checking if the Hessian matrix has to be modified.
virtual bool Solve(const IteratesVector &rhs, IteratesVector &sol)
Solve the primal dual system, given one right hand side.
Number tcc_theta_mu_exponent_
mu exponent when multiplied to theta in the tangential component condition
IpoptAdditionalCq & AdditionalCq()
IpoptAdditionalData & AdditionalData()
Get access to additional data object.
Specialized CompoundVector class specifically for the algorithm iterates.
This class stores a list of user set options.
Class for handling the perturbation factors delta_x, delta_s, delta_c, and delta_d in the primal dual...
Template class for Smart Pointers.
This is the base class for all derived symmetric matrix types.
int Index
Type of all indices of vectors, matrices etc.
double Number
Type of all numbers.