Ipopt 3.12.10

- Main Page
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
Public Member Functions | Private Member Functions | Private Attributes | List of all members
Ipopt::CGPerturbationHandler Class Reference

Class for handling the perturbation factors delta_x, delta_s, delta_c, and delta_d in the primal dual system. More...

`#include <IpCGPerturbationHandler.hpp>`

Inheritance diagram for Ipopt::CGPerturbationHandler:
[legend]

## Public Member Functions
virtual bool | InitializeImpl (const OptionsList &options, const std::string &prefix)
| Implementation of the initialization method that has to be overloaded by for each derived class. More...
bool | ConsiderNewSystem (Number &delta_x, Number &delta_s, Number &delta_c, Number &delta_d)
| This method must be called for each new matrix, and before any other method for generating perturbation factors. More...
bool | PerturbForSingularity (Number &delta_x, Number &delta_s, Number &delta_c, Number &delta_d)
| This method returns pertubation factors for the case when the most recent factorization resulted in a singular matrix. More...
bool | PerturbForWrongInertia (Number &delta_x, Number &delta_s, Number &delta_c, Number &delta_d)
| This method returns pertubation factors for the case when the most recent factorization resulted in a matrix with an incorrect number of negative eigenvalues. More...
void | CurrentPerturbation (Number &delta_x, Number &delta_s, Number &delta_c, Number &delta_d)
| Just return the perturbation values that have been determined most recently. More...
Constructors/Destructors
| CGPerturbationHandler ()
| Default Constructor. More...
virtual | ~CGPerturbationHandler ()
| Default destructor. More...
Public Member Functions inherited from Ipopt::PDPerturbationHandler
| PDPerturbationHandler ()
| Default Constructor. More...
virtual | ~PDPerturbationHandler ()
| Default destructor. More...
Public Member Functions inherited from Ipopt::AlgorithmStrategyObject
bool | Initialize (const Journalist &jnlst, IpoptNLP &ip_nlp, IpoptData &ip_data, IpoptCalculatedQuantities &ip_cq, const OptionsList &options, const std::string &prefix)
| This method is called every time the algorithm starts again - it is used to reset any internal state. More...
bool | ReducedInitialize (const Journalist &jnlst, const OptionsList &options, const std::string &prefix)
| Reduced version of the Initialize method, which does not require special Ipopt information. More...
| AlgorithmStrategyObject ()
| Default Constructor. More...
virtual | ~AlgorithmStrategyObject ()
| Default Destructor. More...
Public Member Functions inherited from Ipopt::ReferencedObject
| ReferencedObject ()
virtual | ~ReferencedObject ()
Index | ReferenceCount () const
void | AddRef (const Referencer *referencer) const
void | ReleaseRef (const Referencer *referencer) const

## Static Public Member Functions
static void | RegisterOptions (SmartPtr< RegisteredOptions > roptions)
| Methods for IpoptType. More...
Static Public Member Functions inherited from Ipopt::PDPerturbationHandler
static void | RegisterOptions (SmartPtr< RegisteredOptions > roptions)
| Methods for IpoptType. More...

## Private Member Functions
CGPenaltyData & | CGPenData ()
| Method to easily access CGPenalty data. More...
CGPenaltyCq & | CGPenCq ()
| Method to easily access CGPenalty calculated quantities. More...
Default Compiler Generated Methods
(Hidden to avoid implicit creation/calling). These methods are not implemented and we do not want the compiler to implement them for us, so we declare them private and do not define them. This ensures that they will not be implicitly created/called.
| CGPerturbationHandler (const CGPerturbationHandler &)
| Copy Constructor. More...
void | operator= (const CGPerturbationHandler &)
| Overloaded Equals Operator. More...
Auxilliary methods
bool | get_deltas_for_wrong_inertia (Number &delta_x, Number &delta_s, Number &delta_c, Number &delta_d)
| Internal version of PerturbForWrongInertia with the difference, that finalize_test is not called. More...
void | finalize_test ()
| This method is call whenever a matrix had been factorization and is not singular. More...
Number | delta_cd ()
| Compute perturbation value for constraints. More...

