#include <IpPDPerturbationHandler.hpp>
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.
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. |
Default Constructor.
virtual ~PDPerturbationHandler | ( | ) | [inline, virtual] |
Default destructor.
bool 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 AlgorithmStrategyObject.
References OptionsList::GetNumericValue().
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.
References IpoptData::Append_info_string(), DBG_ASSERT, DBG_START_METH, AlgorithmStrategyObject::IpData(), and IpoptData::Set_info_regu_x().
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.
If the return value is false, no suitable perturbation could be found.
References IpoptData::Append_info_string(), DBG_ASSERT, DBG_START_METH, AlgorithmStrategyObject::IpData(), Ipopt::J_DETAILED, Ipopt::J_LINEAR_ALGEBRA, AlgorithmStrategyObject::Jnlst(), Journalist::Printf(), and IpoptData::Set_info_regu_x().
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.
If the return value is false, no suitable perturbation could be found.
References DBG_ASSERT, and DBG_START_METH.
Just return the perturbation values that have been determined most recently.
void RegisterOptions | ( | SmartPtr< RegisteredOptions > | roptions | ) | [static] |