Ipopt  3.11.9
IpIpoptAlg.hpp
Go to the documentation of this file.
1 // Copyright (C) 2004, 2010 International Business Machines and others.
2 // All Rights Reserved.
3 // This code is published under the Eclipse Public License.
4 //
5 // $Id: IpIpoptAlg.hpp 2167 2013-03-08 11:15:38Z stefan $
6 //
7 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8 
9 #ifndef __IPIPOPTALG_HPP__
10 #define __IPIPOPTALG_HPP__
11 
12 #include "IpIpoptNLP.hpp"
13 #include "IpAlgStrategy.hpp"
15 #include "IpLineSearch.hpp"
16 #include "IpMuUpdate.hpp"
17 #include "IpConvCheck.hpp"
18 #include "IpOptionsList.hpp"
19 #include "IpIterateInitializer.hpp"
20 #include "IpIterationOutput.hpp"
21 #include "IpAlgTypes.hpp"
22 #include "IpHessianUpdater.hpp"
23 #include "IpEqMultCalculator.hpp"
24 
25 namespace Ipopt
26 {
27 
30  DECLARE_STD_EXCEPTION(STEP_COMPUTATION_FAILED);
32 
46  {
47  public:
48 
56  const SmartPtr<LineSearch>& line_search,
57  const SmartPtr<MuUpdate>& mu_update,
58  const SmartPtr<ConvergenceCheck>& conv_check,
59  const SmartPtr<IterateInitializer>& iterate_initializer,
60  const SmartPtr<IterationOutput>& iter_output,
61  const SmartPtr<HessianUpdater>& hessian_updater,
62  const SmartPtr<EqMultiplierCalculator>& eq_multiplier_calculator = NULL);
63 
65  virtual ~IpoptAlgorithm();
67 
68 
70  virtual bool InitializeImpl(const OptionsList& options,
71  const std::string& prefix);
72 
74  SolverReturn Optimize(bool isResto = false);
75 
80 
84  {
86  }
88 
89  static void print_copyright_message(const Journalist& jnlst);
90 
91  private:
102 
105 
107  void operator=(const IpoptAlgorithm&);
109 
123 
131 
137 
143 
148 
152 
155 
160 
163 
167 
173 
184  bool recalc_y_;
192  std::string linear_solver_;
194 
198  const Vector& x,
199  const Vector& x_L,
200  const Vector& x_U,
201  const Matrix& Px_L,
202  const Matrix& Px_U,
203  Index& n_tot,
204  Index& n_only_lower,
205  Index& n_both,
206  Index& n_only_upper);
207 
216  const Vector& trial_slack,
217  const Vector& trial_compl,
218  SmartPtr<const Vector>& new_trial_z);
220  };
221 
222 } // namespace Ipopt
223 
224 #endif
Number * x
Input: Starting point Output: Optimal solution.
Number * x_L
Lower bounds on variables.
Number Number * x_U
Upper bounds on variables.
This is the base class for all algorithm strategy objects.
The main ipopt algorithm class.
Definition: IpIpoptAlg.hpp:46
SmartPtr< EqMultiplierCalculator > eq_multiplier_calculator_
The multipler calculator (for y_c and y_d) has to be set only if option recalc_y is set to true.
Definition: IpIpoptAlg.hpp:121
SmartPtr< ConvergenceCheck > conv_check_
Definition: IpIpoptAlg.hpp:115
IpoptAlgorithm()
Default Constructor.
bool UpdateBarrierParameter()
Method to update the barrier parameter.
SmartPtr< SearchDirectionCalculator > search_dir_calculator_
Definition: IpIpoptAlg.hpp:112
bool mehrotra_algorithm_
Flag indicating if we want to do Mehrotras's algorithm.
Definition: IpIpoptAlg.hpp:190
SmartPtr< MuUpdate > mu_update_
Definition: IpIpoptAlg.hpp:114
SmartPtr< SearchDirectionCalculator > SearchDirCalc()
Definition: IpIpoptAlg.hpp:83
virtual ~IpoptAlgorithm()
Default destructor.
static void print_copyright_message(const Journalist &jnlst)
void operator=(const IpoptAlgorithm &)
Overloaded Equals Operator.
bool recalc_y_
Flag indicating whether the y multipliers should be recalculated with the eq_mutliplier_calculator ob...
Definition: IpIpoptAlg.hpp:184
SmartPtr< LineSearch > line_search_
Definition: IpIpoptAlg.hpp:113
Number correct_bound_multiplier(const Vector &trial_z, const Vector &trial_slack, const Vector &trial_compl, SmartPtr< const Vector > &new_trial_z)
Method for ensuring that the trial multipliers are not too far from the primal estime.
void UpdateHessian()
Method for updating the current Hessian.
void PrintProblemStatistics()
Print the problem size statistics.
IpoptAlgorithm(const IpoptAlgorithm &)
Copy Constructor.
std::string linear_solver_
String specifying linear solver.
Definition: IpIpoptAlg.hpp:192
Number kappa_sigma_
safeguard factor for bound multipliers.
Definition: IpIpoptAlg.hpp:180
SolverReturn Optimize(bool isResto=false)
Main solve method.
SmartPtr< IterateInitializer > iterate_initializer_
Definition: IpIpoptAlg.hpp:116
bool ComputeSearchDirection()
Method to setup the call to the PDSystemSolver.
void ComputeFeasibilityMultipliers()
Compute the Lagrangian multipliers for a feasibility problem.
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)
overloaded from AlgorithmStrategyObject
IpoptAlgorithm(const SmartPtr< SearchDirectionCalculator > &search_dir_calculator, const SmartPtr< LineSearch > &line_search, const SmartPtr< MuUpdate > &mu_update, const SmartPtr< ConvergenceCheck > &conv_check, const SmartPtr< IterateInitializer > &iterate_initializer, const SmartPtr< IterationOutput > &iter_output, const SmartPtr< HessianUpdater > &hessian_updater, const SmartPtr< EqMultiplierCalculator > &eq_multiplier_calculator=NULL)
Constructor.
SmartPtr< HessianUpdater > hessian_updater_
Definition: IpIpoptAlg.hpp:118
SmartPtr< IterationOutput > iter_output_
Definition: IpIpoptAlg.hpp:117
void InitializeIterates()
Sets up initial values for the iterates, Corrects the initial values for x and s (force in bounds)
void OutputIteration()
Do all the output for one iteration.
void AcceptTrialPoint()
Method for accepting the trial point as the new iteration, possibly after adjusting the variable boun...
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
Methods for IpoptType.
Number recalc_y_feas_tol_
Feasibility threshold for recalc_y.
Definition: IpIpoptAlg.hpp:186
void ComputeAcceptableTrialPoint()
Method computing the new iterate (usually vialine search).
void calc_number_of_bounds(const Vector &x, const Vector &x_L, const Vector &x_U, const Matrix &Px_L, const Matrix &Px_U, Index &n_tot, Index &n_only_lower, Index &n_both, Index &n_only_upper)
bool skip_print_problem_stats_
Flag indicating if the statistic should not be printed.
Definition: IpIpoptAlg.hpp:171
Class responsible for all message output.
Matrix Base Class.
Definition: IpMatrix.hpp:28
This class stores a list of user set options.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:183
Vector Base Class.
Definition: IpVector.hpp:48
SolverReturn
enum for the return from the optimize algorithm (obviously we need to add more)
Definition: IpAlgTypes.hpp:22
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:19
DECLARE_STD_EXCEPTION(SUFFIX_EMPTY)
double Number
Type of all numbers.
Definition: IpTypes.hpp:17