## Private Attributes
bool | get_deltas_for_wrong_inertia_called_
| Flag indicating if for the given matrix the perturb for wrong inertia method has already been called. More...
Number | penalty_max_
| The max reference value for scaling the penalty parameter. More...
Number | mult_diverg_feasibility_tol_
| Feasibility for perturbation in pure Newton method. More...
Size of the most recent non-zero perturbation.
Number | delta_x_last_
| The last nonzero value for delta_x. More...
Number | delta_s_last_
| The last nonzero value for delta_s. More...
Number | delta_c_last_
| The last nonzero value for delta_c. More...
Number | delta_d_last_
| The last nonzero value for delta_d. More...
Size of the most recently suggested perturbation for the
current matrix.
Number | delta_x_curr_
| The current value for delta_x. More...
Number | delta_s_curr_
| The current value for delta_s. More...
Number | delta_c_curr_
| The current value for delta_c. More...
Number | delta_d_curr_
| The current value for delta_d. More...
Algorithmic parameters.
Number | delta_xs_max_
| Maximal perturbation for x and s. More...
Number | delta_xs_min_
| Smallest possible perturbation for x and s. More...
Number | delta_xs_first_inc_fact_
| Increase factor for delta_xs for first required perturbation. More...
Number | delta_xs_inc_fact_
| Increase factor for delta_xs for later perturbations. More...
Number | delta_xs_dec_fact_
| Decrease factor for delta_xs for later perturbations. More...
Number | delta_xs_init_
| Very first trial value for delta_xs perturbation. More...
Number | delta_cd_val_
| Size of perturbation for c and d blocks. More...
Number | delta_cd_exp_
| Exponent on mu in formula for of perturbation for c and d blocks. More...
bool | reset_last_
| Flag indicating whether the new values are based on the perturbations in the last iteration or in the more recent iteration in which a perturbation was done. More...
Index | degen_iters_max_
| Required number of iterations for degeneracy conclusions. More...
bool | perturb_always_cd_
| Flag indicating that the delta_c, delta_d perturbation should always be used. More...

## Handling structural degeneracy
enum | DegenType { NOT_YET_DETERMINED, NOT_DEGENERATE, DEGENERATE }
| Type for degeneracy flags. More...
enum | TrialStatus { NO_TEST, TEST_DELTA_C_EQ_0_DELTA_X_EQ_0, TEST_DELTA_C_GT_0_DELTA_X_EQ_0, TEST_DELTA_C_EQ_0_DELTA_X_GT_0, TEST_DELTA_C_GT_0_DELTA_X_GT_0 }
| Status of current trial configuration. More...
DegenType | hess_degenerate_
| Flag indicating whether the reduced Hessian matrix is thought to be structurally singular. More...
DegenType | jac_degenerate_
| Flag indicating whether the Jacobian of the constraints is thought to be structurally rank-deficient. More...
Index | degen_iters_
| Flag counting matrices in which degeneracy was observed in the first successive iterations. More...
TrialStatus | test_status_
| Current status. More...

