Ipopt 3.12.10

- Main Page
- Classes
- Files

- File List
- File Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
IpAugRestoSystemSolver.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: IpAugRestoSystemSolver.hpp 1861 2010-12-21 21:34:47Z andreasw $
6 //
7 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8
9 #ifndef __IP_AUGRESTOSYSTEMSOLVER_HPP__
10 #define __IP_AUGRESTOSYSTEMSOLVER_HPP__
11
12 #include "IpAugSystemSolver.hpp"
13
14 namespace Ipopt
15 {
16
23 class AugRestoSystemSolver: public AugSystemSolver
24 {
25 public:
34 AugRestoSystemSolver(AugSystemSolver& orig_aug_solver,
35 bool skip_orig_aug_solver_init=true);
36
38 virtual ~AugRestoSystemSolver();
40
42 bool InitializeImpl(const OptionsList& options,
43 const std::string& prefix);
44
49 virtual ESymSolverStatus Solve(
50 const SymMatrix* W,
51 double W_factor,
52 const Vector* D_x,
53 double delta_x,
54 const Vector* D_s,
55 double delta_s,
56 const Matrix* J_c,
57 const Vector* D_c,
58 double delta_c,
59 const Matrix* J_d,
60 const Vector* D_d,
61 double delta_d,
62 const Vector& rhs_x,
63 const Vector& rhs_s,
64 const Vector& rhs_c,
65 const Vector& rhs_d,
66 Vector& sol_x,
67 Vector& sol_s,
68 Vector& sol_c,
69 Vector& sol_d,
70 bool check_NegEVals,
71 Index numberOfNegEVals);
72
76 virtual Index NumberOfNegEVals() const
77 {
78 return orig_aug_solver_->NumberOfNegEVals();
79 }
80
84 virtual bool ProvidesInertia() const
85 {
86 return orig_aug_solver_->ProvidesInertia();
87 }
88
95 virtual bool IncreaseQuality()
96 {
97 return orig_aug_solver_->IncreaseQuality();
98 }
99
100 private:
110 AugRestoSystemSolver();
111
113 AugRestoSystemSolver(const AugRestoSystemSolver&);
114
116 void operator=(const AugRestoSystemSolver&);
118
121 CachedResults< SmartPtr<Vector> > neg_omega_c_plus_D_c_cache_;
122 CachedResults< SmartPtr<Vector> > neg_omega_d_plus_D_d_cache_;
123 CachedResults< SmartPtr<Vector> > sigma_tilde_n_c_inv_cache_;
124 CachedResults< SmartPtr<Vector> > sigma_tilde_p_c_inv_cache_;
125 CachedResults< SmartPtr<Vector> > sigma_tilde_n_d_inv_cache_;
126 CachedResults< SmartPtr<Vector> > sigma_tilde_p_d_inv_cache_;
127 CachedResults< SmartPtr<Vector> > d_x_plus_wr_d_cache_;
128 CachedResults< SmartPtr<Vector> > rhs_cR_cache_;
129 CachedResults< SmartPtr<Vector> > rhs_dR_cache_;
131
134 SmartPtr<const Vector> Neg_Omega_c_plus_D_c(
135 const SmartPtr<const Vector>& sigma_tilde_n_c_inv,
136 const SmartPtr<const Vector>& sigma_tilde_p_c_inv,
137 const Vector* D_c,
138 const Vector& any_vec_in_c);
139
140 SmartPtr<const Vector> Neg_Omega_d_plus_D_d(
141 const Matrix& Pd_L,
142 const SmartPtr<const Vector>& sigma_tilde_n_d_inv,
143 const Matrix& neg_Pd_U,
144 const SmartPtr<const Vector>& sigma_tilde_p_d_inv,
145 const Vector* D_d,
146 const Vector& any_vec_in_d);
147
149 SmartPtr<const Vector> Sigma_tilde_n_c_inv(
150 const SmartPtr<const Vector>& sigma_tilde_n_c,
151 Number delta_x,
152 const Vector& any_vec_in_n_c);
153
154 SmartPtr<const Vector> Sigma_tilde_p_c_inv(
155 const SmartPtr<const Vector>& sigma_tilde_p_c,
156 Number delta_x,
157 const Vector& any_vec_in_p_c);
158
159 SmartPtr<const Vector> Sigma_tilde_n_d_inv(
160 const SmartPtr<const Vector>& sigma_tilde_n_d,
161 Number delta_x,
162 const Vector& any_vec_in_n_d);
163
164 SmartPtr<const Vector> Sigma_tilde_p_d_inv(
165 const SmartPtr<const Vector>& sigma_tilde_p_d,
166 Number delta_x,
167 const Vector& any_vec_in_p_d);
168
169 SmartPtr<const Vector> D_x_plus_wr_d(
170 const SmartPtr<const Vector>& CD_x0,
171 Number factor,
172 const Vector& wr_d);
173
174 SmartPtr<const Vector> Rhs_cR(
175 const Vector& rhs_c,
176 const SmartPtr<const Vector>& sigma_tilde_n_c_inv,
177 const Vector& rhs_n_c,
178 const SmartPtr<const Vector>& sigma_tilde_p_c_inv,
179 const Vector& rhs_p_c);
180
181 SmartPtr<const Vector> Rhs_dR(
182 const Vector& rhs_d,
183 const SmartPtr<const Vector>& sigma_tilde_n_d_inv,
184 const Vector& rhs_n_d,
185 const Matrix& pd_L,
186 const SmartPtr<const Vector>& sigma_tilde_p_d_inv,
187 const Vector& rhs_p_d,
188 const Matrix& pd_U);
190
191 SmartPtr<AugSystemSolver> orig_aug_solver_;
192 bool skip_orig_aug_solver_init_;
193 };
194
195 } // namespace Ipopt
196
197 #endif
Ipopt::ESymSolverStatus
ESymSolverStatus
Enum to report outcome of a linear solve.
Definition: IpSymLinearSolver.hpp:21
Ipopt::AugRestoSystemSolver::rhs_dR_cache_
CachedResults< SmartPtr< Vector > > rhs_dR_cache_
Definition: IpAugRestoSystemSolver.hpp:129
Ipopt::AugRestoSystemSolver::skip_orig_aug_solver_init_
bool skip_orig_aug_solver_init_
Definition: IpAugRestoSystemSolver.hpp:192
Ipopt::AugRestoSystemSolver::sigma_tilde_n_c_inv_cache_
CachedResults< SmartPtr< Vector > > sigma_tilde_n_c_inv_cache_
Definition: IpAugRestoSystemSolver.hpp:123
Ipopt::AugRestoSystemSolver
Class that converts the an augmented system with compound restoration pieces into a smaller &quot;pivoted&quot;...
Definition: IpAugRestoSystemSolver.hpp:23
Ipopt::AugRestoSystemSolver::Sigma_tilde_n_c_inv
SmartPtr< const Vector > Sigma_tilde_n_c_inv(const SmartPtr< const Vector > &sigma_tilde_n_c, Number delta_x, const Vector &any_vec_in_n_c)
Sigma tilde is the sum of Sigma and delta_x times the identity.
Ipopt::AugRestoSystemSolver::NumberOfNegEVals
virtual Index NumberOfNegEVals() const
Returns the number of negative eigenvalues from the original augmented system call.
Definition: IpAugRestoSystemSolver.hpp:76
Ipopt::AugRestoSystemSolver::Sigma_tilde_p_d_inv
SmartPtr< const Vector > Sigma_tilde_p_d_inv(const SmartPtr< const Vector > &sigma_tilde_p_d, Number delta_x, const Vector &any_vec_in_p_d)
Ipopt::AugRestoSystemSolver::AugRestoSystemSolver
AugRestoSystemSolver()
Default Constructor.
Ipopt::Number
double Number
Type of all numbers.
Definition: IpTypes.hpp:17
Ipopt::Vector
Vector Base Class.
Definition: IpVector.hpp:47
Ipopt::AugRestoSystemSolver::d_x_plus_wr_d_cache_
CachedResults< SmartPtr< Vector > > d_x_plus_wr_d_cache_
Definition: IpAugRestoSystemSolver.hpp:127
Ipopt::AugRestoSystemSolver::Neg_Omega_d_plus_D_d
SmartPtr< const Vector > Neg_Omega_d_plus_D_d(const Matrix &Pd_L, const SmartPtr< const Vector > &sigma_tilde_n_d_inv, const Matrix &neg_Pd_U, const SmartPtr< const Vector > &sigma_tilde_p_d_inv, const Vector *D_d, const Vector &any_vec_in_d)
Ipopt::AugRestoSystemSolver::neg_omega_c_plus_D_c_cache_
CachedResults< SmartPtr< Vector > > neg_omega_c_plus_D_c_cache_
Definition: IpAugRestoSystemSolver.hpp:121
Ipopt::AugRestoSystemSolver::Sigma_tilde_p_c_inv
SmartPtr< const Vector > Sigma_tilde_p_c_inv(const SmartPtr< const Vector > &sigma_tilde_p_c, Number delta_x, const Vector &any_vec_in_p_c)
Ipopt::AugRestoSystemSolver::Neg_Omega_c_plus_D_c
SmartPtr< const Vector > Neg_Omega_c_plus_D_c(const SmartPtr< const Vector > &sigma_tilde_n_c_inv, const SmartPtr< const Vector > &sigma_tilde_p_c_inv, const Vector *D_c, const Vector &any_vec_in_c)
Ipopt::AugRestoSystemSolver::ProvidesInertia
virtual bool ProvidesInertia() const
Query whether inertia is computed by linear solver.
Definition: IpAugRestoSystemSolver.hpp:84
Ipopt::AugRestoSystemSolver::sigma_tilde_p_d_inv_cache_
CachedResults< SmartPtr< Vector > > sigma_tilde_p_d_inv_cache_
Definition: IpAugRestoSystemSolver.hpp:126
Ipopt::SymMatrix
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:23
Ipopt::AugRestoSystemSolver::orig_aug_solver_
SmartPtr< AugSystemSolver > orig_aug_solver_
Definition: IpAugRestoSystemSolver.hpp:191
Ipopt::SmartPtr
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
Ipopt::OptionsList
This class stores a list of user set options.
Definition: IpOptionsList.hpp:32
Ipopt::AugSystemSolver
Base class for Solver for the augmented system.
Definition: IpAugSystemSolver.hpp:37
Ipopt::AugRestoSystemSolver::D_x_plus_wr_d
SmartPtr< const Vector > D_x_plus_wr_d(const SmartPtr< const Vector > &CD_x0, Number factor, const Vector &wr_d)
Ipopt::Matrix
Matrix Base Class.
Definition: IpMatrix.hpp:27
Ipopt::CachedResults
Cache Priority Enum.
Definition: IpCachedResults.hpp:70
IpAugSystemSolver.hpp
Ipopt::AugRestoSystemSolver::operator=
void operator=(const AugRestoSystemSolver &)
Overloaded Equals Operator.
Ipopt::AugRestoSystemSolver::Sigma_tilde_n_d_inv
SmartPtr< const Vector > Sigma_tilde_n_d_inv(const SmartPtr< const Vector > &sigma_tilde_n_d, Number delta_x, const Vector &any_vec_in_n_d)
Ipopt::AugRestoSystemSolver::Rhs_dR
SmartPtr< const Vector > Rhs_dR(const Vector &rhs_d, const SmartPtr< const Vector > &sigma_tilde_n_d_inv, const Vector &rhs_n_d, const Matrix &pd_L, const SmartPtr< const Vector > &sigma_tilde_p_d_inv, const Vector &rhs_p_d, const Matrix &pd_U)
Ipopt::Index
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
Ipopt::AugRestoSystemSolver::InitializeImpl
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
Ipopt::AugRestoSystemSolver::IncreaseQuality
virtual bool IncreaseQuality()
Request to increase quality of solution for next solve.
Definition: IpAugRestoSystemSolver.hpp:95
Ipopt::AugRestoSystemSolver::sigma_tilde_n_d_inv_cache_
CachedResults< SmartPtr< Vector > > sigma_tilde_n_d_inv_cache_
Definition: IpAugRestoSystemSolver.hpp:125
Ipopt::AugRestoSystemSolver::~AugRestoSystemSolver
virtual ~AugRestoSystemSolver()
Default destructor.
Ipopt::AugRestoSystemSolver::Solve
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)
Translate the augmented system (in the full space of the restoration variables) into the smaller spac...
Ipopt::AugRestoSystemSolver::Rhs_cR
SmartPtr< const Vector > Rhs_cR(const Vector &rhs_c, const SmartPtr< const Vector > &sigma_tilde_n_c_inv, const Vector &rhs_n_c, const SmartPtr< const Vector > &sigma_tilde_p_c_inv, const Vector &rhs_p_c)
Ipopt::AugRestoSystemSolver::neg_omega_d_plus_D_d_cache_
CachedResults< SmartPtr< Vector > > neg_omega_d_plus_D_d_cache_
Definition: IpAugRestoSystemSolver.hpp:122
Ipopt::AugRestoSystemSolver::rhs_cR_cache_
CachedResults< SmartPtr< Vector > > rhs_cR_cache_
Definition: IpAugRestoSystemSolver.hpp:128
Ipopt::AugRestoSystemSolver::sigma_tilde_p_c_inv_cache_
CachedResults< SmartPtr< Vector > > sigma_tilde_p_c_inv_cache_
Definition: IpAugRestoSystemSolver.hpp:124