Ipopt  3.12.13
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 // $Id$
6 //
7 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8 
9 #ifndef __IPPDFULLSPACESOLVER_HPP__
10 #define __IPPDFULLSPACESOLVER_HPP__
11 
12 #include "IpPDSystemSolver.hpp"
13 #include "IpAugSystemSolver.hpp"
15 
16 namespace Ipopt
17 {
18 
33  {
34  public:
41  PDPerturbationHandler& perturbHandler);
42 
44  virtual ~PDFullSpaceSolver();
46 
47  /* overloaded from AlgorithmStrategyObject */
48  bool InitializeImpl(const OptionsList& options,
49  const std::string& prefix);
50 
53  virtual bool Solve(Number alpha,
54  Number beta,
55  const IteratesVector& rhs,
56  IteratesVector& res,
57  bool allow_inexact=false,
58  bool improve_solution=false);
59 
64 
65  private:
79 
87 
96 
117 
119 
126  bool SolveOnce(bool resolve_unmodified,
127  bool pretend_singular,
128  const SymMatrix& W,
129  const Matrix& J_c,
130  const Matrix& J_d,
131  const Matrix& Px_L,
132  const Matrix& Px_U,
133  const Matrix& Pd_L,
134  const Matrix& Pd_U,
135  const Vector& z_L,
136  const Vector& z_U,
137  const Vector& v_L,
138  const Vector& v_U,
139  const Vector& slack_x_L,
140  const Vector& slack_x_U,
141  const Vector& slack_s_L,
142  const Vector& slack_s_U,
143  const Vector& sigma_x,
144  const Vector& sigma_s,
145  Number alpha,
146  Number beta,
147  const IteratesVector& rhs,
148  IteratesVector& res);
149 
154  const Matrix& J_c,
155  const Matrix& J_d,
156  const Matrix& Px_L,
157  const Matrix& Px_U,
158  const Matrix& Pd_L,
159  const Matrix& Pd_U,
160  const Vector& z_L,
161  const Vector& z_U,
162  const Vector& v_L,
163  const Vector& v_U,
164  const Vector& slack_x_L,
165  const Vector& slack_x_U,
166  const Vector& slack_s_L,
167  const Vector& slack_s_U,
168  const Vector& sigma_x,
169  const Vector& sigma_s,
170  Number alpha,
171  Number beta,
172  const IteratesVector& rhs,
173  const IteratesVector& res,
174  IteratesVector& resid);
175 
180  const IteratesVector& res,
181  const IteratesVector& resid);
182 
186  void SinvBlrmZPTdBr(Number alpha, const Vector& S,
187  const Vector& R, const Vector& Z,
188  const Matrix& P, const Vector&g, Vector& X);
190  };
191 
192 } // namespace Ipopt
193 
194 #endif
Number Number * g
Values of constraint at final point (output only - ignored if set to NULL)
Base class for Solver for the augmented system.
Specialized CompoundVector class specifically for the algorithm iterates.
Matrix Base Class.
Definition: IpMatrix.hpp:28
This class stores a list of user set options.
This is the implemetation of the Primal-Dual System, using the full space approach with a direct line...
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...
PDFullSpaceSolver()
Default Constructor.
Index max_refinement_steps_
Maximal number of iterative refinement performed per backsolve.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for IpoptType.
SmartPtr< AugSystemSolver > augSysSolver_
Pointer to the Solver for the augmented system.
bool augsys_improved_
Flag indicating if for the current matrix the solution quality of the augmented system solver has alr...
Number residual_ratio_singular_
If the residual_ratio is larger than this value after trying to improve the solution,...
bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
PDFullSpaceSolver & operator=(const PDFullSpaceSolver &)
Overloaded Equals Operator.
CachedResults< void * > dummy_cache_
A dummy cache to figure out if the deltas are still up to date.
Number residual_ratio_max_
Maximal allowed ratio of the norm of the residual over the norm of the right hand side and solution.
bool neg_curv_test_reg_
Do curvature test with primal regularization.
void SinvBlrmZPTdBr(Number alpha, const Vector &S, const Vector &R, const Vector &Z, const Matrix &P, const Vector &g, Vector &X)
Compute .
virtual ~PDFullSpaceSolver()
Default destructor.
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.
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...
SmartPtr< PDPerturbationHandler > perturbHandler_
Pointer to the Perturbation Handler.
PDFullSpaceSolver(AugSystemSolver &augSysSolver, PDPerturbationHandler &perturbHandler)
Constructor that takes in the Augmented System solver that is to be used inside.
Number residual_improvement_factor_
Factor defining require improvement to consider iterative refinement successful.
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)...
Number neg_curv_test_tol_
Tolernace for heuristic to ignore wrong inertia.
Index min_refinement_steps_
Minimal number of iterative refinement performed per backsolve.
Class for handling the perturbation factors delta_x, delta_s, delta_c, and delta_d in the primal dual...
Pure Primal Dual System Solver Base Class.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:173
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:24
Vector Base Class.
Definition: IpVector.hpp:48
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
double Number
Type of all numbers.
Definition: IpTypes.hpp:17