## Additional Inherited Members
Protected Types inherited from Ipopt::PDPerturbationHandler
enum | DegenType { NOT_YET_DETERMINED, NOT_DEGENERATE, DEGENERATE }
| Type for degeneracy flags. More...
enum | TrialStatus { NO_TEST, TEST_DELTA_C_EQ_0_DELTA_X_EQ_0, TEST_DELTA_C_GT_0_DELTA_X_EQ_0, TEST_DELTA_C_EQ_0_DELTA_X_GT_0, TEST_DELTA_C_GT_0_DELTA_X_GT_0 }
| Status of current trial configuration. More...
Protected Member Functions inherited from Ipopt::PDPerturbationHandler
| PDPerturbationHandler (const PDPerturbationHandler &)
| Copy Constructor. More...
void | operator= (const PDPerturbationHandler &)
| Overloaded Equals Operator. More...
bool | get_deltas_for_wrong_inertia (Number &delta_x, Number &delta_s, Number &delta_c, Number &delta_d)
| Internal version of PerturbForWrongInertia with the difference, that finalize_test is not called. More...
void | finalize_test ()
| This method is call whenever a matrix had been factorization and is not singular. More...
Number | delta_cd ()
| Compute perturbation value for constraints. More...
Protected Member Functions inherited from Ipopt::AlgorithmStrategyObject
const Journalist & | Jnlst () const
IpoptNLP & | IpNLP () const
IpoptData & | IpData () const
IpoptCalculatedQuantities & | IpCq () const
bool | HaveIpData () const
Protected Attributes inherited from Ipopt::PDPerturbationHandler
bool | get_deltas_for_wrong_inertia_called_
| Flag indicating if for the given matrix the perturb for wrong inertia method has already been called. More...
Number | delta_x_last_
| The last nonzero value for delta_x. More...
Number | delta_s_last_
| The last nonzero value for delta_s. More...
Number | delta_c_last_
| The last nonzero value for delta_c. More...
Number | delta_d_last_
| The last nonzero value for delta_d. More...
Number | delta_x_curr_
| The current value for delta_x. More...
Number | delta_s_curr_
| The current value for delta_s. More...
Number | delta_c_curr_
| The current value for delta_c. More...
Number | delta_d_curr_
| The current value for delta_d. More...
Number | delta_xs_max_
| Maximal perturbation for x and s. More...
Number | delta_xs_min_
| Smallest possible perturbation for x and s. More...
Number | delta_xs_first_inc_fact_
| Increase factor for delta_xs for first required perturbation. More...
Number | delta_xs_inc_fact_
| Increase factor for delta_xs for later perturbations. More...
Number | delta_xs_dec_fact_
| Decrease factor for delta_xs for later perturbations. More...
Number | delta_xs_init_
| Very first trial value for delta_xs perturbation. More...
Number | delta_cd_val_
| Size of perturbation for c and d blocks. More...
Number | delta_cd_exp_
| Exponent on mu in formula for of perturbation for c and d blocks. More...
bool | reset_last_
| Flag indicating whether the new values are based on the perturbations in the last iteration or in the more recent iteration in which a perturbation was done. More...
Index | degen_iters_max_
| Required number of iterations for degeneracy conclusions. More...
bool | perturb_always_cd_
| Flag indicating that the delta_c, delta_d perturbation should always be used. More...
DegenType | hess_degenerate_
| Flag indicating whether the reduced Hessian matrix is thought to be structurally singular. More...
DegenType | jac_degenerate_
| Flag indicating whether the Jacobian of the constraints is thought to be structurally rank-deficient. More...
Index | degen_iters_
| Flag counting matrices in which degeneracy was observed in the first successive iterations. More...
TrialStatus | test_status_
| Current status. More...

## Detailed Description

Class for handling the perturbation factors delta_x, delta_s, delta_c, and delta_d in the primal dual system.

This class is used by the PDFullSpaceSolver to handle the cases where the primal-dual system is singular or has the wrong inertia. The perturbation factors are obtained based on simple heuristics, taking into account the size of previous perturbations.

Definition at line 25 of file IpCGPerturbationHandler.hpp.

## Member Enumeration Documentation

enum Ipopt::CGPerturbationHandler::DegenType
| private

Type for degeneracy flags.

Enumerator
NOT_YET_DETERMINED |
NOT_DEGENERATE |
DEGENERATE |

Definition at line 140 of file IpCGPerturbationHandler.hpp.

enum Ipopt::CGPerturbationHandler::TrialStatus
| private

Status of current trial configuration.

Enumerator
NO_TEST |
TEST_DELTA_C_EQ_0_DELTA_X_EQ_0 |
TEST_DELTA_C_GT_0_DELTA_X_EQ_0 |
TEST_DELTA_C_EQ_0_DELTA_X_GT_0 |
TEST_DELTA_C_GT_0_DELTA_X_GT_0 |

