Ipopt Documentation  
IpNLPBoundsRemover.hpp
Go to the documentation of this file.
1 // Copyright (C) 2008, 2010 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 2008-08-25
6 
7 #ifndef __IPNLPBOUNDSREMOVER_HPP__
8 #define __IPNLPBOUNDSREMOVER_HPP__
9 
10 #include "IpNLP.hpp"
11 
12 namespace Ipopt
13 {
14 
23 class NLPBoundsRemover: public NLP
24 {
25 public:
32  NLP& nlp,
33  bool allow_twosided_inequalities = false
34  );
35 
38  { }
40 
46  virtual bool ProcessOptions(
47  const OptionsList& options,
48  const std::string& prefix
49  )
50  {
51  return nlp_->ProcessOptions(options, prefix);
52  }
53 
58  virtual bool GetSpaces(
62  SmartPtr<const VectorSpace>& x_l_space,
63  SmartPtr<const MatrixSpace>& px_l_space,
64  SmartPtr<const VectorSpace>& x_u_space,
65  SmartPtr<const MatrixSpace>& px_u_space,
66  SmartPtr<const VectorSpace>& d_l_space,
67  SmartPtr<const MatrixSpace>& pd_l_space,
68  SmartPtr<const VectorSpace>& d_u_space,
69  SmartPtr<const MatrixSpace>& pd_u_space,
70  SmartPtr<const MatrixSpace>& Jac_c_space,
71  SmartPtr<const MatrixSpace>& Jac_d_space,
72  SmartPtr<const SymMatrixSpace>& Hess_lagrangian_space
73  );
74 
76  virtual bool GetBoundsInformation(
77  const Matrix& Px_L,
78  Vector& x_L,
79  const Matrix& Px_U,
80  Vector& x_U,
81  const Matrix& Pd_L,
82  Vector& d_L,
83  const Matrix& Pd_U,
84  Vector& d_U
85  );
86 
91  virtual bool GetStartingPoint(
93  bool need_x,
94  SmartPtr<Vector> y_c,
95  bool need_y_c,
96  SmartPtr<Vector> y_d,
97  bool need_y_d,
98  SmartPtr<Vector> z_L,
99  bool need_z_L,
100  SmartPtr<Vector> z_U,
101  bool need_z_U
102  );
103 
109  virtual bool GetWarmStartIterate(
110  IteratesVector& warm_start_iterate
111  )
112  {
113  return nlp_->GetWarmStartIterate(warm_start_iterate);
114  }
116 
119  virtual bool Eval_f(
120  const Vector& x,
121  Number& f
122  )
123  {
124  return nlp_->Eval_f(x, f);
125  }
126 
127  virtual bool Eval_grad_f(
128  const Vector& x,
129  Vector& g_f
130  )
131  {
132  return nlp_->Eval_grad_f(x, g_f);
133  }
134 
135  virtual bool Eval_c(
136  const Vector& x,
137  Vector& c
138  )
139  {
140  return nlp_->Eval_c(x, c);
141  }
142 
143  virtual bool Eval_jac_c(
144  const Vector& x,
145  Matrix& jac_c
146  )
147  {
148  return nlp_->Eval_jac_c(x, jac_c);
149  }
150 
151  virtual bool Eval_d(
152  const Vector& x,
153  Vector& d
154  );
155 
156  virtual bool Eval_jac_d(
157  const Vector& x,
158  Matrix& jac_d
159  );
160 
161  virtual bool Eval_h(
162  const Vector& x,
163  Number obj_factor,
164  const Vector& yc,
165  const Vector& yd,
166  SymMatrix& h
167  );
169 
172  virtual void FinalizeSolution(
173  SolverReturn status,
174  const Vector& x,
175  const Vector& z_L,
176  const Vector& z_U,
177  const Vector& c,
178  const Vector& d,
179  const Vector& y_c,
180  const Vector& y_d,
181  Number obj_value,
182  const IpoptData* ip_data,
184  );
185 
186  virtual bool IntermediateCallBack(
187  AlgorithmMode mode,
188  Index iter,
189  Number obj_value,
190  Number inf_pr,
191  Number inf_du,
192  Number mu,
193  Number d_norm,
194  Number regularization_size,
195  Number alpha_du,
196  Number alpha_pr,
197  Index ls_trials,
198  const IpoptData* ip_data,
200  )
201  {
202  return nlp_->IntermediateCallBack(mode, iter, obj_value, inf_pr, inf_du, mu, d_norm, regularization_size,
203  alpha_du, alpha_pr, ls_trials, ip_data, ip_cq);
204  }
206 
209  virtual void GetScalingParameters(
210  const SmartPtr<const VectorSpace> x_space,
211  const SmartPtr<const VectorSpace> c_space,
212  const SmartPtr<const VectorSpace> d_space,
213  Number& obj_scaling,
214  SmartPtr<Vector>& x_scaling,
215  SmartPtr<Vector>& c_scaling,
216  SmartPtr<Vector>& d_scaling
217  ) const;
219 
221  SmartPtr<VectorSpace>& approx_space,
222  SmartPtr<Matrix>& P_approx
223  )
224  {
225  nlp_->GetQuasiNewtonApproximationSpaces(approx_space, P_approx);
226  }
227 
230  {
231  return nlp_;
232  }
233 
234 private:
249  const NLPBoundsRemover&
250  );
251 
253  void operator=(
254  const NLPBoundsRemover&
255  );
257 
260 
263 
266 
269 
272 };
273 
274 } // namespace Ipopt
275 
276 #endif
Ipopt::NLPBoundsRemover::Eval_jac_c
virtual bool Eval_jac_c(const Vector &x, Matrix &jac_c)
Definition: IpNLPBoundsRemover.hpp:143
Ipopt::NLPBoundsRemover::GetBoundsInformation
virtual bool GetBoundsInformation(const Matrix &Px_L, Vector &x_L, const Matrix &Px_U, Vector &x_U, const Matrix &Pd_L, Vector &d_L, const Matrix &Pd_U, Vector &d_U)
Method for obtaining the bounds information.
Ipopt::NLPBoundsRemover::Eval_jac_d
virtual bool Eval_jac_d(const Vector &x, Matrix &jac_d)
Ipopt::NLPBoundsRemover::Eval_h
virtual bool Eval_h(const Vector &x, Number obj_factor, const Vector &yc, const Vector &yd, SymMatrix &h)
Ipopt::IpoptData
Class to organize all the data required by the algorithm.
Definition: IpIpoptData.hpp:98
Ipopt::NLPBoundsRemover::FinalizeSolution
virtual void FinalizeSolution(SolverReturn status, const Vector &x, const Vector &z_L, const Vector &z_U, const Vector &c, const Vector &d, const Vector &y_c, const Vector &y_d, Number obj_value, const IpoptData *ip_data, IpoptCalculatedQuantities *ip_cq)
This method is called at the very end of the optimization.
Ipopt::NLPBoundsRemover::Eval_c
virtual bool Eval_c(const Vector &x, Vector &c)
Definition: IpNLPBoundsRemover.hpp:135
Ipopt::NLPBoundsRemover::Eval_grad_f
virtual bool Eval_grad_f(const Vector &x, Vector &g_f)
Definition: IpNLPBoundsRemover.hpp:127
Ipopt::IpoptCalculatedQuantities
Class for all IPOPT specific calculated quantities.
Definition: IpIpoptCalculatedQuantities.hpp:89
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::Matrix
Matrix Base Class.
Definition: IpMatrix.hpp:28
Ipopt::NLPBoundsRemover::Eval_f
virtual bool Eval_f(const Vector &x, Number &f)
Definition: IpNLPBoundsRemover.hpp:119
Ipopt::NLPBoundsRemover::Px_l_orig_
SmartPtr< const Matrix > Px_l_orig_
Pointer to the expansion matrix for the lower x bounds.
Definition: IpNLPBoundsRemover.hpp:262
Ipopt::NLPBoundsRemover::NLPBoundsRemover
NLPBoundsRemover()
Default Constructor.
Ipopt::NLPBoundsRemover::ProcessOptions
virtual bool ProcessOptions(const OptionsList &options, const std::string &prefix)
Overload if you want the chance to process options or parameters that may be specific to the NLP.
Definition: IpNLPBoundsRemover.hpp:46
IpNLP.hpp
Ipopt::NLPBoundsRemover::d_space_orig_
SmartPtr< const VectorSpace > d_space_orig_
Pointer to the original d space.
Definition: IpNLPBoundsRemover.hpp:268
Ipopt::NLPBoundsRemover::allow_twosided_inequalities_
bool allow_twosided_inequalities_
Flag indicating whether twosided inequality constraints are allowed.
Definition: IpNLPBoundsRemover.hpp:271
Ipopt::NLPBoundsRemover::~NLPBoundsRemover
virtual ~NLPBoundsRemover()
Destructor.
Definition: IpNLPBoundsRemover.hpp:37
Ipopt::Index
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:17
Ipopt::NLPBoundsRemover::GetScalingParameters
virtual void GetScalingParameters(const SmartPtr< const VectorSpace > x_space, const SmartPtr< const VectorSpace > c_space, const SmartPtr< const VectorSpace > d_space, Number &obj_scaling, SmartPtr< Vector > &x_scaling, SmartPtr< Vector > &c_scaling, SmartPtr< Vector > &d_scaling) const
Routines to get the scaling parameters.
Ipopt::NLPBoundsRemover
This is an adapter for an NLP that converts variable bound constraints to inequality constraints.
Definition: IpNLPBoundsRemover.hpp:24
Ipopt::NLPBoundsRemover::nlp
SmartPtr< NLP > nlp()
Accessor method to the original NLP.
Definition: IpNLPBoundsRemover.hpp:229
Ipopt::SmartPtr
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
Ipopt::NLPBoundsRemover::NLPBoundsRemover
NLPBoundsRemover(NLP &nlp, bool allow_twosided_inequalities=false)
The constructor is given the NLP of which the bounds are to be replaced by inequality constraints.
Ipopt::NLP
Definition: IpNLP.hpp:27
Ipopt::NLPBoundsRemover::GetStartingPoint
virtual bool GetStartingPoint(SmartPtr< Vector > x, bool need_x, SmartPtr< Vector > y_c, bool need_y_c, SmartPtr< Vector > y_d, bool need_y_d, SmartPtr< Vector > z_L, bool need_z_L, SmartPtr< Vector > z_U, bool need_z_U)
Method for obtaining the starting point for all the iterates.
Ipopt::NLPBoundsRemover::Px_u_orig_
SmartPtr< const Matrix > Px_u_orig_
Pointer to the expansion matrix for the upper x bounds.
Definition: IpNLPBoundsRemover.hpp:265
Ipopt::NLPBoundsRemover::GetWarmStartIterate
virtual bool GetWarmStartIterate(IteratesVector &warm_start_iterate)
Method for obtaining an entire iterate as a warmstart point.
Definition: IpNLPBoundsRemover.hpp:109
Ipopt::NLPBoundsRemover::Eval_d
virtual bool Eval_d(const Vector &x, Vector &d)
Ipopt::NLPBoundsRemover::IntermediateCallBack
virtual bool IntermediateCallBack(AlgorithmMode mode, Index iter, Number obj_value, Number inf_pr, Number inf_du, Number mu, Number d_norm, Number regularization_size, Number alpha_du, Number alpha_pr, Index ls_trials, const IpoptData *ip_data, IpoptCalculatedQuantities *ip_cq)
This method is called once per iteration, after the iteration summary output has been printed.
Definition: IpNLPBoundsRemover.hpp:186
Ipopt::NLPBoundsRemover::nlp_
SmartPtr< NLP > nlp_
Pointer to the original NLP.
Definition: IpNLPBoundsRemover.hpp:259
Ipopt::SymMatrix
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:21
Ipopt::NLPBoundsRemover::GetSpaces
virtual bool GetSpaces(SmartPtr< const VectorSpace > &x_space, SmartPtr< const VectorSpace > &c_space, SmartPtr< const VectorSpace > &d_space, SmartPtr< const VectorSpace > &x_l_space, SmartPtr< const MatrixSpace > &px_l_space, SmartPtr< const VectorSpace > &x_u_space, SmartPtr< const MatrixSpace > &px_u_space, SmartPtr< const VectorSpace > &d_l_space, SmartPtr< const MatrixSpace > &pd_l_space, SmartPtr< const VectorSpace > &d_u_space, SmartPtr< const MatrixSpace > &pd_u_space, SmartPtr< const MatrixSpace > &Jac_c_space, SmartPtr< const MatrixSpace > &Jac_d_space, SmartPtr< const SymMatrixSpace > &Hess_lagrangian_space)
Method for creating the derived vector / matrix types.
Ipopt::NLPBoundsRemover::GetQuasiNewtonApproximationSpaces
virtual void GetQuasiNewtonApproximationSpaces(SmartPtr< VectorSpace > &approx_space, SmartPtr< Matrix > &P_approx)
Method for obtaining the subspace in which the limited-memory Hessian approximation should be done.
Definition: IpNLPBoundsRemover.hpp:220
Ipopt::NLPBoundsRemover::NLPBoundsRemover
NLPBoundsRemover(const NLPBoundsRemover &)
Copy Constructor.
Ipopt::SolverReturn
SolverReturn
enum for the return from the optimize algorithm
Definition: IpAlgTypes.hpp:20
Ipopt::OptionsList
This class stores a list of user set options.
Definition: IpOptionsList.hpp:33
Ipopt::NLPBoundsRemover::operator=
void operator=(const NLPBoundsRemover &)
Default Assignment Operator.
AlgorithmMode
AlgorithmMode
enum to indicate the mode in which the algorithm is
Definition: IpReturnCodes_inc.h:41
Ipopt::Vector
Vector Base Class.
Definition: IpVector.hpp:48
Ipopt::IteratesVector
Specialized CompoundVector class specifically for the algorithm iterates.
Definition: IpIteratesVector.hpp:26