Ipopt 3.12.10

- Main Page
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpInexactPDSolver.hpp
Go to the documentation of this file.
1 // Copyright (C) 2008 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpInexactPDSolver.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Andreas Waechter IBM 2008-09-09
8
9 #ifndef __IPINEXACTPDSOLVER_HPP__
10 #define __IPINEXACTPDSOLVER_HPP__
11
12 #include "IpAlgStrategy.hpp"
13 #include "IpAugSystemSolver.hpp"
14 #include "IpPDPerturbationHandler.hpp"
15 #include "IpInexactCq.hpp"
16
17 namespace Ipopt
18 {
19
24 class InexactPDSolver: public AlgorithmStrategyObject
25 {
26 public:
32 InexactPDSolver(AugSystemSolver& augSysSolver,
33 PDPerturbationHandler& perturbHandler);
34
36 virtual ~InexactPDSolver();
38
39 /* overloaded from AlgorithmStrategyObject */
40 bool InitializeImpl(const OptionsList& options,
41 const std::string& prefix);
42
45 virtual bool Solve(const IteratesVector& rhs,
46 IteratesVector& sol);
47
50 static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
52
53 private:
63 InexactPDSolver();
65 InexactPDSolver& operator=(const InexactPDSolver&);
67
69 InexactData& InexData()
70 {
71 InexactData& inexact_data =
72 static_cast<InexactData&>(IpData().AdditionalData());
73 DBG_ASSERT(dynamic_cast<InexactData*>(&IpData().AdditionalData()));
74 return inexact_data;
75 }
76
78 InexactCq& InexCq()
79 {
80 InexactCq& inexact_cq =
81 static_cast<InexactCq&>(IpCq().AdditionalCq());
82 DBG_ASSERT(dynamic_cast<InexactCq*>(&IpCq().AdditionalCq()));
83 return inexact_cq;
84 }
85
89 SmartPtr<AugSystemSolver> augSysSolver_;
91 SmartPtr<PDPerturbationHandler> perturbHandler_;
93
97 void ComputeResiduals(const SymMatrix& W,
98 const Matrix& J_c,
99 const Matrix& J_d,
100 const Matrix& Pd_L,
101 const Matrix& Pd_U,
102 const Vector& v_L,
103 const Vector& v_U,
104 const Vector& slack_s_L,
105 const Vector& slack_s_U,
106 const Vector& sigma_s,
107 const IteratesVector& rhs,
108 const IteratesVector& res,
109 IteratesVector& resid);
110
114 bool HessianRequiresChange();
115
119 Number tcc_psi_;
121 Number tcc_theta_;
124 Number tcc_theta_mu_exponent_;
127 bool modify_hessian_with_slacks_;
130 Index inexact_regularization_ls_count_trigger_;
132
135 bool is_pardiso_;
136
137 Index last_info_ls_count_;
138 };
139
140
141 } // namespace Ipopt
142
143 #endif
Ipopt::InexactPDSolver::HessianRequiresChange
bool HessianRequiresChange()
Method for checking if the Hessian matrix has to be modified.
Ipopt::InexactPDSolver::InitializeImpl
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Implementation of the initialization method that has to be overloaded by for each derived class...
Ipopt::InexactPDSolver::is_pardiso_
bool is_pardiso_
flag indicating if we are dealing with the Pardiso solver (temporary)
Definition: IpInexactPDSolver.hpp:135
Ipopt::InexactPDSolver
This is the implemetation of the Primal-Dual System, allowing the usage of an inexact linear solver...
Definition: IpInexactPDSolver.hpp:24
Ipopt::IteratesVector
Specialized CompoundVector class specifically for the algorithm iterates.
Definition: IpIteratesVector.hpp:27
IpAlgStrategy.hpp
Ipopt::InexactPDSolver::InexactPDSolver
InexactPDSolver()
Default Constructor.
Ipopt::AlgorithmStrategyObject
This is the base class for all algorithm strategy objects.
Definition: IpAlgStrategy.hpp:35
Ipopt::InexactPDSolver::RegisterOptions
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for IpoptType.
Ipopt::Number
double Number
Type of all numbers.
Definition: IpTypes.hpp:17
Ipopt::Vector
Vector Base Class.
Definition: IpVector.hpp:47
Ipopt::PDPerturbationHandler
Class for handling the perturbation factors delta_x, delta_s, delta_c, and delta_d in the primal dual...
Definition: IpPDPerturbationHandler.hpp:24
Ipopt::IpoptCalculatedQuantities::AdditionalCq
IpoptAdditionalCq & AdditionalCq()
Definition: IpIpoptCalculatedQuantities.hpp:452
Ipopt::InexactPDSolver::modify_hessian_with_slacks_
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...
Definition: IpInexactPDSolver.hpp:127
Ipopt::InexactPDSolver::augSysSolver_
SmartPtr< AugSystemSolver > augSysSolver_
Pointer to the Solver for the augmented system.
Definition: IpInexactPDSolver.hpp:89
Ipopt::SymMatrix
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:23
Ipopt::InexactPDSolver::~InexactPDSolver
virtual ~InexactPDSolver()
Default destructor.
Ipopt::InexactPDSolver::tcc_theta_mu_exponent_
Number tcc_theta_mu_exponent_
mu exponent when multiplied to theta in the tangential component condition
Definition: IpInexactPDSolver.hpp:124
Ipopt::SmartPtr
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
Ipopt::OptionsList
This class stores a list of user set options.
Definition: IpOptionsList.hpp:32
Ipopt::AugSystemSolver
Base class for Solver for the augmented system.
Definition: IpAugSystemSolver.hpp:37
Ipopt::Matrix
Matrix Base Class.
Definition: IpMatrix.hpp:27
IpAugSystemSolver.hpp
Ipopt::IpoptData::AdditionalData
IpoptAdditionalData & AdditionalData()
Get access to additional data object.
Definition: IpIpoptData.hpp:502
Ipopt::InexactPDSolver::InexCq
InexactCq & InexCq()
Method to easily access Inexact calculated quantities.
Definition: IpInexactPDSolver.hpp:78
Ipopt::Index
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
DBG_ASSERT
#define DBG_ASSERT(test)
Definition: IpDebug.hpp:38
Ipopt::InexactCq
Class for all Chen-Goldfarb penalty method specific calculated quantities.
Definition: IpInexactCq.hpp:22
Ipopt::InexactData
Class to organize all the additional data required by the Chen-Goldfarb penalty function algorithm...
Definition: IpInexactData.hpp:19
Ipopt::InexactPDSolver::perturbHandler_
SmartPtr< PDPerturbationHandler > perturbHandler_
Pointer to the Perturbation Handler.
Definition: IpInexactPDSolver.hpp:91
Ipopt::AlgorithmStrategyObject::IpData
IpoptData & IpData() const
Definition: IpAlgStrategy.hpp:131
Ipopt::InexactPDSolver::InexData
InexactData & InexData()
Method to easily access Inexact data.
Definition: IpInexactPDSolver.hpp:69
Ipopt::InexactPDSolver::operator=
InexactPDSolver & operator=(const InexactPDSolver &)
Overloaded Equals Operator.
Ipopt::InexactPDSolver::Solve
virtual bool Solve(const IteratesVector &rhs, IteratesVector &sol)
Solve the primal dual system, given one right hand side.
IpInexactCq.hpp
Ipopt::InexactPDSolver::tcc_theta_
Number tcc_theta_
theta factor in the tangential component condition
Definition: IpInexactPDSolver.hpp:121
Ipopt::AlgorithmStrategyObject::IpCq
IpoptCalculatedQuantities & IpCq() const
Definition: IpAlgStrategy.hpp:137
Ipopt::InexactPDSolver::tcc_psi_
Number tcc_psi_
Psi factor in the tangential component condition.
Definition: IpInexactPDSolver.hpp:119
Ipopt::InexactPDSolver::ComputeResiduals
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...
Ipopt::InexactPDSolver::last_info_ls_count_
Index last_info_ls_count_
Definition: IpInexactPDSolver.hpp:137
Ipopt::InexactPDSolver::inexact_regularization_ls_count_trigger_
Index inexact_regularization_ls_count_trigger_
Threshold on line search evaluation count to trigger Hessia modification.
Definition: IpInexactPDSolver.hpp:130
IpPDPerturbationHandler.hpp