Ipopt Documentation  
 
Loading...
Searching...
No Matches
IpLowRankAugSystemSolver.hpp
Go to the documentation of this file.
1// Copyright (C) 2005, 2006 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 2005-12-27
6
7#ifndef __IP_LOWRANKAUGSYSTEMSOLVER_HPP__
8#define __IP_LOWRANKAUGSYSTEMSOLVER_HPP__
9
10#include "IpAugSystemSolver.hpp"
11#include "IpDenseGenMatrix.hpp"
13#include "IpDiagMatrix.hpp"
14
15namespace Ipopt
16{
17
23{
24public:
27
29 AugSystemSolver& aug_system_solver
30 );
31
35
38 const OptionsList& options,
39 const std::string& prefix
40 );
41
44 const SymMatrix* W,
45 Number W_factor,
46 const Vector* D_x,
47 Number delta_x,
48 const Vector* D_s,
49 Number delta_s,
50 const Matrix* J_c,
51 const Vector* D_c,
52 Number delta_c,
53 const Matrix* J_d,
54 const Vector* D_d,
55 Number delta_d,
56 const Vector& rhs_x,
57 const Vector& rhs_s,
58 const Vector& rhs_c,
59 const Vector& rhs_d,
60 Vector& sol_x,
61 Vector& sol_s,
62 Vector& sol_c,
63 Vector& sol_d,
64 bool check_NegEVals,
65 Index numberOfNegEVals
66 );
67
75 virtual Index NumberOfNegEVals() const;
76
81 virtual bool ProvidesInertia() const;
82
90 virtual bool IncreaseQuality();
91
92private:
103
105
109 );
110
113 );
115
121
127
132
135
141
144
149
152
158
164
167
173
179
183
192
196
201
212
215
219 const SymMatrix* W,
220 Number W_factor,
221 const Vector* D_x,
222 Number delta_x,
223 const Vector* D_s,
224 Number delta_s,
225 const Matrix& J_c,
226 const Vector* D_c,
227 Number delta_c,
228 const Matrix& J_d,
229 const Vector* D_d,
230 Number delta_d,
231 const Vector& proto_rhs_x,
232 const Vector& proto_rhs_s,
233 const Vector& proto_rhs_c,
234 const Vector& proto_rhs_d,
235 bool check_NegEVals,
236 Index numberOfNegEVals
237 );
238
247 const Vector* D_x,
248 Number delta_x,
249 const Vector* D_s,
250 Number delta_s,
251 const Matrix& J_c,
252 const Vector* D_c,
253 Number delta_c,
254 const Matrix& J_d,
255 const Vector* D_d,
256 Number delta_d,
257 const Vector& proto_rhs_x,
258 const Vector& proto_rhs_s,
259 const Vector& proto_rhs_c,
260 const Vector& proto_rhs_d,
261 const MultiVectorMatrix& V,
262 const SmartPtr<const Matrix>& P_LM,
266 bool check_NegEVals,
267 Index numberOfNegEVals
268 );
269
276 const SymMatrix* W,
277 Number W_factor,
278 const Vector* D_x,
279 Number delta_x,
280 const Vector* D_s,
281 Number delta_s,
282 const Matrix& J_c,
283 const Vector* D_c,
284 Number delta_c,
285 const Matrix& J_d,
286 const Vector* D_d,
287 Number delta_d
288 );
290};
291
292} // namespace Ipopt
293
294#endif
Base class for Solver for the augmented system.
Solver for the augmented system with LowRankUpdateSymMatrix Hessian matrices.
Number delta_d_
Most recent value of delta_d from Set method.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
virtual ~LowRankAugSystemSolver()
Destructor.
Number delta_s_
Most recent value of delta_s from Set method.
Number delta_c_
Most recent value of delta_c from Set method.
Index num_neg_evals_
Stores the number of negative eigenvalues detected during most recent factorization.
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
ESymSolverStatus UpdateFactorization(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, bool check_NegEVals, Index numberOfNegEVals)
Method for updating the factorization, including J1_, J2_, Vtilde1_, Utilde2, Wdiag_,...
Number delta_x_
Most recent value of delta_x from Set method.
LowRankAugSystemSolver(const LowRankAugSystemSolver &)
Copy Constructor.
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
void operator=(const LowRankAugSystemSolver &)
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
SmartPtr< MultiVectorMatrix > Vtilde1_
SmartPtr< MultiVectorMatrix > Utilde2_
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
SmartPtr< const CompoundVectorSpace > compound_sol_vecspace_
Vector space for Compound vectors that capture the entire right hand side and solution vectors .
TaggedObject::Tag d_x_tag_
Tag for D_x vector, representing the diagonal matrix D_x.
LowRankAugSystemSolver()
Default constructor.
TaggedObject::Tag w_tag_
Tag for W matrix.
SmartPtr< DiagMatrix > Wdiag_
Hessian Matrix passed to the augmented system solver solving the matrix without the low-rank update.
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_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
Number w_factor_
Most recent value of W_factor.
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.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
LowRankAugSystemSolver(AugSystemSolver &aug_system_solver)
Constructor using only a linear solver object.
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.
ESymSolverStatus SolveMultiVector(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, const MultiVectorMatrix &V, const SmartPtr< const Matrix > &P_LM, SmartPtr< MultiVectorMatrix > &V_x, SmartPtr< MultiVectorMatrix > &Vtilde1, SmartPtr< MultiVectorMatrix > &Vtilde1_x, bool check_NegEVals, Index numberOfNegEVals)
Method for solving the augmented system without low-rank update for multiple right hand sides that ar...
Matrix Base Class.
Definition IpMatrix.hpp:28
Class for Matrices with few columns that consists of Vectors.
This class stores a list of user set options.
Template class for Smart Pointers.
This is the base class for all derived symmetric matrix types.
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