Definition at line 161 of file IpCGPerturbationHandler.hpp.

## Constructor & Destructor Documentation

Ipopt::CGPerturbationHandler::CGPerturbationHandler | ( |  | ) |

Default Constructor.

virtual Ipopt::CGPerturbationHandler::~CGPerturbationHandler | ( |  | ) |
| inline virtual

Default destructor.

Definition at line 33 of file IpCGPerturbationHandler.hpp.

Ipopt::CGPerturbationHandler::CGPerturbationHandler | ( | const CGPerturbationHandler & |  | ) |
| private

Copy Constructor.

## Member Function Documentation

virtual bool Ipopt::CGPerturbationHandler::InitializeImpl | ( | const OptionsList & | options,
|  | const std::string & | prefix
| ) |  |
| virtual

Implementation of the initialization method that has to be overloaded by for each derived class.

Reimplemented from Ipopt::PDPerturbationHandler.

bool Ipopt::CGPerturbationHandler::ConsiderNewSystem | ( | Number & | delta_x,
|  | Number & | delta_s,
|  | Number & | delta_c,
|  | Number & | delta_d
| ) |  |
| virtual

This method must be called for each new matrix, and before any other method for generating perturbation factors.

Usually, the returned perturbation factors are zero, but if the system is thought to be structurally singular, they might be positive. If the return value is false, no suitable perturbation could be found.

Reimplemented from Ipopt::PDPerturbationHandler.

bool Ipopt::CGPerturbationHandler::PerturbForSingularity | ( | Number & | delta_x,
|  | Number & | delta_s,
|  | Number & | delta_c,
|  | Number & | delta_d
| ) |  |
| virtual

This method returns pertubation factors for the case when the most recent factorization resulted in a singular matrix.

If the return value is false, no suitable perturbation could be found.

Reimplemented from Ipopt::PDPerturbationHandler.

bool Ipopt::CGPerturbationHandler::PerturbForWrongInertia | ( | Number & | delta_x,
|  | Number & | delta_s,
|  | Number & | delta_c,
|  | Number & | delta_d
| ) |  |
| virtual

This method returns pertubation factors for the case when the most recent factorization resulted in a matrix with an incorrect number of negative eigenvalues.

If the return value is false, no suitable perturbation could be found.

Reimplemented from Ipopt::PDPerturbationHandler.

void Ipopt::CGPerturbationHandler::CurrentPerturbation | ( | Number & | delta_x,
|  | Number & | delta_s,
|  | Number & | delta_c,
|  | Number & | delta_d
| ) |  |
| virtual

Just return the perturbation values that have been determined most recently.

Reimplemented from Ipopt::PDPerturbationHandler.

static void Ipopt::CGPerturbationHandler::RegisterOptions | ( | SmartPtr< RegisteredOptions > | roptions | ) |
| static

Methods for IpoptType.

void Ipopt::CGPerturbationHandler::operator= | ( | const CGPerturbationHandler & |  | ) |
| private

Overloaded Equals Operator.

CGPenaltyData& Ipopt::CGPerturbationHandler::CGPenData | ( |  | ) |
| inline private

Method to easily access CGPenalty data.

Definition at line 91 of file IpCGPerturbationHandler.hpp.

CGPenaltyCq& Ipopt::CGPerturbationHandler::CGPenCq | ( |  | ) |
| inline private

Method to easily access CGPenalty calculated quantities.

Definition at line 100 of file IpCGPerturbationHandler.hpp.

bool Ipopt::CGPerturbationHandler::get_deltas_for_wrong_inertia | ( | Number & | delta_x,
|  | Number & | delta_s,
|  | Number & | delta_c,
|  | Number & | delta_d
| ) |  |
| private

Internal version of PerturbForWrongInertia with the difference, that finalize_test is not called.

Returns false if the delta_x and delta_s parameters become too large.

void Ipopt::CGPerturbationHandler::finalize_test | ( |  | ) |
| private

This method is call whenever a matrix had been factorization and is not singular.

