Ipopt Documentation  
 
Loading...
Searching...
No Matches
Ipopt::QualityFunctionMuOracle Class Reference

Implementation of the probing strategy for computing the barrier parameter. More...

#include <IpQualityFunctionMuOracle.hpp>

+ Inheritance diagram for Ipopt::QualityFunctionMuOracle:

Public Types

Public enums.

Some of those are also used for the quality function.

enum  NormEnum { NM_NORM_1 = 0 , NM_NORM_2_SQUARED , NM_NORM_MAX , NM_NORM_2 }
 enum for norm type More...
 
enum  CentralityEnum { CEN_NONE = 0 , CEN_LOG , CEN_RECIPROCAL , CEN_CUBED_RECIPROCAL }
 enum for centrality type More...
 
enum  BalancingTermEnum { BT_NONE = 0 , BT_CUBIC }
 enum for the quality function balancing term type More...
 

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.
 
virtual bool CalculateMu (Number mu_min, Number mu_max, Number &new_mu)
 Method for computing the value of the barrier parameter that could be used in the current iteration (using the LOQO formula).
 
Constructors/Destructors
 QualityFunctionMuOracle (const SmartPtr< PDSystemSolver > &pd_solver)
 Constructor.
 
virtual ~QualityFunctionMuOracle ()
 Destructor.
 
- Public Member Functions inherited from Ipopt::MuOracle
 MuOracle ()
 Default Constructor.
 
virtual ~MuOracle ()
 Destructor.
 
- 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.
 
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.
 
 AlgorithmStrategyObject ()
 Default Constructor.
 
virtual ~AlgorithmStrategyObject ()
 Destructor.
 
- 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)
 

Private Member Functions

Number CalculateQualityFunction (Number sigma, const Vector &step_aff_x_L, const Vector &step_aff_x_U, const Vector &step_aff_s_L, const Vector &step_aff_s_U, const Vector &step_aff_y_c, const Vector &step_aff_y_d, const Vector &step_aff_z_L, const Vector &step_aff_z_U, const Vector &step_aff_v_L, const Vector &step_aff_v_U, const Vector &step_cen_x_L, const Vector &step_cen_x_U, const Vector &step_cen_s_L, const Vector &step_cen_s_U, const Vector &step_cen_y_c, const Vector &step_cen_y_d, const Vector &step_cen_z_L, const Vector &step_cen_z_U, const Vector &step_cen_v_L, const Vector &step_cen_v_U)
 Auxiliary function for computing the average complementarity at a point, given step sizes and step.
 
Number PerformGoldenSection (Number sigma_up, Number q_up, Number sigma_lo, Number q_lo, Number sigma_tol, Number qf_tol, const Vector &step_aff_x_L, const Vector &step_aff_x_U, const Vector &step_aff_s_L, const Vector &step_aff_s_U, const Vector &step_aff_y_c, const Vector &step_aff_y_d, const Vector &step_aff_z_L, const Vector &step_aff_z_U, const Vector &step_aff_v_L, const Vector &step_aff_v_U, const Vector &step_cen_x_L, const Vector &step_cen_x_U, const Vector &step_cen_s_L, const Vector &step_cen_s_U, const Vector &step_cen_y_c, const Vector &step_cen_y_d, const Vector &step_cen_z_L, const Vector &step_cen_z_U, const Vector &step_cen_v_L, const Vector &step_cen_v_U)
 Auxiliary function performing the golden section.
 
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.

 QualityFunctionMuOracle ()
 Default Constructor.
 
 QualityFunctionMuOracle (const QualityFunctionMuOracle &)
 Copy Constructor.
 
void operator= (const QualityFunctionMuOracle &)
 Default Assignment Operator.
 
Number ScaleSigma (Number sigma)
 Auxiliary functions for scaling the sigma axis in the golden section procedure.
 
Number UnscaleSigma (Number scaled_sigma)
 

Private Attributes

SmartPtr< PDSystemSolverpd_solver_
 Pointer to the object that should be used to solve the primal-dual system.
 
Index count_qf_evals_
 
Algorithmic parameters

Auxiliary function performing the golden section in the logarithmic scale

Number sigma_max_
 Upper bound on centering parameter sigma.
 
