Ipopt Documentation  
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
IpPDFullSpaceSolver.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, 2007 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 __IPPDFULLSPACESOLVER_HPP__
8 #define __IPPDFULLSPACESOLVER_HPP__
9 
10 #include "IpPDSystemSolver.hpp"
11 #include "IpAugSystemSolver.hpp"
13 
14 namespace Ipopt
15 {
16 
31 {
32 public:
39  AugSystemSolver& augSysSolver,
40  PDPerturbationHandler& perturbHandler
41  );
42 
44  virtual ~PDFullSpaceSolver();
46 
47  /* overloaded from AlgorithmStrategyObject */
48  bool InitializeImpl(
49  const OptionsList& options,
50  const std::string& prefix
51  );
52 
55  virtual bool Solve(
56  Number alpha,
57  Number beta,
58  const IteratesVector& rhs,
59  IteratesVector& res,
60  bool allow_inexact = false,
61  bool improve_solution = false
62  );
63 
66  static void RegisterOptions(
68  );
70 
71 private:
84 
87  const PDFullSpaceSolver&
88  );
90 
95 
99 
104 
110 
115 
118 
123 
129 
134 
137 
141 
149  bool SolveOnce(
150  bool resolve_unmodified,
151  bool pretend_singular,
152  const SymMatrix& W,
153  const Matrix& J_c,
154  const Matrix& J_d,
155  const Matrix& Px_L,
156  const Matrix& Px_U,
157  const Matrix& Pd_L,
158  const Matrix& Pd_U,
159  const Vector& z_L,
160  const Vector& z_U,
161  const Vector& v_L,
162  const Vector& v_U,
163  const Vector& slack_x_L,
164  const Vector& slack_x_U,
165  const Vector& slack_s_L,
166  const Vector& slack_s_U,
167  const Vector& sigma_x,
168  const Vector& sigma_s,
169  Number alpha,
170  Number beta,
171  const IteratesVector& rhs,
172  IteratesVector& res
173  );
174 
178  void ComputeResiduals(
179  const SymMatrix& W,
180  const Matrix& J_c,
181  const Matrix& J_d,
182  const Matrix& Px_L,
183  const Matrix& Px_U,
184  const Matrix& Pd_L,
185  const Matrix& Pd_U,
186  const Vector& z_L,
187  const Vector& z_U,
188  const Vector& v_L,
189  const Vector& v_U,
190  const Vector& slack_x_L,
191  const Vector& slack_x_U,
192  const Vector& slack_s_L,
193  const Vector& slack_s_U,
194  const Vector& sigma_x,
195  const Vector& sigma_s,
196  Number alpha,
197  Number beta,
198  const IteratesVector& rhs,
199  const IteratesVector& res,
200  IteratesVector& resid
201  );
202 
209  const IteratesVector& rhs,
210  const IteratesVector& res,
211  const IteratesVector& resid
212  );
213 
217  void SinvBlrmZPTdBr(
218  Number alpha,
219  const Vector& S,
220  const Vector& R,
221  const Vector& Z,
222  const Matrix& P,
223  const Vector& g,
224  Vector& X
225  );
227 };
228 
229 } // namespace Ipopt
230 
231 #endif
Number ComputeResidualRatio(const IteratesVector &rhs, const IteratesVector &res, const IteratesVector &resid)
Internal function for computing the ratio of the residual compared to the right hand side and solutio...
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for IpoptType.
Specialized CompoundVector class specifically for the algorithm iterates.
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
PDFullSpaceSolver()
Default Constructor.
virtual ~PDFullSpaceSolver()
Default destructor.
Number residual_ratio_singular_
If the residual_ratio is larger than this value after trying to improve the solution, the linear system is assumed to be singular and modified.
Pure Primal Dual System Solver Base Class.
double Number
Type of all numbers.
Definition: IpTypes.hpp:15
Vector Base Class.
Definition: IpVector.hpp:47
Class for handling the perturbation factors delta_x, delta_s, delta_c, and delta_d in the primal dual...
SmartPtr< PDPerturbationHandler > perturbHandler_
Pointer to the Perturbation Handler.
void SinvBlrmZPTdBr(Number alpha, const Vector &S, const Vector &R, const Vector &Z, const Matrix &P, const Vector &g, Vector &X)
Compute .
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:20
bool augsys_improved_
Flag indicating if for the current matrix the solution quality of the augmented system solver has alr...
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:171
void ComputeResiduals(const SymMatrix &W, const Matrix &J_c, const Matrix &J_d, const Matrix &Px_L, const Matrix &Px_U, const Matrix &Pd_L, const Matrix &Pd_U, const Vector &z_L, const Vector &z_U, const Vector &v_L, const Vector &v_U, const Vector &slack_x_L, const Vector &slack_x_U, const Vector &slack_s_L, const Vector &slack_s_U, const Vector &sigma_x, const Vector &sigma_s, Number alpha, Number beta, const IteratesVector &rhs, const IteratesVector &res, IteratesVector &resid)
Internal function for computing the residual (resid) given the right hand side (rhs) and the solution...
This class stores a list of user set options.
Base class for Solver for the augmented system.
virtual bool Solve(Number alpha, Number beta, const IteratesVector &rhs, IteratesVector &res, bool allow_inexact=false, bool improve_solution=false)
Solve the primal dual system, given one right hand side.
CachedResults< void * > dummy_cache_
A dummy cache to figure out if the deltas are still up to date.
Matrix Base Class.
Definition: IpMatrix.hpp:27
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:17
Number neg_curv_test_tol_
Tolerance for heuristic to ignore wrong inertia.
This is the implementation of the Primal-Dual System, using the full space approach with a direct lin...
SmartPtr< AugSystemSolver > augSysSolver_
Pointer to the Solver for the augmented system.
bool SolveOnce(bool resolve_unmodified, bool pretend_singular, const SymMatrix &W, const Matrix &J_c, const Matrix &J_d, const Matrix &Px_L, const Matrix &Px_U, const Matrix &Pd_L, const Matrix &Pd_U, const Vector &z_L, const Vector &z_U, const Vector &v_L, const Vector &v_U, const Vector &slack_x_L, const Vector &slack_x_U, const Vector &slack_s_L, const Vector &slack_s_U, const Vector &sigma_x, const Vector &sigma_s, Number alpha, Number beta, const IteratesVector &rhs, IteratesVector &res)
Internal function for a single backsolve (which will be used for iterative refinement on the outside)...
bool neg_curv_test_reg_
Do curvature test with primal regularization.
Number residual_ratio_max_
Maximal allowed ratio of the norm of the residual over the norm of the right hand side and solution...
Number residual_improvement_factor_
Factor defining require improvement to consider iterative refinement successful.
PDFullSpaceSolver & operator=(const PDFullSpaceSolver &)
Default Assignment Operator.
Index max_refinement_steps_
Maximal number of iterative refinement performed per backsolve.
Index min_refinement_steps_
Minimal number of iterative refinement performed per backsolve.