Ipopt  3.12.9
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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 // $Id: IpStdAugSystemSolver.hpp 2269 2013-05-05 11:32:40Z stefan $
6 //
7 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8 
9 #ifndef __IP_STDAUGSYSTEMSOLVER_HPP__
10 #define __IP_STDAUGSYSTEMSOLVER_HPP__
11 
12 #include "IpAugSystemSolver.hpp"
13 #include "IpCompoundMatrix.hpp"
14 #include "IpCompoundSymMatrix.hpp"
15 #include "IpCompoundVector.hpp"
16 #include "IpSumSymMatrix.hpp"
17 #include "IpDiagMatrix.hpp"
18 #include "IpIdentityMatrix.hpp"
19 
20 namespace Ipopt
21 {
28  {
29  public:
34 
36  virtual ~StdAugSystemSolver();
38 
40  bool InitializeImpl(const OptionsList& options,
41  const std::string& prefix);
42 
48  const SymMatrix* W,
49  double W_factor,
50  const Vector* D_x,
51  double delta_x,
52  const Vector* D_s,
53  double delta_s,
54  const Matrix* J_c,
55  const Vector* D_c,
56  double delta_c,
57  const Matrix* J_d,
58  const Vector* D_d,
59  double delta_d,
60  std::vector<SmartPtr<const Vector> >& rhs_xV,
61  std::vector<SmartPtr<const Vector> >& rhs_sV,
62  std::vector<SmartPtr<const Vector> >& rhs_cV,
63  std::vector<SmartPtr<const Vector> >& rhs_dV,
64  std::vector<SmartPtr<Vector> >& sol_xV,
65  std::vector<SmartPtr<Vector> >& sol_sV,
66  std::vector<SmartPtr<Vector> >& sol_cV,
67  std::vector<SmartPtr<Vector> >& sol_dV,
68  bool check_NegEVals,
69  Index numberOfNegEVals);
70 
77  virtual Index NumberOfNegEVals() const;
78 
82  virtual bool ProvidesInertia() const;
83 
90  virtual bool IncreaseQuality();
91 
92  private:
105 
107  void operator=(const StdAugSystemSolver&);
109 
110 
114  void CreateAugmentedSpace(const SymMatrix& W,
115  const Matrix& J_c,
116  const Matrix& J_d,
117  const Vector& proto_x,
118  const Vector& proto_s,
119  const Vector& proto_c,
120  const Vector& proto_d);
121 
122 
126  void CreateAugmentedSystem(const SymMatrix* W,
127  double W_factor,
128  const Vector* D_x,
129  double delta_x,
130  const Vector* D_s,
131  double delta_s,
132  const Matrix& J_c,
133  const Vector* D_c,
134  double delta_c,
135  const Matrix& J_d,
136  const Vector* D_d,
137  double delta_d,
138  const Vector& proto_x,
139  const Vector& proto_s,
140  const Vector& proto_c,
141  const Vector& proto_d);
142 
146  double W_factor,
147  const Vector* D_x,
148  double delta_x,
149  const Vector* D_s,
150  double delta_s,
151  const Matrix& J_c,
152  const Vector* D_c,
153  double delta_c,
154  const Matrix& J_d,
155  const Vector* D_d,
156  double delta_d);
157 
162 
171 
173 
184  double w_factor_;
190  double delta_x_;
196  double delta_s_;
206  double delta_c_;
216  double delta_d_;
217 
226 
234 
239 
246  };
247 
248 } // namespace Ipopt
249 
250 #endif
ESymSolverStatus
Enum to report outcome of a linear solve.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
double w_factor_
Most recent value of W_factor.
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...
bool warm_start_same_structure_
Flag indicating whether the TNLP with identical structure has already been solved before...
StdAugSystemSolver()
Default constructor.
SmartPtr< DiagMatrixSpace > diag_space_x_
SmartPtr< IdentityMatrixSpace > ident_space_ds_
SmartPtr< SumSymMatrixSpace > sumsym_space_x_
Vector Base Class.
Definition: IpVector.hpp:47
SmartPtr< DiagMatrixSpace > diag_space_d_
SmartPtr< CompoundVectorSpace > augmented_vector_space_
double delta_c_
Most recent value of delta_c from Set method.
double delta_x_
Most recent value of delta_x from Set method.
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:23
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
void CreateAugmentedSystem(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_x, const Vector &proto_s, const Vector &proto_c, const Vector &proto_d)
Create the new compound sym matrix that represents the augmented system.
void operator=(const StdAugSystemSolver &)
Overloaded Equals Operator.
This class stores a list of user set options.
Base class for Solver for the augmented system.
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)
Check the internal tags and decide if the passed variables are different from what is in the augmente...
Matrix Base Class.
Definition: IpMatrix.hpp:27
TaggedObject::Tag augsys_tag_
This is the tag of the matrix storing the augmented system.
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
SmartPtr< CompoundSymMatrixSpace > augmented_system_space_
Spaces for piecing together the augmented system.
SmartPtr< DiagMatrixSpace > diag_space_s_
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
TaggedObject::Tag w_tag_
Tag for W matrix.
SmartPtr< DiagMatrixSpace > diag_space_c_
unsigned int Tag
Type for the Tag values.
double delta_s_
Most recent value of delta_s from Set method.
double delta_d_
Most recent value of delta_d from Set method.
Solver for the augmented system for triple type matrices.
Base class for all derived symmetric linear solvers.
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
SmartPtr< CompoundSymMatrix > augmented_system_
The resulting augmented matrix.
virtual ~StdAugSystemSolver()
Default destructor.
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
virtual ESymSolverStatus MultiSolve(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, 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...
SmartPtr< SymLinearSolver > linsolver_
The linear solver object that is to be used to solve the linear systems.
SmartPtr< const SymMatrix > old_w_
A copy of a previous W used in the augmented_system_.