In here, we can evaluate the outcome of the deneracy test heuristics.

Number Ipopt::CGPerturbationHandler::delta_cd | ( |  | ) |
| private

Compute perturbation value for constraints.

## Member Data Documentation

Number Ipopt::CGPerturbationHandler::delta_x_last_
| private

The last nonzero value for delta_x.

Definition at line 111 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_s_last_
| private

The last nonzero value for delta_s.

Definition at line 113 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_c_last_
| private

The last nonzero value for delta_c.

Definition at line 115 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_d_last_
| private

The last nonzero value for delta_d.

Definition at line 117 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_x_curr_
| private

The current value for delta_x.

Definition at line 124 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_s_curr_
| private

The current value for delta_s.

Definition at line 126 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_c_curr_
| private

The current value for delta_c.

Definition at line 128 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_d_curr_
| private

The current value for delta_d.

Definition at line 130 of file IpCGPerturbationHandler.hpp.

bool Ipopt::CGPerturbationHandler::get_deltas_for_wrong_inertia_called_
| private

Flag indicating if for the given matrix the perturb for wrong inertia method has already been called.

Definition at line 135 of file IpCGPerturbationHandler.hpp.

DegenType Ipopt::CGPerturbationHandler::hess_degenerate_
| private

Flag indicating whether the reduced Hessian matrix is thought to be structurally singular.

Definition at line 149 of file IpCGPerturbationHandler.hpp.

DegenType Ipopt::CGPerturbationHandler::jac_degenerate_
| private

Flag indicating whether the Jacobian of the constraints is thought to be structurally rank-deficient.

Definition at line 153 of file IpCGPerturbationHandler.hpp.

Index Ipopt::CGPerturbationHandler::degen_iters_
| private

Flag counting matrices in which degeneracy was observed in the first successive iterations.

-1 means that there was a non-degenerate (unperturbed) matrix at some point.

Definition at line 158 of file IpCGPerturbationHandler.hpp.

TrialStatus Ipopt::CGPerturbationHandler::test_status_
| private

Current status.

Definition at line 171 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_xs_max_
| private

Maximal perturbation for x and s.

Definition at line 177 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_xs_min_
| private

Smallest possible perturbation for x and s.

Definition at line 179 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_xs_first_inc_fact_
| private

Increase factor for delta_xs for first required perturbation.

Definition at line 181 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_xs_inc_fact_
| private

Increase factor for delta_xs for later perturbations.

Definition at line 183 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_xs_dec_fact_
| private

Decrease factor for delta_xs for later perturbations.

Definition at line 185 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_xs_init_
| private

Very first trial value for delta_xs perturbation.

Definition at line 187 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_cd_val_
| private

Size of perturbation for c and d blocks.

Definition at line 189 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::delta_cd_exp_
| private

Exponent on mu in formula for of perturbation for c and d blocks.

Definition at line 191 of file IpCGPerturbationHandler.hpp.

bool Ipopt::CGPerturbationHandler::reset_last_
| private

Flag indicating whether the new values are based on the perturbations in the last iteration or in the more recent iteration in which a perturbation was done.

Definition at line 195 of file IpCGPerturbationHandler.hpp.

Index Ipopt::CGPerturbationHandler::degen_iters_max_
| private

Required number of iterations for degeneracy conclusions.

Definition at line 197 of file IpCGPerturbationHandler.hpp.

bool Ipopt::CGPerturbationHandler::perturb_always_cd_
| private

Flag indicating that the delta_c, delta_d perturbation should always be used.

Definition at line 200 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::penalty_max_
| private

The max reference value for scaling the penalty parameter.

Definition at line 204 of file IpCGPerturbationHandler.hpp.

Number Ipopt::CGPerturbationHandler::mult_diverg_feasibility_tol_
| private

Feasibility for perturbation in pure Newton method.

Definition at line 206 of file IpCGPerturbationHandler.hpp.

The documentation for this class was generated from the following file:

- src/contrib/CGPenalty/IpCGPerturbationHandler.hpp