Number sigma_min_
 Lower bound on centering parameter sigma.
 
NormEnum quality_function_norm_
 Norm to be used for the quality function.
 
CentralityEnum quality_function_centrality_
 Flag indicating how centrality should be involved in the quality function.
 
BalancingTermEnum quality_function_balancing_term_
 Flag indicating whether we use a balancing term in the quality function.
 
Number quality_function_section_sigma_tol_
 Relative tolerance for golden bi-section algorithm in sigma space.
 
Number quality_function_section_qf_tol_
 Relative tolerance for golden bi-section algorithm in function value space.
 
Index quality_function_max_section_steps_
 Maximal number of bi-section steps in the golden section search for sigma.
 
Temporary work space vectors.

We use those to avoid repeated reallocation in CalculateQualityFunction.

SmartPtr< Vectortmp_step_x_L_
 
SmartPtr< Vectortmp_step_x_U_
 
SmartPtr< Vectortmp_step_s_L_
 
SmartPtr< Vectortmp_step_s_U_
 
SmartPtr< Vectortmp_step_z_L_
 
SmartPtr< Vectortmp_step_z_U_
 
SmartPtr< Vectortmp_step_v_L_
 
SmartPtr< Vectortmp_step_v_U_
 
SmartPtr< Vectortmp_slack_x_L_
 
SmartPtr< Vectortmp_slack_x_U_
 
SmartPtr< Vectortmp_slack_s_L_
 
SmartPtr< Vectortmp_slack_s_U_
 
SmartPtr< Vectortmp_z_L_
 
SmartPtr< Vectortmp_z_U_
 
SmartPtr< Vectortmp_v_L_
 
SmartPtr< Vectortmp_v_U_
 
Quantities used many times in CalculateQualityFunction,

which we store here instead of retrieving them from cache every time.

I (AW) don't know if that really makes a difference, but some of those things showed up in gprof.

bool initialized_
 
Index n_dual_
 
Index n_pri_
 
Index n_comp_
 
SmartPtr< const Vectorcurr_slack_x_L_
 
SmartPtr< const Vectorcurr_slack_x_U_
 
SmartPtr< const Vectorcurr_slack_s_L_
 
SmartPtr< const Vectorcurr_slack_s_U_
 
SmartPtr< const Vectorcurr_z_L_
 
SmartPtr< const Vectorcurr_z_U_
 
SmartPtr< const Vectorcurr_v_L_
 
SmartPtr< const Vectorcurr_v_U_
 
Number curr_grad_lag_x_asum_
 
Number curr_grad_lag_s_asum_
 
Number curr_c_asum_
 
Number curr_d_minus_s_asum_
 
Number curr_grad_lag_x_nrm2_
 
Number curr_grad_lag_s_nrm2_
 
Number curr_c_nrm2_
 
Number curr_d_minus_s_nrm2_
 
Number curr_grad_lag_x_amax_
 
Number curr_grad_lag_s_amax_
 
Number curr_c_amax_
 
Number curr_d_minus_s_amax_
 

Additional Inherited Members

- Protected Member Functions inherited from Ipopt::AlgorithmStrategyObject
const JournalistJnlst () const
 
IpoptNLPIpNLP () const
 
IpoptDataIpData () const
 
IpoptCalculatedQuantitiesIpCq () const
 
bool HaveIpData () const
 

Detailed Description

Implementation of the probing strategy for computing the barrier parameter.

Definition at line 20 of file IpQualityFunctionMuOracle.hpp.

Member Enumeration Documentation

◆ NormEnum

enum for norm type

Enumerator
NM_NORM_1 
NM_NORM_2_SQUARED 
NM_NORM_MAX 
NM_NORM_2 

Definition at line 58 of file IpQualityFunctionMuOracle.hpp.

◆ CentralityEnum

enum for centrality type

Enumerator
CEN_NONE 
CEN_LOG 
CEN_RECIPROCAL 
CEN_CUBED_RECIPROCAL 

Definition at line 67 of file IpQualityFunctionMuOracle.hpp.

◆ BalancingTermEnum

enum for the quality function balancing term type

Enumerator
BT_NONE 
BT_CUBIC 

