Ipopt 3.11.9
Loading...
Searching...
No Matches
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"
18
19namespace Ipopt
20{
21
28 {
29 public:
35 Index max_rank);
36
40
42 bool InitializeImpl(const OptionsList& options,
43 const std::string& prefix);
44
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:
106
110
116
119
130 double w_factor_;
136 double delta_x_;
142 double delta_s_;
152 double delta_c_;
162 double delta_d_;
164
167
186
195
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
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
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.
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.
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.
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
SmartPtr< ExpandedMultiVectorMatrix > expanded_vu_
Artifical rows for Jac_c part for low rank data.
Index num_neg_evals_
Stores the number of negative eigenvalues detected during most recent factorization.
virtual ~LowRankSSAugSystemSolver()
Default destructor.
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_,...
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 &)
Overloaded Equals Operator.
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
double delta_x_
Most recent value of delta_x from Set method.
double delta_s_
Most recent value of delta_s from Set method.
double 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.
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.
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
SmartPtr< DiagMatrix > Wdiag_
Hessian Matrix passed to the augmented system solver solving the matrix without the low-rank update.
LowRankSSAugSystemSolver(const LowRankSSAugSystemSolver &)
Copy Constructor.
SmartPtr< CompoundMatrix > J_c_ext_
Extended Jac_c to include expanded_vu_.
double w_factor_
Most recent value of W_factor.
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.
double delta_c_
Most recent value of delta_c from Set method.
Matrix Base Class.
Definition IpMatrix.hpp:28
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
ESymSolverStatus
Enum to report outcome of a linear solve.
int Index
Type of all indices of vectors, matrices etc.
Definition IpTypes.hpp:19