Ipopt Documentation  
IpStdAugSystemSolver.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, 2006 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
6 
7 #ifndef __IP_STDAUGSYSTEMSOLVER_HPP__
8 #define __IP_STDAUGSYSTEMSOLVER_HPP__
9 
10 #include "IpAugSystemSolver.hpp"
11 #include "IpCompoundMatrix.hpp"
12 #include "IpCompoundSymMatrix.hpp"
13 #include "IpCompoundVector.hpp"
14 #include "IpSumSymMatrix.hpp"
15 #include "IpDiagMatrix.hpp"
16 #include "IpIdentityMatrix.hpp"
17 
18 namespace Ipopt
19 {
26 {
27 public:
30 
32  SymLinearSolver& LinSolver
33  );
34 
38 
40  const OptionsList& options,
41  const std::string& prefix
42  );
43 
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  std::vector<SmartPtr<const Vector> >& rhs_xV,
62  std::vector<SmartPtr<const Vector> >& rhs_sV,
63  std::vector<SmartPtr<const Vector> >& rhs_cV,
64  std::vector<SmartPtr<const Vector> >& rhs_dV,
65  std::vector<SmartPtr<Vector> >& sol_xV,
66  std::vector<SmartPtr<Vector> >& sol_sV,
67  std::vector<SmartPtr<Vector> >& sol_cV,
68  std::vector<SmartPtr<Vector> >& sol_dV,
69  bool check_NegEVals,
70  Index numberOfNegEVals
71  );
72 
81  virtual Index NumberOfNegEVals() const;
82 
87  virtual bool ProvidesInertia() const;
88 
97  virtual bool IncreaseQuality();
98 
99 private:
110 
112 
115  const StdAugSystemSolver&
116  );
117 
119  void operator=(
120  const StdAugSystemSolver&
121  );
123 
131  const SymMatrix& W,
132  const Matrix& J_c,
133  const Matrix& J_d,
134  const Vector& proto_x,
135  const Vector& proto_s,
136  const Vector& proto_c,
137  const Vector& proto_d
138  );
139 
147  const SymMatrix* W,
148  Number W_factor,
149  const Vector* D_x,
150  Number delta_x,
151  const Vector* D_s,
152  Number delta_s,
153  const Matrix& J_c,
154  const Vector* D_c,
155  Number delta_c,
156  const Matrix& J_d,
157  const Vector* D_d,
158  Number delta_d,
159  const Vector& proto_x,
160  const Vector& proto_s,
161  const Vector& proto_c,
162  const Vector& proto_d
163  );
164 
169  const SymMatrix* W,
170  Number W_factor,
171  const Vector* D_x,
172  Number delta_x,
173  const Vector* D_s,
174  Number delta_s,
175  const Matrix& J_c,
176  const Vector* D_c,
177  Number delta_c,
178  const Matrix& J_d,
179  const Vector* D_d,
180  Number delta_d
181  );
182 
187 
196 
198 
204 
209 
212 
218 
221 
227 
230 
236 
242 
245 
251 
257 
260 
270 
279 
286 
289 
294 };
295 
296 } // namespace Ipopt
297 
298 #endif
Base class for Solver for the augmented system.
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
Solver for the augmented system for triple type matrices.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
StdAugSystemSolver()
Default constructor.
TaggedObject::Tag augsys_tag_
This is the tag of the matrix storing the augmented system.
SmartPtr< IdentityMatrixSpace > ident_space_ds_
bool warm_start_same_structure_
Flag indicating whether the TNLP with identical structure has already been solved before.
virtual ~StdAugSystemSolver()
Destructor.
virtual ESymSolverStatus MultiSolve(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, std::vector< SmartPtr< const Vector > > &rhs_xV, std::vector< SmartPtr< const Vector > > &rhs_sV, std::vector< SmartPtr< const Vector > > &rhs_cV, std::vector< SmartPtr< const Vector > > &rhs_dV, std::vector< SmartPtr< Vector > > &sol_xV, std::vector< SmartPtr< Vector > > &sol_sV, std::vector< SmartPtr< Vector > > &sol_cV, std::vector< SmartPtr< Vector > > &sol_dV, bool check_NegEVals, Index numberOfNegEVals)
Set up the augmented system and solve it for a set of given right hand side - implementation for GenT...
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
SmartPtr< CompoundSymMatrixSpace > augmented_system_space_
Spaces for piecing together the augmented system.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
SmartPtr< SymLinearSolver > linsolver_
The linear solver object that is to be used to solve the linear systems.
StdAugSystemSolver(const StdAugSystemSolver &)
Copy Constructor.
Number delta_x_
Most recent value of delta_x from Set method.
SmartPtr< CompoundSymMatrix > augmented_system_
The resulting augmented matrix.
Number w_factor_
Most recent value of W_factor.
Number delta_c_
Most recent value of delta_c from set method.
SmartPtr< SumSymMatrixSpace > sumsym_space_x_
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
SmartPtr< DiagMatrixSpace > diag_space_d_
TaggedObject::Tag w_tag_
Tag for W matrix.
SmartPtr< DiagMatrixSpace > diag_space_c_
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
Number delta_s_
Most recent value of delta_s from Set method.
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)
Check the internal tags and decide if the passed variables are different from what is in the augmente...
SmartPtr< const SymMatrix > old_w_
A copy of a previous W used in the augmented_system_.
SmartPtr< DiagMatrixSpace > diag_space_x_
void operator=(const StdAugSystemSolver &)
Default Assignment Operator.
void CreateAugmentedSystem(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_x, const Vector &proto_s, const Vector &proto_c, const Vector &proto_d)
Create the new compound sym matrix that represents the augmented system.
SmartPtr< CompoundVectorSpace > augmented_vector_space_
Number delta_d_
Most recent value of delta_d from Set method.
StdAugSystemSolver(SymLinearSolver &LinSolver)
Constructor using only a linear solver object.
TaggedObject::Tag d_x_tag_
Tag for D_x vector, representing the diagonal matrix D_x.
void CreateAugmentedSpace(const SymMatrix &W, const Matrix &J_c, const Matrix &J_d, const Vector &proto_x, const Vector &proto_s, const Vector &proto_c, const Vector &proto_d)
Create the matrix space for the Compound Sym Matrix that represents the augmented system.
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
SmartPtr< DiagMatrixSpace > diag_space_s_
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
Base class for all derived symmetric linear solvers.
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