Definition at line 76 of file IpQualityFunctionMuOracle.hpp.

Constructor & Destructor Documentation

◆ QualityFunctionMuOracle() [1/3]

Ipopt::QualityFunctionMuOracle::QualityFunctionMuOracle ( const SmartPtr< PDSystemSolver > &  pd_solver)

Constructor.

◆ ~QualityFunctionMuOracle()

virtual Ipopt::QualityFunctionMuOracle::~QualityFunctionMuOracle ( )
virtual

Destructor.

◆ QualityFunctionMuOracle() [2/3]

Ipopt::QualityFunctionMuOracle::QualityFunctionMuOracle ( )
private

Default Constructor.

◆ QualityFunctionMuOracle() [3/3]

Ipopt::QualityFunctionMuOracle::QualityFunctionMuOracle ( const QualityFunctionMuOracle )
private

Copy Constructor.

Member Function Documentation

◆ InitializeImpl()

virtual bool Ipopt::QualityFunctionMuOracle::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::MuOracle.

◆ CalculateMu()

virtual bool Ipopt::QualityFunctionMuOracle::CalculateMu ( Number  mu_min,
Number  mu_max,
Number new_mu 
)
virtual

Method for computing the value of the barrier parameter that could be used in the current iteration (using the LOQO formula).

Implements Ipopt::MuOracle.

◆ RegisterOptions()

static void Ipopt::QualityFunctionMuOracle::RegisterOptions ( SmartPtr< RegisteredOptions roptions)
static

◆ operator=()

void Ipopt::QualityFunctionMuOracle::operator= ( const QualityFunctionMuOracle )
private

Default Assignment Operator.

◆ CalculateQualityFunction()

Number Ipopt::QualityFunctionMuOracle::CalculateQualityFunction ( Number  sigma,
const Vector step_aff_x_L,
const Vector step_aff_x_U,
const Vector step_aff_s_L,
const Vector step_aff_s_U,
const Vector step_aff_y_c,
const Vector step_aff_y_d,
const Vector step_aff_z_L,
const Vector step_aff_z_U,
const Vector step_aff_v_L,
const Vector step_aff_v_U,
const Vector step_cen_x_L,
const Vector step_cen_x_U,
const Vector step_cen_s_L,
const Vector step_cen_s_U,
const Vector step_cen_y_c,
const Vector step_cen_y_d,
const Vector step_cen_z_L,
const Vector step_cen_z_U,
const Vector step_cen_v_L,
const Vector step_cen_v_U 
)
private

Auxiliary function for computing the average complementarity at a point, given step sizes and step.

◆ PerformGoldenSection()

Number Ipopt::QualityFunctionMuOracle::PerformGoldenSection ( Number  sigma_up,
Number  q_up,
Number  sigma_lo,
Number  q_lo,
Number  sigma_tol,
Number  qf_tol,
const Vector step_aff_x_L,
const Vector step_aff_x_U,
const Vector step_aff_s_L,
const Vector step_aff_s_U,
const Vector step_aff_y_c,
const Vector step_aff_y_d,
const Vector step_aff_z_L,
const Vector step_aff_z_U,
const Vector step_aff_v_L,
const Vector step_aff_v_U,
const Vector step_cen_x_L,
const Vector step_cen_x_U,
const Vector step_cen_s_L,
const Vector step_cen_s_U,
const Vector step_cen_y_c,
const Vector step_cen_y_d,
const Vector step_cen_z_L,
const Vector step_cen_z_U,
const Vector step_cen_v_L,
const Vector step_cen_v_U 
)
private

Auxiliary function performing the golden section.

◆ ScaleSigma()

Number Ipopt::QualityFunctionMuOracle::ScaleSigma ( Number  sigma)
private

Auxiliary functions for scaling the sigma axis in the golden section procedure.

◆ UnscaleSigma()

Number Ipopt::QualityFunctionMuOracle::UnscaleSigma ( Number  scaled_sigma)
private

Member Data Documentation

◆ pd_solver_

SmartPtr<PDSystemSolver> Ipopt::QualityFunctionMuOracle::pd_solver_
private

Pointer to the object that should be used to solve the primal-dual system.

Definition at line 111 of file IpQualityFunctionMuOracle.hpp.

