Ipopt Documentation  
IpQualityFunctionMuOracle.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, 2006 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // Authors: Andreas Waechter IBM 2004-11-12
6 
7 #ifndef __IPQUALITYFUNCTIONMUORACLE_HPP__
8 #define __IPQUALITYFUNCTIONMUORACLE_HPP__
9 
10 #include "IpMuOracle.hpp"
11 #include "IpPDSystemSolver.hpp"
13 
14 namespace Ipopt
15 {
16 
21 {
22 public:
27  const SmartPtr<PDSystemSolver>& pd_solver
28  );
29 
32 
34 
35  virtual bool InitializeImpl(
36  const OptionsList& options,
37  const std::string& prefix
38  );
39 
43  virtual bool CalculateMu(
44  Number mu_min,
45  Number mu_max,
46  Number& new_mu
47  );
48 
49  static void RegisterOptions(
51  );
52 
58  enum NormEnum
59  {
60  NM_NORM_1 = 0,
63  NM_NORM_2
64  };
65 
68  {
69  CEN_NONE = 0,
73  };
74 
77  {
78  BT_NONE = 0,
79  BT_CUBIC
80  };
82 
83 private:
96 
100  );
101 
103  void operator=(
105  );
107 
112 
116  // ToDo Replace pointers by references
118  Number sigma,
119  const Vector& step_aff_x_L,
120  const Vector& step_aff_x_U,
121  const Vector& step_aff_s_L,
122  const Vector& step_aff_s_U,
123  const Vector& step_aff_y_c,
124  const Vector& step_aff_y_d,
125  const Vector& step_aff_z_L,
126  const Vector& step_aff_z_U,
127  const Vector& step_aff_v_L,
128  const Vector& step_aff_v_U,
129  const Vector& step_cen_x_L,
130  const Vector& step_cen_x_U,
131  const Vector& step_cen_s_L,
132  const Vector& step_cen_s_U,
133  const Vector& step_cen_y_c,
134  const Vector& step_cen_y_d,
135  const Vector& step_cen_z_L,
136  const Vector& step_cen_z_U,
137  const Vector& step_cen_v_L,
138  const Vector& step_cen_v_U
139  );
140 
143  Number sigma_up,
144  Number q_up,
145  Number sigma_lo,
146  Number q_lo,
147  Number sigma_tol,
148  Number qf_tol,
149  const Vector& step_aff_x_L,
150  const Vector& step_aff_x_U,
151  const Vector& step_aff_s_L,
152  const Vector& step_aff_s_U,
153  const Vector& step_aff_y_c,
154  const Vector& step_aff_y_d,
155  const Vector& step_aff_z_L,
156  const Vector& step_aff_z_U,
157  const Vector& step_aff_v_L,
158  const Vector& step_aff_v_U,
159  const Vector& step_cen_x_L,
160  const Vector& step_cen_x_U,
161  const Vector& step_cen_s_L,
162  const Vector& step_cen_s_U,
163  const Vector& step_cen_y_c,
164  const Vector& step_cen_y_d,
165  const Vector& step_cen_z_L,
166  const Vector& step_cen_z_U,
167  const Vector& step_cen_v_L,
168  const Vector& step_cen_v_U
169  );
170 
176  Number sigma
177  );
178 
180  Number scaled_sigma
181  );
183 
187  /* This doesn't seem to work well, so I took it out for now (AW)
188  Number PerformGoldenSectionLog(Number sigma_up,
189  Number sigma_lo,
190  Number tol,
191  const Vector& step_aff_x_L,
192  const Vector& step_aff_x_U,
193  const Vector& step_aff_s_L,
194  const Vector& step_aff_s_U,
195  const Vector& step_aff_y_c,
196  const Vector& step_aff_y_d,
197  const Vector& step_aff_z_L,
198  const Vector& step_aff_z_U,
199  const Vector& step_aff_v_L,
200  const Vector& step_aff_v_U,
201  const Vector& step_cen_x_L,
202  const Vector& step_cen_x_U,
203  const Vector& step_cen_s_L,
204  const Vector& step_cen_s_U,
205  const Vector& step_cen_y_c,
206  const Vector& step_cen_y_d,
207  const Vector& step_cen_z_L,
208  const Vector& step_cen_z_U,
209  const Vector& step_cen_v_L,
210  const Vector& step_cen_v_U);
211  */
212 
217 
220 
223 
228 
233 
238 
243 
249 
263 
273 
274  /* Counter for the qualify function evaluations */
276 
288 
293 
298 
303 
308 
314 };
315 
316 } // namespace Ipopt
317 
318 #endif
Ipopt::QualityFunctionMuOracle::tmp_step_s_U_
SmartPtr< Vector > tmp_step_s_U_
Definition: IpQualityFunctionMuOracle.hpp:258
Ipopt::QualityFunctionMuOracle::curr_z_L_
SmartPtr< const Vector > curr_z_L_
Definition: IpQualityFunctionMuOracle.hpp:294
Ipopt::QualityFunctionMuOracle::CalculateMu
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 (...
Ipopt::QualityFunctionMuOracle::BT_CUBIC
@ BT_CUBIC
Definition: IpQualityFunctionMuOracle.hpp:79
Ipopt::QualityFunctionMuOracle::QualityFunctionMuOracle
QualityFunctionMuOracle()
Default Constructor.
Ipopt::QualityFunctionMuOracle::curr_grad_lag_s_amax_
Number curr_grad_lag_s_amax_
Definition: IpQualityFunctionMuOracle.hpp:310
Ipopt::QualityFunctionMuOracle::n_comp_
Index n_comp_
Definition: IpQualityFunctionMuOracle.hpp:287
Ipopt::QualityFunctionMuOracle::CEN_RECIPROCAL
@ CEN_RECIPROCAL
Definition: IpQualityFunctionMuOracle.hpp:71
Ipopt::QualityFunctionMuOracle::tmp_v_L_
SmartPtr< Vector > tmp_v_L_
Definition: IpQualityFunctionMuOracle.hpp:270
Ipopt::QualityFunctionMuOracle::~QualityFunctionMuOracle
virtual ~QualityFunctionMuOracle()
Destructor.
Ipopt::QualityFunctionMuOracle::RegisterOptions
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Ipopt::QualityFunctionMuOracle::tmp_step_z_U_
SmartPtr< Vector > tmp_step_z_U_
Definition: IpQualityFunctionMuOracle.hpp:260
Ipopt::QualityFunctionMuOracle::initialized_
bool initialized_
Definition: IpQualityFunctionMuOracle.hpp:284
Ipopt::QualityFunctionMuOracle::ScaleSigma
Number ScaleSigma(Number sigma)
Auxiliary functions for scaling the sigma axis in the golden section procedure.
Ipopt::QualityFunctionMuOracle::tmp_step_x_L_
SmartPtr< Vector > tmp_step_x_L_
Definition: IpQualityFunctionMuOracle.hpp:255
Ipopt::QualityFunctionMuOracle::tmp_v_U_
SmartPtr< Vector > tmp_v_U_
Definition: IpQualityFunctionMuOracle.hpp:271
Ipopt::QualityFunctionMuOracle::tmp_step_x_U_
SmartPtr< Vector > tmp_step_x_U_
Definition: IpQualityFunctionMuOracle.hpp:256
Ipopt::QualityFunctionMuOracle::quality_function_norm_
NormEnum quality_function_norm_
Norm to be used for the quality function.
Definition: IpQualityFunctionMuOracle.hpp:222
Ipopt::QualityFunctionMuOracle::CEN_NONE
@ CEN_NONE
Definition: IpQualityFunctionMuOracle.hpp:69
Ipopt::QualityFunctionMuOracle::quality_function_balancing_term_
BalancingTermEnum quality_function_balancing_term_
Flag indicating whether we use a balancing term in the quality function.
Definition: IpQualityFunctionMuOracle.hpp:232
Ipopt::QualityFunctionMuOracle::count_qf_evals_
Index count_qf_evals_
Definition: IpQualityFunctionMuOracle.hpp:275
Ipopt
This file contains a base class for all exceptions and a set of macros to help with exceptions.
Definition: IpInexactAlgBuilder.hpp:14
Ipopt::Number
double Number
Type of all numbers.
Definition: IpTypes.hpp:15
Ipopt::QualityFunctionMuOracle::curr_grad_lag_x_nrm2_
Number curr_grad_lag_x_nrm2_
Definition: IpQualityFunctionMuOracle.hpp:304
Ipopt::QualityFunctionMuOracle::curr_d_minus_s_nrm2_
Number curr_d_minus_s_nrm2_
Definition: IpQualityFunctionMuOracle.hpp:307
Ipopt::QualityFunctionMuOracle::NormEnum
NormEnum
enum for norm type
Definition: IpQualityFunctionMuOracle.hpp:59
Ipopt::QualityFunctionMuOracle::curr_grad_lag_s_nrm2_
Number curr_grad_lag_s_nrm2_
Definition: IpQualityFunctionMuOracle.hpp:305
Ipopt::QualityFunctionMuOracle::tmp_slack_s_U_
SmartPtr< Vector > tmp_slack_s_U_
Definition: IpQualityFunctionMuOracle.hpp:267
Ipopt::QualityFunctionMuOracle::tmp_slack_x_U_
SmartPtr< Vector > tmp_slack_x_U_
Definition: IpQualityFunctionMuOracle.hpp:265
Ipopt::QualityFunctionMuOracle::pd_solver_
SmartPtr< PDSystemSolver > pd_solver_
Pointer to the object that should be used to solve the primal-dual system.
Definition: IpQualityFunctionMuOracle.hpp:111
Ipopt::QualityFunctionMuOracle::curr_c_nrm2_
Number curr_c_nrm2_
Definition: IpQualityFunctionMuOracle.hpp:306
Ipopt::QualityFunctionMuOracle::UnscaleSigma
Number UnscaleSigma(Number scaled_sigma)
Ipopt::QualityFunctionMuOracle::tmp_z_L_
SmartPtr< Vector > tmp_z_L_
Definition: IpQualityFunctionMuOracle.hpp:268
IpIpoptCalculatedQuantities.hpp
Ipopt::QualityFunctionMuOracle::CentralityEnum
CentralityEnum
enum for centrality type
Definition: IpQualityFunctionMuOracle.hpp:68
Ipopt::QualityFunctionMuOracle::operator=
void operator=(const QualityFunctionMuOracle &)
Default Assignment Operator.
Ipopt::QualityFunctionMuOracle::CalculateQualityFunction
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.
Ipopt::QualityFunctionMuOracle::tmp_step_v_U_
SmartPtr< Vector > tmp_step_v_U_
Definition: IpQualityFunctionMuOracle.hpp:262
Ipopt::QualityFunctionMuOracle::curr_v_U_
SmartPtr< const Vector > curr_v_U_
Definition: IpQualityFunctionMuOracle.hpp:297
Ipopt::QualityFunctionMuOracle::curr_d_minus_s_amax_
Number curr_d_minus_s_amax_
Definition: IpQualityFunctionMuOracle.hpp:312
Ipopt::QualityFunctionMuOracle::InitializeImpl
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.
Ipopt::Index
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:17
IpMuOracle.hpp
Ipopt::QualityFunctionMuOracle::QualityFunctionMuOracle
QualityFunctionMuOracle(const QualityFunctionMuOracle &)
Copy Constructor.
Ipopt::SmartPtr
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
Ipopt::QualityFunctionMuOracle::tmp_slack_s_L_
SmartPtr< Vector > tmp_slack_s_L_
Definition: IpQualityFunctionMuOracle.hpp:266
Ipopt::QualityFunctionMuOracle::CEN_LOG
@ CEN_LOG
Definition: IpQualityFunctionMuOracle.hpp:70
Ipopt::QualityFunctionMuOracle::CEN_CUBED_RECIPROCAL
@ CEN_CUBED_RECIPROCAL
Definition: IpQualityFunctionMuOracle.hpp:72
Ipopt::QualityFunctionMuOracle
Implementation of the probing strategy for computing the barrier parameter.
Definition: IpQualityFunctionMuOracle.hpp:21
Ipopt::QualityFunctionMuOracle::tmp_z_U_
SmartPtr< Vector > tmp_z_U_
Definition: IpQualityFunctionMuOracle.hpp:269
Ipopt::QualityFunctionMuOracle::quality_function_centrality_
CentralityEnum quality_function_centrality_
Flag indicating how centrality should be involved in the quality function.
Definition: IpQualityFunctionMuOracle.hpp:227
Ipopt::QualityFunctionMuOracle::curr_v_L_
SmartPtr< const Vector > curr_v_L_
Definition: IpQualityFunctionMuOracle.hpp:296
IpPDSystemSolver.hpp
Ipopt::QualityFunctionMuOracle::QualityFunctionMuOracle
QualityFunctionMuOracle(const SmartPtr< PDSystemSolver > &pd_solver)
Constructor.
Ipopt::QualityFunctionMuOracle::curr_grad_lag_x_amax_
Number curr_grad_lag_x_amax_
Definition: IpQualityFunctionMuOracle.hpp:309
Ipopt::QualityFunctionMuOracle::quality_function_max_section_steps_
Index quality_function_max_section_steps_
Maximal number of bi-section steps in the golden section search for sigma.
Definition: IpQualityFunctionMuOracle.hpp:247
Ipopt::QualityFunctionMuOracle::curr_grad_lag_x_asum_
Number curr_grad_lag_x_asum_
Definition: IpQualityFunctionMuOracle.hpp:299
Ipopt::QualityFunctionMuOracle::curr_grad_lag_s_asum_
Number curr_grad_lag_s_asum_
Definition: IpQualityFunctionMuOracle.hpp:300
Ipopt::QualityFunctionMuOracle::quality_function_section_sigma_tol_
Number quality_function_section_sigma_tol_
Relative tolerance for golden bi-section algorithm in sigma space.
Definition: IpQualityFunctionMuOracle.hpp:237
Ipopt::MuOracle
Abstract Base Class for classes that are able to compute a suggested value of the barrier parameter t...
Definition: IpMuOracle.hpp:20
Ipopt::QualityFunctionMuOracle::sigma_max_
Number sigma_max_
Upper bound on centering parameter sigma.
Definition: IpQualityFunctionMuOracle.hpp:216
Ipopt::QualityFunctionMuOracle::tmp_slack_x_L_
SmartPtr< Vector > tmp_slack_x_L_
Definition: IpQualityFunctionMuOracle.hpp:264
Ipopt::QualityFunctionMuOracle::curr_c_amax_
Number curr_c_amax_
Definition: IpQualityFunctionMuOracle.hpp:311
Ipopt::QualityFunctionMuOracle::NM_NORM_2_SQUARED
@ NM_NORM_2_SQUARED
Definition: IpQualityFunctionMuOracle.hpp:61
Ipopt::QualityFunctionMuOracle::NM_NORM_2
@ NM_NORM_2
Definition: IpQualityFunctionMuOracle.hpp:63
Ipopt::QualityFunctionMuOracle::curr_c_asum_
Number curr_c_asum_
Definition: IpQualityFunctionMuOracle.hpp:301
Ipopt::QualityFunctionMuOracle::curr_slack_s_L_
SmartPtr< const Vector > curr_slack_s_L_
Definition: IpQualityFunctionMuOracle.hpp:291
Ipopt::QualityFunctionMuOracle::PerformGoldenSection
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.
Ipopt::QualityFunctionMuOracle::sigma_min_
Number sigma_min_
Lower bound on centering parameter sigma.
Definition: IpQualityFunctionMuOracle.hpp:219
Ipopt::QualityFunctionMuOracle::curr_z_U_
SmartPtr< const Vector > curr_z_U_
Definition: IpQualityFunctionMuOracle.hpp:295
Ipopt::QualityFunctionMuOracle::curr_slack_x_L_
SmartPtr< const Vector > curr_slack_x_L_
Definition: IpQualityFunctionMuOracle.hpp:289
Ipopt::QualityFunctionMuOracle::curr_slack_x_U_
SmartPtr< const Vector > curr_slack_x_U_
Definition: IpQualityFunctionMuOracle.hpp:290
Ipopt::QualityFunctionMuOracle::NM_NORM_1
@ NM_NORM_1
Definition: IpQualityFunctionMuOracle.hpp:60
Ipopt::QualityFunctionMuOracle::quality_function_section_qf_tol_
Number quality_function_section_qf_tol_
Relative tolerance for golden bi-section algorithm in function value space.
Definition: IpQualityFunctionMuOracle.hpp:242
Ipopt::QualityFunctionMuOracle::tmp_step_v_L_
SmartPtr< Vector > tmp_step_v_L_
Definition: IpQualityFunctionMuOracle.hpp:261
Ipopt::QualityFunctionMuOracle::n_dual_
Index n_dual_
Definition: IpQualityFunctionMuOracle.hpp:285
Ipopt::QualityFunctionMuOracle::curr_d_minus_s_asum_
Number curr_d_minus_s_asum_
Definition: IpQualityFunctionMuOracle.hpp:302
Ipopt::QualityFunctionMuOracle::BalancingTermEnum
BalancingTermEnum
enum for the quality function balancing term type
Definition: IpQualityFunctionMuOracle.hpp:77
Ipopt::OptionsList
This class stores a list of user set options.
Definition: IpOptionsList.hpp:33
Ipopt::QualityFunctionMuOracle::tmp_step_z_L_
SmartPtr< Vector > tmp_step_z_L_
Definition: IpQualityFunctionMuOracle.hpp:259
Ipopt::QualityFunctionMuOracle::tmp_step_s_L_
SmartPtr< Vector > tmp_step_s_L_
Definition: IpQualityFunctionMuOracle.hpp:257
Ipopt::QualityFunctionMuOracle::NM_NORM_MAX
@ NM_NORM_MAX
Definition: IpQualityFunctionMuOracle.hpp:62
Ipopt::QualityFunctionMuOracle::curr_slack_s_U_
SmartPtr< const Vector > curr_slack_s_U_
Definition: IpQualityFunctionMuOracle.hpp:292
Ipopt::QualityFunctionMuOracle::n_pri_
Index n_pri_
Definition: IpQualityFunctionMuOracle.hpp:286
Ipopt::Vector
Vector Base Class.
Definition: IpVector.hpp:48
Ipopt::QualityFunctionMuOracle::BT_NONE
@ BT_NONE
Definition: IpQualityFunctionMuOracle.hpp:78