Ipopt Documentation  
 
Loading...
Searching...
No Matches
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// Authors: Andreas Waechter IBM 2008-09-09
6
7#ifndef __IPINEXACTPDSOLVER_HPP__
8#define __IPINEXACTPDSOLVER_HPP__
9
10#include "IpAlgStrategy.hpp"
11#include "IpAugSystemSolver.hpp"
13#include "IpInexactCq.hpp"
14
15namespace Ipopt
16{
17
24{
25public:
28
32 AugSystemSolver& augSysSolver,
33 PDPerturbationHandler& perturbHandler
34 );
35
39
41 const OptionsList& options,
42 const std::string& prefix
43 );
44
47 virtual bool Solve(
48 const IteratesVector& rhs,
50 );
51
52 static void RegisterOptions(
54 );
55
56private:
67
71 const InexactPDSolver&
72 );
74
77 {
78 InexactData& inexact_data = static_cast<InexactData&>(IpData().AdditionalData());
79 DBG_ASSERT(dynamic_cast<InexactData*>(&IpData().AdditionalData()));
80 return inexact_data;
81 }
82
85 {
86 InexactCq& inexact_cq = static_cast<InexactCq&>(IpCq().AdditionalCq());
87 DBG_ASSERT(dynamic_cast<InexactCq*>(&IpCq().AdditionalCq()));
88 return inexact_cq;
89 }
90
93
98
103 const SymMatrix& W,
104 const Matrix& J_c,
105 const Matrix& J_d,
106 const Matrix& Pd_L,
107 const Matrix& Pd_U,
108 const Vector& v_L,
109 const Vector& v_U,
110 const Vector& slack_s_L,
111 const Vector& slack_s_U,
112 const Vector& sigma_s,
113 const IteratesVector& rhs,
114 const IteratesVector& res,
115 IteratesVector& resid
116 );
117
124
127
143
148
150};
151
152} // namespace Ipopt
153
154#endif
#define DBG_ASSERT(test)
Definition IpDebug.hpp:27
This is the base class for all algorithm strategy objects.
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 implementation of the Primal-Dual System, allowing the usage of an inexact linear solver.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
InexactPDSolver()
Default Constructor.
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.
InexactCq & InexCq()
Method to easily access Inexact calculated quantities.
virtual ~InexactPDSolver()
Destructor.
Index inexact_regularization_ls_count_trigger_
Threshold on line search evaluation count to trigger Hessian 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...
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.
Number tcc_theta_
theta factor in the tangential component condition
bool HessianRequiresChange()
Method for checking if the Hessian matrix has to be modified.
InexactPDSolver & operator=(const InexactPDSolver &)
Overloaded Assignment Operator.
virtual bool Solve(const IteratesVector &rhs, IteratesVector &sol)
Solve the primal dual system, given one right hand side.
InexactData & InexData()
Method to easily access Inexact data.
Number tcc_theta_mu_exponent_
mu exponent when multiplied to theta in the tangential component condition
IpoptAdditionalData & AdditionalData()
Get access to additional data object.
Specialized CompoundVector class specifically for the algorithm iterates.
Matrix Base Class.
Definition IpMatrix.hpp:28
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.
Vector Base Class.
Definition IpVector.hpp:48
This file contains a base class for all exceptions and a set of macros to help with exceptions.
ipindex Index
Type of all indices of vectors, matrices etc.
Definition IpTypes.hpp:20
ipnumber Number
Type of all numbers.
Definition IpTypes.hpp:17