Ipopt Documentation  
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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:
27 
32  NLP& nlp,
33  bool allow_twosided_inequalities = false
34  );
35 
38  { }
40 
42 
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 
118  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 
171  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 
208  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:
244 
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
virtual ~NLPBoundsRemover()
Destructor.
Specialized CompoundVector class specifically for the algorithm iterates.
Class for all IPOPT specific calculated quantities.
SmartPtr< NLP > nlp()
Accessor method to the original NLP.
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...
AlgorithmMode
enum to indicate the mode in which the algorithm is
double Number
Type of all numbers.
Definition: IpTypes.hpp:15
Vector Base Class.
Definition: IpVector.hpp:47
virtual bool Eval_jac_c(const Vector &x, Matrix &jac_c)
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...
bool allow_twosided_inequalities_
Flag indicating whether twosided inequality constraints are allowed.
virtual bool Eval_jac_d(const Vector &x, Matrix &jac_d)
SmartPtr< const Matrix > Px_u_orig_
Pointer to the expansion matrix for the upper x bounds.
virtual bool Eval_h(const Vector &x, Number obj_factor, const Vector &yc, const Vector &yd, SymMatrix &h)
virtual bool Eval_f(const Vector &x, Number &f)
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:20
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:171
This class stores a list of user set options.
SolverReturn
enum for the return from the optimize algorithm
Definition: IpAlgTypes.hpp:19
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.
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.
virtual bool Eval_grad_f(const Vector &x, Vector &g_f)
Matrix Base Class.
Definition: IpMatrix.hpp:27
Class to organize all the data required by the algorithm.
Definition: IpIpoptData.hpp:97
NLPBoundsRemover()
Default Constructor.
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:17
SmartPtr< const VectorSpace > d_space_orig_
Pointer to the original d space.
virtual bool Eval_c(const Vector &x, Vector &c)
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.
This is an adapter for an NLP that converts variable bound constraints to inequality constraints...
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.
virtual bool GetWarmStartIterate(IteratesVector &warm_start_iterate)
Method for obtaining an entire iterate as a warmstart point.
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...
virtual bool Eval_d(const Vector &x, Vector &d)
void operator=(const NLPBoundsRemover &)
Default Assignment Operator.
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.
SmartPtr< const Matrix > Px_l_orig_
Pointer to the expansion matrix for the lower x bounds.
SmartPtr< NLP > nlp_
Pointer to the original NLP.