Ipopt 3.12.10

- Main Page
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpLowRankSSAugSystemSolver.hpp
Go to the documentation of this file.
1 // Copyright (C) 2005, 2009 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpLowRankSSAugSystemSolver.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Andreas Waechter IBM 2009-11-05
8 // (based on IpLowRankAugSystemSolver.hpp rev 1324)
9
10 #ifndef __IP_LOWRANKSSAUGSYSTEMSOLVER_HPP__
11 #define __IP_LOWRANKSSAUGSYSTEMSOLVER_HPP__
12
13 #include "IpAugSystemSolver.hpp"
14 #include "IpDiagMatrix.hpp"
15 #include "IpCompoundMatrix.hpp"
16 #include "IpCompoundVector.hpp"
17 #include "IpExpandedMultiVectorMatrix.hpp"
18
19 namespace Ipopt
20 {
21
27 class LowRankSSAugSystemSolver : public AugSystemSolver
28 {
29 public:
34 LowRankSSAugSystemSolver(AugSystemSolver& aug_system_solver,
35 Index max_rank);
36
38 virtual ~LowRankSSAugSystemSolver();
40
42 bool InitializeImpl(const OptionsList& options,
43 const std::string& prefix);
44
48 virtual ESymSolverStatus Solve(
49 const SymMatrix* W,
50 double W_factor,
51 const Vector* D_x,
52 double delta_x,
53 const Vector* D_s,
54 double delta_s,
55 const Matrix* J_c,
56 const Vector* D_c,
57 double delta_c,
58 const Matrix* J_d,
59 const Vector* D_d,
60 double delta_d,
61 const Vector& rhs_x,
62 const Vector& rhs_s,
63 const Vector& rhs_c,
64 const Vector& rhs_d,
65 Vector& sol_x,
66 Vector& sol_s,
67 Vector& sol_c,
68 Vector& sol_d,
69 bool check_NegEVals,
70 Index numberOfNegEVals);
71
78 virtual Index NumberOfNegEVals() const;
79
83 virtual bool ProvidesInertia() const;
84
91 virtual bool IncreaseQuality();
92
93 private:
103 LowRankSSAugSystemSolver();
105 LowRankSSAugSystemSolver(const LowRankSSAugSystemSolver&);
106
108 void operator=(const LowRankSSAugSystemSolver&);
110
115 SmartPtr<AugSystemSolver> aug_system_solver_;
116
118 Index max_rank_;
119
128 TaggedObject::Tag w_tag_;
130 double w_factor_;
134 TaggedObject::Tag d_x_tag_;
136 double delta_x_;
140 TaggedObject::Tag d_s_tag_;
142 double delta_s_;
146 TaggedObject::Tag j_c_tag_;
150 TaggedObject::Tag d_c_tag_;
152 double delta_c_;
156 TaggedObject::Tag j_d_tag_;
160 TaggedObject::Tag d_d_tag_;
162 double delta_d_;
164
166 bool first_call_;
167
173 SmartPtr<DiagMatrix> Wdiag_;
175 SmartPtr<ExpandedMultiVectorMatrix> expanded_vu_;
177 SmartPtr<CompoundMatrix> J_c_ext_;
179 SmartPtr<CompoundVector> D_c_ext_;
181 SmartPtr<CompoundVectorSpace> y_c_ext_space_;
184 Index negEvalsCorrection_;
186
194 Index num_neg_evals_;
195
200 ESymSolverStatus UpdateExtendedData(
201 const SymMatrix* W,
202 double W_factor,
203 const Vector* D_x,
204 double delta_x,
205 const Vector* D_s,
206 double delta_s,
207 const Matrix& J_c,
208 const Vector* D_c,
209 double delta_c,
210 const Matrix& J_d,
211 const Vector* D_d,
212 double delta_d,
213 const Vector& proto_rhs_x,
214 const Vector& proto_rhs_s,
215 const Vector& proto_rhs_c,
216 const Vector& proto_rhs_d);
217
221 bool AugmentedSystemRequiresChange(
222 const SymMatrix* W,
223 double W_factor,
224 const Vector* D_x,
225 double delta_x,
226 const Vector* D_s,
227 double delta_s,
228 const Matrix& J_c,
229 const Vector* D_c,
230 double delta_c,
231 const Matrix& J_d,
232 const Vector* D_d,
233 double delta_d);
235
236 };
237
238 } // namespace Ipopt
239
240 #endif
Ipopt::LowRankSSAugSystemSolver::J_c_ext_
SmartPtr< CompoundMatrix > J_c_ext_
Extended Jac_c to include expanded_vu_.
Definition: IpLowRankSSAugSystemSolver.hpp:177
Ipopt::LowRankSSAugSystemSolver::w_tag_
TaggedObject::Tag w_tag_
Tag for W matrix.
Definition: IpLowRankSSAugSystemSolver.hpp:128
Ipopt::LowRankSSAugSystemSolver::operator=
void operator=(const LowRankSSAugSystemSolver &)
Overloaded Equals Operator.
Ipopt::ESymSolverStatus
ESymSolverStatus
Enum to report outcome of a linear solve.
Definition: IpSymLinearSolver.hpp:21
Ipopt::LowRankSSAugSystemSolver::LowRankSSAugSystemSolver
LowRankSSAugSystemSolver()
Default constructor.
Ipopt::LowRankSSAugSystemSolver::d_d_tag_
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
Definition: IpLowRankSSAugSystemSolver.hpp:160
Ipopt::LowRankSSAugSystemSolver::j_d_tag_
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
Definition: IpLowRankSSAugSystemSolver.hpp:156
Ipopt::LowRankSSAugSystemSolver::NumberOfNegEVals
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
Ipopt::LowRankSSAugSystemSolver::j_c_tag_
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
Definition: IpLowRankSSAugSystemSolver.hpp:146
Ipopt::LowRankSSAugSystemSolver::y_c_ext_space_
SmartPtr< CompoundVectorSpace > y_c_ext_space_
Extended vector space for y_c.
Definition: IpLowRankSSAugSystemSolver.hpp:181
Ipopt::LowRankSSAugSystemSolver::d_s_tag_
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
Definition: IpLowRankSSAugSystemSolver.hpp:140
Ipopt::Vector
Vector Base Class.
Definition: IpVector.hpp:47
Ipopt::LowRankSSAugSystemSolver::num_neg_evals_
Index num_neg_evals_
Stores the number of negative eigenvalues detected during most recent factorization.
Definition: IpLowRankSSAugSystemSolver.hpp:194
Ipopt::LowRankSSAugSystemSolver
Solver for the augmented system with LowRankUpdateSymMatrix Hessian matrices.
Definition: IpLowRankSSAugSystemSolver.hpp:27
Ipopt::LowRankSSAugSystemSolver::delta_s_
double delta_s_
Most recent value of delta_s from Set method.
Definition: IpLowRankSSAugSystemSolver.hpp:142
Ipopt::LowRankSSAugSystemSolver::UpdateExtendedData
ESymSolverStatus UpdateExtendedData(const SymMatrix *W, double W_factor, const Vector *D_x, double delta_x, const Vector *D_s, double delta_s, const Matrix &J_c, const Vector *D_c, double delta_c, const Matrix &J_d, const Vector *D_d, double delta_d, const Vector &proto_rhs_x, const Vector &proto_rhs_s, const Vector &proto_rhs_c, const Vector &proto_rhs_d)
Method for updating the factorization, including J1_, J2_, Vtilde1_, Utilde2, Wdiag_, compound_sol_vecspace_.
Ipopt::SymMatrix
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:23
Ipopt::SmartPtr
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
Ipopt::LowRankSSAugSystemSolver::IncreaseQuality
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
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::LowRankSSAugSystemSolver::max_rank_
Index max_rank_
Maximal rank of low rank Hessian update.
Definition: IpLowRankSSAugSystemSolver.hpp:118
Ipopt::LowRankSSAugSystemSolver::~LowRankSSAugSystemSolver
virtual ~LowRankSSAugSystemSolver()
Default destructor.
Ipopt::LowRankSSAugSystemSolver::delta_d_
double delta_d_
Most recent value of delta_d from Set method.
Definition: IpLowRankSSAugSystemSolver.hpp:162
Ipopt::Matrix
Matrix Base Class.
Definition: IpMatrix.hpp:27
IpCompoundVector.hpp
IpAugSystemSolver.hpp
Ipopt::LowRankSSAugSystemSolver::w_factor_
double w_factor_
Most recent value of W_factor.
Definition: IpLowRankSSAugSystemSolver.hpp:130
Ipopt::LowRankSSAugSystemSolver::delta_x_
double delta_x_
Most recent value of delta_x from Set method.
Definition: IpLowRankSSAugSystemSolver.hpp:136
Ipopt::Index
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
Ipopt::LowRankSSAugSystemSolver::negEvalsCorrection_
Index negEvalsCorrection_
Number of components in V, so that it can be used to correct the inertia.
Definition: IpLowRankSSAugSystemSolver.hpp:184
Ipopt::TaggedObject::Tag
unsigned int Tag
Type for the Tag values.
Definition: IpTaggedObject.hpp:80
IpCompoundMatrix.hpp
Ipopt::LowRankSSAugSystemSolver::d_c_tag_
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
Definition: IpLowRankSSAugSystemSolver.hpp:150
IpExpandedMultiVectorMatrix.hpp
Ipopt::LowRankSSAugSystemSolver::InitializeImpl
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
Ipopt::LowRankSSAugSystemSolver::d_x_tag_
TaggedObject::Tag d_x_tag_
Tag for D_x vector, representing the diagonal matrix D_x.
Definition: IpLowRankSSAugSystemSolver.hpp:134
Ipopt::LowRankSSAugSystemSolver::D_c_ext_
SmartPtr< CompoundVector > D_c_ext_
Extended D_c diagonal.
Definition: IpLowRankSSAugSystemSolver.hpp:179
Ipopt::LowRankSSAugSystemSolver::first_call_
bool first_call_
Flag indicating if this is the first call.
Definition: IpLowRankSSAugSystemSolver.hpp:166
IpDiagMatrix.hpp
Ipopt::LowRankSSAugSystemSolver::aug_system_solver_
SmartPtr< AugSystemSolver > aug_system_solver_
The augmented system solver object that should be used for the factorization of the augmented system ...
Definition: IpLowRankSSAugSystemSolver.hpp:115
Ipopt::LowRankSSAugSystemSolver::Wdiag_
SmartPtr< DiagMatrix > Wdiag_
Hessian Matrix passed to the augmented system solver solving the matrix without the low-rank update...
Definition: IpLowRankSSAugSystemSolver.hpp:173
Ipopt::LowRankSSAugSystemSolver::ProvidesInertia
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
Ipopt::LowRankSSAugSystemSolver::AugmentedSystemRequiresChange
bool AugmentedSystemRequiresChange(const SymMatrix *W, double W_factor, const Vector *D_x, double delta_x, const Vector *D_s, double delta_s, const Matrix &J_c, const Vector *D_c, double delta_c, const Matrix &J_d, const Vector *D_d, double delta_d)
Method that compares the tags of the data for the matrix with those from the previous call...
Ipopt::LowRankSSAugSystemSolver::expanded_vu_
SmartPtr< ExpandedMultiVectorMatrix > expanded_vu_
Artifical rows for Jac_c part for low rank data.
Definition: IpLowRankSSAugSystemSolver.hpp:175
Ipopt::LowRankSSAugSystemSolver::Solve
virtual ESymSolverStatus Solve(const SymMatrix *W, double W_factor, const Vector *D_x, double delta_x, const Vector *D_s, double delta_s, const Matrix *J_c, const Vector *D_c, double delta_c, const Matrix *J_d, const Vector *D_d, double delta_d, const Vector &rhs_x, const Vector &rhs_s, const Vector &rhs_c, const Vector &rhs_d, Vector &sol_x, Vector &sol_s, Vector &sol_c, Vector &sol_d, bool check_NegEVals, Index numberOfNegEVals)
Set up the augmented system and solve it for a given right hand side.
Ipopt::LowRankSSAugSystemSolver::delta_c_
double delta_c_
Most recent value of delta_c from Set method.
Definition: IpLowRankSSAugSystemSolver.hpp:152