◆ sigma_max_

Number Ipopt::QualityFunctionMuOracle::sigma_max_
private

Upper bound on centering parameter sigma.

Definition at line 215 of file IpQualityFunctionMuOracle.hpp.

◆ sigma_min_

Number Ipopt::QualityFunctionMuOracle::sigma_min_
private

Lower bound on centering parameter sigma.

Definition at line 218 of file IpQualityFunctionMuOracle.hpp.

◆ quality_function_norm_

NormEnum Ipopt::QualityFunctionMuOracle::quality_function_norm_
private

Norm to be used for the quality function.

Definition at line 221 of file IpQualityFunctionMuOracle.hpp.

◆ quality_function_centrality_

CentralityEnum Ipopt::QualityFunctionMuOracle::quality_function_centrality_
private

Flag indicating how centrality should be involved in the quality function.

Definition at line 226 of file IpQualityFunctionMuOracle.hpp.

◆ quality_function_balancing_term_

BalancingTermEnum Ipopt::QualityFunctionMuOracle::quality_function_balancing_term_
private

Flag indicating whether we use a balancing term in the quality function.

Definition at line 231 of file IpQualityFunctionMuOracle.hpp.

◆ quality_function_section_sigma_tol_

Number Ipopt::QualityFunctionMuOracle::quality_function_section_sigma_tol_
private

Relative tolerance for golden bi-section algorithm in sigma space.

Definition at line 236 of file IpQualityFunctionMuOracle.hpp.

◆ quality_function_section_qf_tol_

Number Ipopt::QualityFunctionMuOracle::quality_function_section_qf_tol_
private

Relative tolerance for golden bi-section algorithm in function value space.

Definition at line 241 of file IpQualityFunctionMuOracle.hpp.

◆ quality_function_max_section_steps_

Index Ipopt::QualityFunctionMuOracle::quality_function_max_section_steps_
private

Maximal number of bi-section steps in the golden section search for sigma.

Definition at line 246 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_step_x_L_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_step_x_L_
private

Definition at line 254 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_step_x_U_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_step_x_U_
private

Definition at line 255 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_step_s_L_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_step_s_L_
private

Definition at line 256 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_step_s_U_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_step_s_U_
private

Definition at line 257 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_step_z_L_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_step_z_L_
private

Definition at line 258 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_step_z_U_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_step_z_U_
private

Definition at line 259 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_step_v_L_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_step_v_L_
private

Definition at line 260 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_step_v_U_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_step_v_U_
private

Definition at line 261 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_slack_x_L_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_slack_x_L_
private

Definition at line 263 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_slack_x_U_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_slack_x_U_
private

Definition at line 264 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_slack_s_L_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_slack_s_L_
private

Definition at line 265 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_slack_s_U_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_slack_s_U_
private

Definition at line 266 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_z_L_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_z_L_
private

Definition at line 267 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_z_U_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_z_U_
private

Definition at line 268 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_v_L_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_v_L_
private

Definition at line 269 of file IpQualityFunctionMuOracle.hpp.

◆ tmp_v_U_

SmartPtr<Vector> Ipopt::QualityFunctionMuOracle::tmp_v_U_
private

Definition at line 270 of file IpQualityFunctionMuOracle.hpp.

◆ count_qf_evals_

Index Ipopt::QualityFunctionMuOracle::count_qf_evals_
private

Definition at line 274 of file IpQualityFunctionMuOracle.hpp.

◆ initialized_

bool Ipopt::QualityFunctionMuOracle::initialized_
private

Definition at line 283 of file IpQualityFunctionMuOracle.hpp.

◆ n_dual_

Index Ipopt::QualityFunctionMuOracle::n_dual_
private

Definition at line 284 of file IpQualityFunctionMuOracle.hpp.

◆ n_pri_

Index Ipopt::QualityFunctionMuOracle::n_pri_
private

Definition at line 285 of file IpQualityFunctionMuOracle.hpp.

◆ n_comp_

Index Ipopt::QualityFunctionMuOracle::n_comp_
private

Definition at line 286 of file IpQualityFunctionMuOracle.hpp.

◆ curr_slack_x_L_

