Ipopt 3.12.10

- Main Page
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpGenAugSystemSolver.hpp
Go to the documentation of this file.
1 // Copyright (C) 2007 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpGenAugSystemSolver.hpp 2269 2013-05-05 11:32:40Z stefan $
6 //
7 // Authors: Andreas Waechter IBM 2007-03-01
8
9 #ifndef __IP_STDAUGSYSTEMSOLVER_HPP__
10 #define __IP_STDAUGSYSTEMSOLVER_HPP__
11
12 #include "IpAugSystemSolver.hpp"
13 #include "IpGenKKTSolverInterface.hpp"
14
15 namespace Ipopt
16 {
22 class GenAugSystemSolver : public AugSystemSolver
23 {
24 public:
28 GenAugSystemSolver(GenKKTSolverInterface& SolverInterface);
29
31 virtual ~GenAugSystemSolver();
33
35 bool InitializeImpl(const OptionsList& options,
36 const std::string& prefix);
37
42 virtual ESymSolverStatus MultiSolve(
43 const SymMatrix* W,
44 double W_factor,
45 const Vector* D_x,
46 double delta_x,
47 const Vector* D_s,
48 double delta_s,
49 const Matrix* J_c,
50 const Vector* D_c,
51 double delta_c,
52 const Matrix* J_d,
53 const Vector* D_d,
54 double delta_d,
55 std::vector<SmartPtr<const Vector> >& rhs_xV,
56 std::vector<SmartPtr<const Vector> >& rhs_sV,
57 std::vector<SmartPtr<const Vector> >& rhs_cV,
58 std::vector<SmartPtr<const Vector> >& rhs_dV,
59 std::vector<SmartPtr<Vector> >& sol_xV,
60 std::vector<SmartPtr<Vector> >& sol_sV,
61 std::vector<SmartPtr<Vector> >& sol_cV,
62 std::vector<SmartPtr<Vector> >& sol_dV,
63 bool check_NegEVals,
64 Index numberOfNegEVals);
65
72 virtual Index NumberOfNegEVals() const;
73
77 virtual bool ProvidesInertia() const;
78
85 virtual bool IncreaseQuality();
86
87 private:
97 GenAugSystemSolver();
99 GenAugSystemSolver(const GenAugSystemSolver&);
100
102 void operator=(const GenAugSystemSolver&);
104
107 bool AugmentedSystemChanged(const SymMatrix* W,
108 double W_factor,
109 const Vector* D_x,
110 double delta_x,
111 const Vector* D_s,
112 double delta_s,
113 const Matrix& J_c,
114 const Vector* D_c,
115 double delta_c,
116 const Matrix& J_d,
117 const Vector* D_d,
118 double delta_d);
119
120 void UpdateTags(const SymMatrix* W,
121 double W_factor,
122 const Vector* D_x,
123 double delta_x,
124 const Vector* D_s,
125 double delta_s,
126 const Matrix& J_c,
127 const Vector* D_c,
128 double delta_c,
129 const Matrix& J_d,
130 const Vector* D_d,
131 double delta_d);
132
136 SmartPtr<GenKKTSolverInterface> solver_interface_;
137
146 TaggedObject::Tag w_tag_;
148 double w_factor_;
152 TaggedObject::Tag d_x_tag_;
154 double delta_x_;
158 TaggedObject::Tag d_s_tag_;
160 double delta_s_;
164 TaggedObject::Tag j_c_tag_;
168 TaggedObject::Tag d_c_tag_;
170 double delta_c_;
174 TaggedObject::Tag j_d_tag_;
178 TaggedObject::Tag d_d_tag_;
180 double delta_d_;
182
186 Number* dx_vals_copy_;
187 Number* ds_vals_copy_;
188 Number* dc_vals_copy_;
189 Number* dd_vals_copy_;
191
196 bool warm_start_same_structure_;
198 };
199
200 } // namespace Ipopt
201
202 #endif
Ipopt::GenAugSystemSolver::MultiSolve
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...
Ipopt::GenAugSystemSolver::ProvidesInertia
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
Ipopt::GenAugSystemSolver::NumberOfNegEVals
virtual Index NumberOfNegEVals() const
Number of negative eigenvalues detected during last solve.
Ipopt::ESymSolverStatus
ESymSolverStatus
Enum to report outcome of a linear solve.
Definition: IpSymLinearSolver.hpp:21
Ipopt::GenAugSystemSolver::delta_x_
double delta_x_
Most recent value of delta_x from Set method.
Definition: IpGenAugSystemSolver.hpp:154
Ipopt::GenAugSystemSolver::dc_vals_copy_
Number * dc_vals_copy_
Definition: IpGenAugSystemSolver.hpp:188
Ipopt::GenAugSystemSolver::InitializeImpl
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
Ipopt::GenAugSystemSolver
Solver for the augmented system using GenKKTSolverInterfaces.
Definition: IpGenAugSystemSolver.hpp:22
Ipopt::GenAugSystemSolver::solver_interface_
SmartPtr< GenKKTSolverInterface > solver_interface_
The linear solver object that is to be used to solve the linear systems.
Definition: IpGenAugSystemSolver.hpp:136
Ipopt::GenAugSystemSolver::IncreaseQuality
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
Ipopt::GenAugSystemSolver::delta_c_
double delta_c_
Most recent value of delta_c from Set method.
Definition: IpGenAugSystemSolver.hpp:170
Ipopt::Number
double Number
Type of all numbers.
Definition: IpTypes.hpp:17
Ipopt::Vector
Vector Base Class.
Definition: IpVector.hpp:47
Ipopt::GenKKTSolverInterface
Base class for interfaces to symmetric indefinite linear solvers for generic matrices.
Definition: IpGenKKTSolverInterface.hpp:20
Ipopt::GenAugSystemSolver::d_d_tag_
TaggedObject::Tag d_d_tag_
Tag for D_d vector, representing the diagonal matrix D_d.
Definition: IpGenAugSystemSolver.hpp:178
Ipopt::SymMatrix
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:23
Ipopt::SmartPtr
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
Ipopt::GenAugSystemSolver::GenAugSystemSolver
GenAugSystemSolver()
Default constructor.
Ipopt::OptionsList
This class stores a list of user set options.
Definition: IpOptionsList.hpp:32
Ipopt::GenAugSystemSolver::w_factor_
double w_factor_
Most recent value of W_factor.
Definition: IpGenAugSystemSolver.hpp:148
Ipopt::AugSystemSolver
Base class for Solver for the augmented system.
Definition: IpAugSystemSolver.hpp:37
Ipopt::GenAugSystemSolver::d_s_tag_
TaggedObject::Tag d_s_tag_
Tag for D_s vector, representing the diagonal matrix D_s.
Definition: IpGenAugSystemSolver.hpp:158
Ipopt::Matrix
Matrix Base Class.
Definition: IpMatrix.hpp:27
Ipopt::GenAugSystemSolver::UpdateTags
void UpdateTags(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)
Ipopt::GenAugSystemSolver::w_tag_
TaggedObject::Tag w_tag_
Tag for W matrix.
Definition: IpGenAugSystemSolver.hpp:146
IpGenKKTSolverInterface.hpp
Ipopt::GenAugSystemSolver::operator=
void operator=(const GenAugSystemSolver &)
Overloaded Equals Operator.
IpAugSystemSolver.hpp
Ipopt::GenAugSystemSolver::d_x_tag_
TaggedObject::Tag d_x_tag_
Tag for D_x vector, representing the diagonal matrix D_x.
Definition: IpGenAugSystemSolver.hpp:152
Ipopt::GenAugSystemSolver::dd_vals_copy_
Number * dd_vals_copy_
Definition: IpGenAugSystemSolver.hpp:189
Ipopt::GenAugSystemSolver::AugmentedSystemChanged
bool AugmentedSystemChanged(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...
Ipopt::GenAugSystemSolver::delta_d_
double delta_d_
Most recent value of delta_d from Set method.
Definition: IpGenAugSystemSolver.hpp:180
Ipopt::GenAugSystemSolver::dx_vals_copy_
Number * dx_vals_copy_
Definition: IpGenAugSystemSolver.hpp:186
Ipopt::Index
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
Ipopt::GenAugSystemSolver::delta_s_
double delta_s_
Most recent value of delta_s from Set method.
Definition: IpGenAugSystemSolver.hpp:160
Ipopt::TaggedObject::Tag
unsigned int Tag
Type for the Tag values.
Definition: IpTaggedObject.hpp:80
Ipopt::GenAugSystemSolver::j_d_tag_
TaggedObject::Tag j_d_tag_
Tag for J_d matrix.
Definition: IpGenAugSystemSolver.hpp:174
Ipopt::GenAugSystemSolver::~GenAugSystemSolver
virtual ~GenAugSystemSolver()
Default destructor.
Ipopt::GenAugSystemSolver::d_c_tag_
TaggedObject::Tag d_c_tag_
Tag for D_c vector, representing the diagonal matrix D_c.
Definition: IpGenAugSystemSolver.hpp:168
Ipopt::GenAugSystemSolver::warm_start_same_structure_
bool warm_start_same_structure_
Flag indicating whether the TNLP with identical structure has already been solved before...
Definition: IpGenAugSystemSolver.hpp:196
Ipopt::GenAugSystemSolver::ds_vals_copy_
Number * ds_vals_copy_
Definition: IpGenAugSystemSolver.hpp:187
Ipopt::GenAugSystemSolver::j_c_tag_
TaggedObject::Tag j_c_tag_
Tag for J_c matrix.
Definition: IpGenAugSystemSolver.hpp:164