Ipopt Documentation  
 
Loading...
Searching...
No Matches
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
14namespace Ipopt
15{
16
31{
32public:
35
39 AugSystemSolver& augSysSolver,
40 PDPerturbationHandler& perturbHandler
41 );
42
46
47 /* overloaded from AlgorithmStrategyObject */
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
71private:
82
84
88 );
90
93
95
99
102
104
110
113
115
118
123
129
134
137
141
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
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
216
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
Base class for Solver for the augmented system.
Templated class for Cached Results.
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 implementation of the Primal-Dual System, using the full space approach with a direct lin...
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
CachedResults< void * > dummy_cache_
A dummy cache to figure out if the deltas are still up to date.
PDFullSpaceSolver & operator=(const PDFullSpaceSolver &)
Default Assignment Operator.
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_
Tolerance 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.
This is the base class for all derived symmetric matrix types.
Vector Base Class.
Definition IpVector.hpp:48
This file contains a base class for all exceptions and a set of macros to help with exceptions.
ipindex Index
Type of all indices of vectors, matrices etc.
Definition IpTypes.hpp:20
ipnumber Number
Type of all numbers.
Definition IpTypes.hpp:17