SmartPtr<const Vector> Ipopt::QualityFunctionMuOracle::curr_slack_x_L_
private

Definition at line 288 of file IpQualityFunctionMuOracle.hpp.

◆ curr_slack_x_U_

SmartPtr<const Vector> Ipopt::QualityFunctionMuOracle::curr_slack_x_U_
private

Definition at line 289 of file IpQualityFunctionMuOracle.hpp.

◆ curr_slack_s_L_

SmartPtr<const Vector> Ipopt::QualityFunctionMuOracle::curr_slack_s_L_
private

Definition at line 290 of file IpQualityFunctionMuOracle.hpp.

◆ curr_slack_s_U_

SmartPtr<const Vector> Ipopt::QualityFunctionMuOracle::curr_slack_s_U_
private

Definition at line 291 of file IpQualityFunctionMuOracle.hpp.

◆ curr_z_L_

SmartPtr<const Vector> Ipopt::QualityFunctionMuOracle::curr_z_L_
private

Definition at line 293 of file IpQualityFunctionMuOracle.hpp.

◆ curr_z_U_

SmartPtr<const Vector> Ipopt::QualityFunctionMuOracle::curr_z_U_
private

Definition at line 294 of file IpQualityFunctionMuOracle.hpp.

◆ curr_v_L_

SmartPtr<const Vector> Ipopt::QualityFunctionMuOracle::curr_v_L_
private

Definition at line 295 of file IpQualityFunctionMuOracle.hpp.

◆ curr_v_U_

SmartPtr<const Vector> Ipopt::QualityFunctionMuOracle::curr_v_U_
private

Definition at line 296 of file IpQualityFunctionMuOracle.hpp.

◆ curr_grad_lag_x_asum_

Number Ipopt::QualityFunctionMuOracle::curr_grad_lag_x_asum_
private

Definition at line 298 of file IpQualityFunctionMuOracle.hpp.

◆ curr_grad_lag_s_asum_

Number Ipopt::QualityFunctionMuOracle::curr_grad_lag_s_asum_
private

Definition at line 299 of file IpQualityFunctionMuOracle.hpp.

◆ curr_c_asum_

Number Ipopt::QualityFunctionMuOracle::curr_c_asum_
private

Definition at line 300 of file IpQualityFunctionMuOracle.hpp.

◆ curr_d_minus_s_asum_

Number Ipopt::QualityFunctionMuOracle::curr_d_minus_s_asum_
private

Definition at line 301 of file IpQualityFunctionMuOracle.hpp.

◆ curr_grad_lag_x_nrm2_

Number Ipopt::QualityFunctionMuOracle::curr_grad_lag_x_nrm2_
private

Definition at line 303 of file IpQualityFunctionMuOracle.hpp.

◆ curr_grad_lag_s_nrm2_

Number Ipopt::QualityFunctionMuOracle::curr_grad_lag_s_nrm2_
private

Definition at line 304 of file IpQualityFunctionMuOracle.hpp.

◆ curr_c_nrm2_

Number Ipopt::QualityFunctionMuOracle::curr_c_nrm2_
private

Definition at line 305 of file IpQualityFunctionMuOracle.hpp.

◆ curr_d_minus_s_nrm2_

Number Ipopt::QualityFunctionMuOracle::curr_d_minus_s_nrm2_
private

Definition at line 306 of file IpQualityFunctionMuOracle.hpp.

◆ curr_grad_lag_x_amax_

Number Ipopt::QualityFunctionMuOracle::curr_grad_lag_x_amax_
private

Definition at line 308 of file IpQualityFunctionMuOracle.hpp.

◆ curr_grad_lag_s_amax_

Number Ipopt::QualityFunctionMuOracle::curr_grad_lag_s_amax_
private

Definition at line 309 of file IpQualityFunctionMuOracle.hpp.

◆ curr_c_amax_

Number Ipopt::QualityFunctionMuOracle::curr_c_amax_
private

Definition at line 310 of file IpQualityFunctionMuOracle.hpp.

◆ curr_d_minus_s_amax_

Number Ipopt::QualityFunctionMuOracle::curr_d_minus_s_amax_
private

Definition at line 311 of file IpQualityFunctionMuOracle.hpp.


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