- Main Page
- Namespaces
- Classes
- Files

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# Ipopt::PDPerturbationHandler Class Reference

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

`#include <IpPDPerturbationHandler.hpp>`

Inheritance diagram for Ipopt::PDPerturbationHandler:

[legend]
Collaboration diagram for Ipopt::PDPerturbationHandler:

[legend]
List of all members.

## 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.
DegenType | jac_degenerate_
| Flag indicating whether the Jacobian of the constraints is thought to be structurally rank-deficient.
Index | degen_iters_
| Flag counting matrices in which degeneracy was observed in the first successive iterations.
TrialStatus | test_status_
| Current status.
## 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.
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.
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.
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.
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.
Constructors/Destructors
| PDPerturbationHandler ()
| Default Constructor.
virtual | ~PDPerturbationHandler ()
| Default destructor.
## Static Public Member Functions
static void | RegisterOptions (SmartPtr< RegisteredOptions > roptions)
| Methods for IpoptType.
## Private Member Functions
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.
| PDPerturbationHandler (const PDPerturbationHandler &)
| Copy Constructor.
void | operator= (const PDPerturbationHandler &)
| Overloaded Equals Operator.
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.
void | finalize_test ()
| This method is call whenever a matrix had been factorization and is not singular.
Number | delta_cd ()
| Compute perturbation value for constraints.
## 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.
Size of the most recent non-zero perturbation.
Number | delta_x_last_
| The last nonzero value for delta_x.
Number | delta_s_last_
| The last nonzero value for delta_s.
Number | delta_c_last_
| The last nonzero value for delta_c.
Number | delta_d_last_
| The last nonzero value for delta_d.
Size of the most recently suggested perturbation for the
current matrix.
Number | delta_x_curr_
| The current value for delta_x.
Number | delta_s_curr_
| The current value for delta_s.
Number | delta_c_curr_
| The current value for delta_c.
Number | delta_d_curr_
| The current value for delta_d.
Algorithmic parameters.
Number | delta_xs_max_
| Maximal perturbation for x and s.
Number | delta_xs_min_
| Smallest possible perturbation for x and s.
Number | delta_xs_first_inc_fact_
| Increase factor for delta_xs for first required perturbation.
Number | delta_xs_inc_fact_
| Increase factor for delta_xs for later perturbations.
Number | delta_xs_dec_fact_
| Decrease factor for delta_xs for later perturbations.
Number | delta_xs_init_
| Very first trial value for delta_xs perturbation.
Number | delta_cd_val_
| Size of perturbation for c and d blocks.
Number | delta_cd_exp_
| Exponent on mu in formula for of perturbation for c and d blocks.
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.
Index | degen_iters_max_
| Required number of iterations for degeneracy conclusions.

## 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 24 of file IpPDPerturbationHandler.hpp.

## Member Enumeration Documentation

enum Ipopt::PDPerturbationHandler::DegenType`[private]`

Type for degeneracy flags.

Enumerator:

  NOT_YET_DETERMINED |
  NOT_DEGENERATE |
  DEGENERATE |

Definition at line 121 of file IpPDPerturbationHandler.hpp.

enum Ipopt::PDPerturbationHandler::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 141 of file IpPDPerturbationHandler.hpp.

## Constructor & Destructor Documentation

Ipopt::PDPerturbationHandler::PDPerturbationHandler | ( |  | ) |

Default Constructor.

virtual Ipopt::PDPerturbationHandler::~PDPerturbationHandler | ( |  | ) | `[inline, virtual]`

Default destructor.

Definition at line 32 of file IpPDPerturbationHandler.hpp.

Ipopt::PDPerturbationHandler::PDPerturbationHandler | ( | const PDPerturbationHandler & |  | ) | `[private]`

Copy Constructor.

## Member Function Documentation

virtual bool Ipopt::PDPerturbationHandler::InitializeImpl | ( | const OptionsList & | options,
|  | const std::string & | prefix |
| ) |  |  | `[virtual]`

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

Implements Ipopt::AlgorithmStrategyObject.

bool Ipopt::PDPerturbationHandler::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.

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.

bool Ipopt::PDPerturbationHandler::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.

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

bool Ipopt::PDPerturbationHandler::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.

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

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

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

static void Ipopt::PDPerturbationHandler::RegisterOptions | ( | SmartPtr< RegisteredOptions > | roptions | ) | `[static]`

Methods for IpoptType.

void Ipopt::PDPerturbationHandler::operator= | ( | const PDPerturbationHandler & |  | ) | `[private]`

Overloaded Equals Operator.

bool Ipopt::PDPerturbationHandler::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::PDPerturbationHandler::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::PDPerturbationHandler::delta_cd | ( |  | ) | `[private]`

Compute perturbation value for constraints.

## Member Data Documentation

Number Ipopt::PDPerturbationHandler::delta_x_last_`[private]`

The last nonzero value for delta_x.

Definition at line 92 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_s_last_`[private]`

The last nonzero value for delta_s.

Definition at line 94 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_c_last_`[private]`

The last nonzero value for delta_c.

Definition at line 96 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_d_last_`[private]`

The last nonzero value for delta_d.

Definition at line 98 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_x_curr_`[private]`

The current value for delta_x.

Definition at line 105 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_s_curr_`[private]`

The current value for delta_s.

Definition at line 107 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_c_curr_`[private]`

The current value for delta_c.

Definition at line 109 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_d_curr_`[private]`

The current value for delta_d.

Definition at line 111 of file IpPDPerturbationHandler.hpp.

bool Ipopt::PDPerturbationHandler::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 116 of file IpPDPerturbationHandler.hpp.

DegenType Ipopt::PDPerturbationHandler::hess_degenerate_`[private]`

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

Definition at line 129 of file IpPDPerturbationHandler.hpp.

DegenType Ipopt::PDPerturbationHandler::jac_degenerate_`[private]`

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

Definition at line 133 of file IpPDPerturbationHandler.hpp.

Index Ipopt::PDPerturbationHandler::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 138 of file IpPDPerturbationHandler.hpp.

TrialStatus Ipopt::PDPerturbationHandler::test_status_`[private]`

Current status.

Definition at line 150 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_xs_max_`[private]`

Maximal perturbation for x and s.

Definition at line 156 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_xs_min_`[private]`

Smallest possible perturbation for x and s.

Definition at line 158 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_xs_first_inc_fact_`[private]`

Increase factor for delta_xs for first required perturbation.

Definition at line 160 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_xs_inc_fact_`[private]`

Increase factor for delta_xs for later perturbations.

Definition at line 162 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_xs_dec_fact_`[private]`

Decrease factor for delta_xs for later perturbations.

Definition at line 164 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_xs_init_`[private]`

Very first trial value for delta_xs perturbation.

Definition at line 166 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_cd_val_`[private]`

Size of perturbation for c and d blocks.

Definition at line 168 of file IpPDPerturbationHandler.hpp.

Number Ipopt::PDPerturbationHandler::delta_cd_exp_`[private]`

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

Definition at line 170 of file IpPDPerturbationHandler.hpp.

bool Ipopt::PDPerturbationHandler::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 174 of file IpPDPerturbationHandler.hpp.

Index Ipopt::PDPerturbationHandler::degen_iters_max_`[private]`

Required number of iterations for degeneracy conclusions.

Definition at line 176 of file IpPDPerturbationHandler.hpp.

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

- /home/coin/SVN-release/Ipopt-3.2.1/Ipopt/src/Algorithm/IpPDPerturbationHandler.hpp