Ipopt Documentation  
 
Loading...
Searching...
No Matches
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
12namespace Ipopt
13{
14
23class NLPBoundsRemover: public NLP
24{
25public:
28
32 NLP& nlp,
33 bool allow_twosided_inequalities = false
34 );
35
38 { }
40
43
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(
70 SmartPtr<const MatrixSpace>& Jac_c_space,
71 SmartPtr<const MatrixSpace>& Jac_d_space,
72 SmartPtr<const SymMatrixSpace>& Hess_lagrangian_space
73 );
74
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,
95 bool need_y_c,
97 bool need_y_d,
99 bool need_z_L,
101 bool need_z_U
102 );
103
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
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
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
234private:
245
249 const NLPBoundsRemover&
250 );
251
254 const NLPBoundsRemover&
255 );
257
260
263
266
269
272};
273
274} // namespace Ipopt
275
276#endif
AlgorithmMode
enum to indicate the mode in which the algorithm is
Class for all IPOPT specific calculated quantities.
Class to organize all the data required by the algorithm.
Definition: IpIpoptData.hpp:98
Specialized CompoundVector class specifically for the algorithm iterates.
Matrix Base Class.
Definition: IpMatrix.hpp:28
This is an adapter for an NLP that converts variable bound constraints to inequality constraints.
void operator=(const NLPBoundsRemover &)
Default Assignment Operator.
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.
virtual bool Eval_c(const Vector &x, Vector &c)
bool allow_twosided_inequalities_
Flag indicating whether twosided inequality constraints are allowed.
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.
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.
virtual bool Eval_grad_f(const Vector &x, Vector &g_f)
virtual bool Eval_jac_c(const Vector &x, Matrix &jac_c)
virtual bool Eval_f(const Vector &x, Number &f)
SmartPtr< NLP > nlp()
Accessor method to the original NLP.
NLPBoundsRemover(const NLPBoundsRemover &)
Copy Constructor.
SmartPtr< const Matrix > Px_u_orig_
Pointer to the expansion matrix for the upper x bounds.
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.
NLPBoundsRemover()
Default Constructor.
virtual bool Eval_d(const Vector &x, Vector &d)
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.
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 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_jac_d(const Vector &x, Matrix &jac_d)
virtual bool Eval_h(const Vector &x, Number obj_factor, const Vector &yc, const Vector &yd, SymMatrix &h)
SmartPtr< const Matrix > Px_l_orig_
Pointer to the expansion matrix for the lower x bounds.
SmartPtr< NLP > nlp_
Pointer to the original NLP.
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.
SmartPtr< const VectorSpace > d_space_orig_
Pointer to the original d space.
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 GetWarmStartIterate(IteratesVector &warm_start_iterate)
Method for obtaining an entire iterate as a warmstart point.
virtual ~NLPBoundsRemover()
Destructor.
This class stores a list of user set options.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:172
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:21
Vector Base Class.
Definition: IpVector.hpp:48
This file contains a base class for all exceptions and a set of macros to help with exceptions.
SolverReturn
enum for the return from the optimize algorithm
Definition: IpAlgTypes.hpp:20
int Index
Type of all indices of vectors, matrices etc.
Definition: IpTypes.hpp:17
double Number
Type of all numbers.
Definition: IpTypes.hpp:15