Ipopt Documentation  
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// Authors: Andreas Waechter IBM 2009-11-05
6// (based on IpLowRankAugSystemSolver.hpp rev 1324)
7
8#ifndef __IP_LOWRANKSSAUGSYSTEMSOLVER_HPP__
9#define __IP_LOWRANKSSAUGSYSTEMSOLVER_HPP__
10
11#include "IpAugSystemSolver.hpp"
12#include "IpDiagMatrix.hpp"
13#include "IpCompoundMatrix.hpp"
14#include "IpCompoundVector.hpp"
16
17namespace Ipopt
18{
19
28{
29public:
32
34 AugSystemSolver& aug_system_solver,
35 Index max_rank
36 );
37
41
43 const OptionsList& options,
44 const std::string& prefix
45 );
46
49 const SymMatrix* W,
50 Number W_factor,
51 const Vector* D_x,
52 Number delta_x,
53 const Vector* D_s,
54 Number delta_s,
55 const Matrix* J_c,
56 const Vector* D_c,
57 Number delta_c,
58 const Matrix* J_d,
59 const Vector* D_d,
60 Number 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 );
72
81 virtual Index NumberOfNegEVals() const;
82
87 virtual bool ProvidesInertia() const;
88
96 virtual bool IncreaseQuality();
97
98private:
109
111
115 );
116
119 );
121
127
130
136
141
144
150
153
158
161
167
173
176
182
188
192
195
199
203
206
209
212
215
220
232
235
239 const SymMatrix* W,
240 Number W_factor,
241 const Vector* D_x,
242 Number delta_x,
243 const Vector* D_s,
244 Number delta_s,
245 const Matrix& J_c,
246 const Vector* D_c,
247 Number delta_c,
248 const Matrix& J_d,
249 const Vector* D_d,
250 Number delta_d,
251 const Vector& proto_rhs_x,
252 const Vector& proto_rhs_s,
253 const Vector& proto_rhs_c,
254 const Vector& proto_rhs_d
255 );
256
263 const SymMatrix* W,
264 Number W_factor,
265 const Vector* D_x,
266 Number delta_x,
267 const Vector* D_s,
268 Number delta_s,
269 const Matrix& J_c,
270 const Vector* D_c,
271 Number delta_c,
272 const Matrix& J_d,
273 const Vector* D_d,
274 Number delta_d
275 );
277};
278
279} // namespace Ipopt
280
281#endif
Base class for Solver for the augmented system.
Solver for the augmented system with LowRankUpdateSymMatrix Hessian matrices.
bool first_call_
Flag indicating if this is the first call.
Number w_factor_
Most recent value of W_factor.
Index negEvalsCorrection_
Number of components in V, so that it can be used to correct the inertia.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
SmartPtr< CompoundVectorSpace > y_c_ext_space_
Extended vector space for y_c.
Number delta_x_
Most recent value of delta_x from Set method.
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
SmartPtr< ExpandedMultiVectorMatrix > expanded_vu_
Artificial rows for Jac_c part for low rank data.
Index num_neg_evals_
Stores the number of negative eigenvalues detected during most recent factorization.
Number delta_c_
Most recent value of delta_c from Set method.
virtual ~LowRankSSAugSystemSolver()
Destructor.
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
SmartPtr< AugSystemSolver > aug_system_solver_
The augmented system solver object that should be used for the factorization of the augmented system ...
TaggedObject::Tag d_x_tag_
Tag for D_x vector, representing the diagonal matrix D_x.
void operator=(const LowRankSSAugSystemSolver &)
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
Number delta_d_
Most recent value of delta_d from Set method.
LowRankSSAugSystemSolver(AugSystemSolver &aug_system_solver, Index max_rank)
Constructor using an existing augmented system solver.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
LowRankSSAugSystemSolver()
Default constructor.
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
ESymSolverStatus UpdateExtendedData(const SymMatrix *W, Number W_factor, const Vector *D_x, Number delta_x, const Vector *D_s, Number delta_s, const Matrix &J_c, const Vector *D_c, Number delta_c, const Matrix &J_d, const Vector *D_d, Number 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_,...
Number delta_s_
Most recent value of delta_s from Set method.
SmartPtr< DiagMatrix > Wdiag_
Hessian Matrix passed to the augmented system solver solving the matrix without the low-rank update.
virtual ESymSolverStatus Solve(const SymMatrix *W, Number W_factor, const Vector *D_x, Number delta_x, const Vector *D_s, Number delta_s, const Matrix *J_c, const Vector *D_c, Number delta_c, const Matrix *J_d, const Vector *D_d, Number 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.
LowRankSSAugSystemSolver(const LowRankSSAugSystemSolver &)
Copy Constructor.
SmartPtr< CompoundMatrix > J_c_ext_
Extended Jac_c to include expanded_vu_.
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
SmartPtr< CompoundVector > D_c_ext_
Extended D_c diagonal.
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
TaggedObject::Tag w_tag_
Tag for W matrix.
Index max_rank_
Maximal rank of low rank Hessian update.
bool AugmentedSystemRequiresChange(const SymMatrix *W, Number W_factor, const Vector *D_x, Number delta_x, const Vector *D_s, Number delta_s, const Matrix &J_c, const Vector *D_c, Number delta_c, const Matrix &J_d, const Vector *D_d, Number delta_d)
Method that compares the tags of the data for the matrix with those from the previous call.
Matrix Base Class.
Definition: IpMatrix.hpp:28
This class stores a list of user set options.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:165
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:21
unsigned int Tag
Type for the Tag values.
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.
ESymSolverStatus
Enum to report outcome of a linear solve.
ipindex Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:20
ipnumber Number
Type of all numbers.
Definition: IpTypes.hpp:17