Ipopt Documentation  
 
Loading...
Searching...
No Matches
IpNLPScaling.hpp
Go to the documentation of this file.
1// Copyright (C) 2004, 2007 International Business Machines and others.
2// All Rights Reserved.
3// This code is published under the Eclipse Public License.
4//
5// Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
6
7#ifndef __IPNLPSCALING_HPP__
8#define __IPNLPSCALING_HPP__
9
10#include "IpOptionsList.hpp"
11#include "IpRegOptions.hpp"
12
13namespace Ipopt
14{
15// forward declarations
16class Vector;
17class VectorSpace;
18class Matrix;
19class MatrixSpace;
20class SymMatrix;
21class SymMatrixSpace;
22class ScaledMatrixSpace;
23class SymScaledMatrixSpace;
24
32{
33public:
37
41
44 const Journalist& jnlst,
45 const OptionsList& options,
46 const std::string& prefix
47 )
48 {
49 jnlst_ = &jnlst;
50 return InitializeImpl(options, prefix);
51 }
52
55
57 const Number& f
58 ) = 0;
59
62 const Number& f
63 ) = 0;
64
66 virtual SmartPtr<Vector>
69 ) = 0;
70
75 ) = 0;
76
78 virtual SmartPtr<Vector>
81 ) = 0;
82
87 ) = 0;
88
93 ) = 0;
94
99 ) = 0;
100
102 virtual SmartPtr<Vector>
105 ) = 0;
106
108 virtual SmartPtr<Vector>
111 ) = 0;
112
117 ) = 0;
118
123 ) = 0;
124
126 virtual SmartPtr<Vector>
129 ) = 0;
130
132 virtual SmartPtr<Vector>
135 ) = 0;
136
145 ) = 0;
146
155 ) = 0;
156
165 ) = 0;
167
170
172 const Matrix& Px_LU,
173 const SmartPtr<const Vector>& lu,
174 const VectorSpace& x_space
175 );
176
179 const Matrix& Px_LU,
180 const SmartPtr<const Vector>& lu,
181 const VectorSpace& x_space
182 );
183
186 const Matrix& Pd_LU,
187 const SmartPtr<const Vector>& lu,
188 const VectorSpace& d_space
189 );
190
193 const Matrix& Pd_LU,
194 const SmartPtr<const Vector>& lu,
195 const VectorSpace& d_space
196 );
197
200 const Matrix& Pd_LU,
201 const SmartPtr<const Vector>& lu,
202 const VectorSpace& d_space
203 );
204
207 const Matrix& Pd_LU,
208 const SmartPtr<const Vector>& lu,
209 const VectorSpace& d_space
210 );
212
217
218 virtual SmartPtr<Vector>
221 );
222
227 );
228
231 virtual SmartPtr<Vector>
234 );
235
241 );
243
246
247 virtual bool have_x_scaling() = 0;
249 virtual bool have_c_scaling() = 0;
251 virtual bool have_d_scaling() = 0;
253
257 virtual void DetermineScaling(
258 const SmartPtr<const VectorSpace> x_space,
259 const SmartPtr<const VectorSpace> c_space,
260 const SmartPtr<const VectorSpace> d_space,
261 const SmartPtr<const MatrixSpace> jac_c_space,
262 const SmartPtr<const MatrixSpace> jac_d_space,
263 const SmartPtr<const SymMatrixSpace> h_space,
264 SmartPtr<const MatrixSpace>& new_jac_c_space,
265 SmartPtr<const MatrixSpace>& new_jac_d_space,
267 const Matrix& Px_L,
268 const Vector& x_L,
269 const Matrix& Px_U,
270 const Vector& x_U
271 ) = 0;
272
273protected:
275 virtual bool InitializeImpl(
276 const OptionsList& options,
277 const std::string& prefix
278 ) = 0;
279
281 const Journalist& Jnlst() const
282 {
283 return *jnlst_;
284 }
285
286private:
297
299 const NLPScalingObject&
300 );
301
304 const NLPScalingObject&
305 );
307
309};
310
316{
317public:
321
325
329 const Number& f
330 );
331
333 const Number& f
334 );
335
336 virtual SmartPtr<Vector>
339 );
340
344 );
345
346 virtual SmartPtr<Vector>
349 );
350
354 );
355
359 );
360
364 );
365
366 virtual SmartPtr<Vector>
369 );
370
371 virtual SmartPtr<Vector>
374 );
375
379 );
380
384 );
385
386 virtual SmartPtr<Vector>
389 );
390
391 virtual SmartPtr<Vector>
394 );
395
399 );
400
404 );
405
410
413 virtual bool have_x_scaling();
414 virtual bool have_c_scaling();
415 virtual bool have_d_scaling();
417
421 virtual void DetermineScaling(
422 const SmartPtr<const VectorSpace> x_space,
423 const SmartPtr<const VectorSpace> c_space,
424 const SmartPtr<const VectorSpace> d_space,
425 const SmartPtr<const MatrixSpace> jac_c_space,
426 const SmartPtr<const MatrixSpace> jac_d_space,
427 const SmartPtr<const SymMatrixSpace> h_space,
428 SmartPtr<const MatrixSpace>& new_jac_c_space,
429 SmartPtr<const MatrixSpace>& new_jac_d_space,
431 const Matrix& Px_L,
432 const Vector& x_L,
433 const Matrix& Px_U,
434 const Vector& x_U
435 );
436
437 static void RegisterOptions(
439 );
440
441protected:
442 virtual bool InitializeImpl(
443 const OptionsList& options,
444 const std::string& prefix
445 );
446
455 const SmartPtr<const VectorSpace> x_space,
456 const SmartPtr<const VectorSpace> c_space,
457 const SmartPtr<const VectorSpace> d_space,
458 const SmartPtr<const MatrixSpace> jac_c_space,
459 const SmartPtr<const MatrixSpace> jac_d_space,
460 const SmartPtr<const SymMatrixSpace> h_space,
461 const Matrix& Px_L,
462 const Vector& x_L,
463 const Matrix& Px_U,
464 const Vector& x_U,
465 Number& df,
469 ) = 0;
470
471private:
482
485 );
486
490 );
492
498
500
504
507
509
512
516
519
522};
523
526{
527public:
532
535 { }
537
538protected:
541 const SmartPtr<const VectorSpace> x_space,
542 const SmartPtr<const VectorSpace> c_space,
543 const SmartPtr<const VectorSpace> d_space,
544 const SmartPtr<const MatrixSpace> jac_c_space,
545 const SmartPtr<const MatrixSpace> jac_d_space,
546 const SmartPtr<const SymMatrixSpace> h_space,
547 const Matrix& Px_L,
548 const Vector& x_L,
549 const Matrix& Px_U,
550 const Vector& x_U,
551 Number& df,
555 );
556
557private:
568
570 const NoNLPScalingObject&
571 );
572
575 const NoNLPScalingObject&
576 );
578};
579
580} // namespace Ipopt
581
582#endif
Class responsible for all message output.
Matrix Base Class.
Definition IpMatrix.hpp:28
This is the abstract base class for problem scaling.
SmartPtr< const Vector > apply_vector_scaling_d_LU(const Matrix &Pd_LU, const SmartPtr< const Vector > &lu, const VectorSpace &d_space)
Returns an d-scaled vector in the d_L or d_U space.
virtual SmartPtr< const Matrix > apply_jac_c_scaling(SmartPtr< const Matrix > matrix)=0
Returns a scaled version of the Jacobian for c.
virtual SmartPtr< Vector > apply_vector_scaling_x_NonConst(const SmartPtr< const Vector > &v)=0
Returns an x-scaled version of the given vector.
virtual SmartPtr< Vector > apply_grad_obj_scaling_NonConst(const SmartPtr< const Vector > &v)
Methods for scaling the gradient of the objective - wraps the virtual methods above.
virtual SmartPtr< Vector > unapply_grad_obj_scaling_NonConst(const SmartPtr< const Vector > &v)
Returns a grad_f unscaled version (d_f * D_x^{-1}) of the given vector.
const Journalist & Jnlst() const
Accessor method for the journalist.
virtual SmartPtr< const Vector > unapply_vector_scaling_x(const SmartPtr< const Vector > &v)=0
Returns an x-unscaled version of the given vector.
virtual SmartPtr< const Vector > unapply_grad_obj_scaling(const SmartPtr< const Vector > &v)
Returns a grad_f unscaled version (d_f * D_x^{-1}) of the given vector.
virtual SmartPtr< Vector > unapply_vector_scaling_x_NonConst(const SmartPtr< const Vector > &v)=0
Returns an x-unscaled version of the given vector.
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)=0
Initialization method that has to be overloaded by for each derived class.
virtual SmartPtr< const Vector > unapply_vector_scaling_c(const SmartPtr< const Vector > &v)=0
Returns an c-unscaled version of the given vector.
virtual bool have_d_scaling()=0
Returns true if the inequality constraints are scaled.
NLPScalingObject(const NLPScalingObject &)
Copy Constructor.
virtual Number unapply_obj_scaling(const Number &f)=0
Returns an obj-unscaled version of the given scalar.
virtual ~NLPScalingObject()
Destructor.
SmartPtr< Vector > apply_vector_scaling_x_LU_NonConst(const Matrix &Px_LU, const SmartPtr< const Vector > &lu, const VectorSpace &x_space)
Methods for scaling bounds - these wrap those above.
SmartPtr< const Journalist > jnlst_
virtual SmartPtr< Vector > apply_vector_scaling_c_NonConst(const SmartPtr< const Vector > &v)=0
Returns an c-scaled version of the given vector.
virtual void DetermineScaling(const SmartPtr< const VectorSpace > x_space, const SmartPtr< const VectorSpace > c_space, const SmartPtr< const VectorSpace > d_space, const SmartPtr< const MatrixSpace > jac_c_space, const SmartPtr< const MatrixSpace > jac_d_space, const SmartPtr< const SymMatrixSpace > h_space, SmartPtr< const MatrixSpace > &new_jac_c_space, SmartPtr< const MatrixSpace > &new_jac_d_space, SmartPtr< const SymMatrixSpace > &new_h_space, const Matrix &Px_L, const Vector &x_L, const Matrix &Px_U, const Vector &x_U)=0
This method is called by the IpoptNLP's at a convenient time to compute and/or read scaling factors.
SmartPtr< const Vector > unapply_vector_scaling_d_LU(const Matrix &Pd_LU, const SmartPtr< const Vector > &lu, const VectorSpace &d_space)
Returns an d-unscaled vector in the d_L or d_U space.
virtual SmartPtr< const Vector > apply_vector_scaling_c(const SmartPtr< const Vector > &v)=0
Returns an c-scaled version of the given vector.
virtual SmartPtr< const Matrix > apply_jac_d_scaling(SmartPtr< const Matrix > matrix)=0
Returns a scaled version of the Jacobian for d.
virtual bool have_x_scaling()=0
Returns true if the primal x variables are scaled.
virtual SmartPtr< Vector > apply_vector_scaling_d_NonConst(const SmartPtr< const Vector > &v)=0
Returns an d-scaled version of the given vector.
virtual SmartPtr< const Vector > apply_vector_scaling_x(const SmartPtr< const Vector > &v)=0
Returns an x-scaled version of the given vector.
virtual SmartPtr< Vector > unapply_vector_scaling_d_NonConst(const SmartPtr< const Vector > &v)=0
Returns an d-unscaled version of the given vector.
virtual SmartPtr< const SymMatrix > apply_hessian_scaling(SmartPtr< const SymMatrix > matrix)=0
Returns a scaled version of the Hessian of the Lagrangian.
SmartPtr< Vector > unapply_vector_scaling_d_LU_NonConst(const Matrix &Pd_LU, const SmartPtr< const Vector > &lu, const VectorSpace &d_space)
Returns an d-unscaled vector in the d_L or d_U space.
SmartPtr< Vector > apply_vector_scaling_d_LU_NonConst(const Matrix &Pd_LU, const SmartPtr< const Vector > &lu, const VectorSpace &d_space)
Returns an d-scaled vector in the d_L or d_U space.
virtual SmartPtr< const Vector > apply_grad_obj_scaling(const SmartPtr< const Vector > &v)
Returns a grad_f scaled version (d_f * D_x^{-1}) of the given vector.
virtual bool have_c_scaling()=0
Returns true if the equality constraints are scaled.
virtual SmartPtr< Vector > unapply_vector_scaling_c_NonConst(const SmartPtr< const Vector > &v)=0
Returns an c-unscaled version of the given vector.
virtual SmartPtr< const Vector > apply_vector_scaling_d(const SmartPtr< const Vector > &v)=0
Returns an d-scaled version of the given vector.
virtual Number apply_obj_scaling(const Number &f)=0
Methods to map scaled and unscaled matrices.
void operator=(const NLPScalingObject &)
Default Assignment Operator.
virtual SmartPtr< const Vector > unapply_vector_scaling_d(const SmartPtr< const Vector > &v)=0
Returns an d-unscaled version of the given vector.
SmartPtr< const Vector > apply_vector_scaling_x_LU(const Matrix &Px_LU, const SmartPtr< const Vector > &lu, const VectorSpace &x_space)
Returns an x-scaled vector in the x_L or x_U space.
bool Initialize(const Journalist &jnlst, const OptionsList &options, const std::string &prefix)
Method to initialize the options.
Class implementing the scaling object that doesn't to any scaling.
void operator=(const NoNLPScalingObject &)
Default Assignment Operator.
virtual void DetermineScalingParametersImpl(const SmartPtr< const VectorSpace > x_space, const SmartPtr< const VectorSpace > c_space, const SmartPtr< const VectorSpace > d_space, const SmartPtr< const MatrixSpace > jac_c_space, const SmartPtr< const MatrixSpace > jac_d_space, const SmartPtr< const SymMatrixSpace > h_space, const Matrix &Px_L, const Vector &x_L, const Matrix &Px_U, const Vector &x_U, Number &df, SmartPtr< Vector > &dx, SmartPtr< Vector > &dc, SmartPtr< Vector > &dd)
Overloaded from StandardScalingBase.
virtual ~NoNLPScalingObject()
Destructor.
NoNLPScalingObject(const NoNLPScalingObject &)
Copy Constructor.
This class stores a list of user set options.
Storing the reference count of all the smart pointers that currently reference it.
Template class for Smart Pointers.
This is a base class for many standard scaling techniques.
virtual SmartPtr< Vector > apply_vector_scaling_d_NonConst(const SmartPtr< const Vector > &v)
Returns an d-scaled version of the given vector.
virtual SmartPtr< const Vector > unapply_vector_scaling_d(const SmartPtr< const Vector > &v)
Returns an d-unscaled version of the given vector.
virtual Number unapply_obj_scaling(const Number &f)
Returns an obj-unscaled version of the given scalar.
virtual SmartPtr< const Vector > unapply_vector_scaling_x(const SmartPtr< const Vector > &v)
Returns an x-unscaled version of the given vector.
StandardScalingBase(const StandardScalingBase &)
Copy Constructor.
virtual bool InitializeImpl(const OptionsList &options, const std::string &prefix)
Initialization method that has to be overloaded by for each derived class.
SmartPtr< ScaledMatrixSpace > scaled_jac_d_space_
Scaled Jacobian of d space.
virtual SmartPtr< Vector > unapply_vector_scaling_x_NonConst(const SmartPtr< const Vector > &v)
Returns an x-unscaled version of the given vector.
virtual SmartPtr< Vector > unapply_vector_scaling_d_NonConst(const SmartPtr< const Vector > &v)
Returns an d-unscaled version of the given vector.
SmartPtr< ScaledMatrixSpace > scaled_jac_c_space_
Scaled Matrix Spaces.
virtual SmartPtr< const Matrix > apply_jac_c_scaling(SmartPtr< const Matrix > matrix)
Returns a scaled version of the Jacobian for c.
virtual ~StandardScalingBase()
Destructor.
virtual void DetermineScalingParametersImpl(const SmartPtr< const VectorSpace > x_space, const SmartPtr< const VectorSpace > c_space, const SmartPtr< const VectorSpace > d_space, const SmartPtr< const MatrixSpace > jac_c_space, const SmartPtr< const MatrixSpace > jac_d_space, const SmartPtr< const SymMatrixSpace > h_space, const Matrix &Px_L, const Vector &x_L, const Matrix &Px_U, const Vector &x_U, Number &df, SmartPtr< Vector > &dx, SmartPtr< Vector > &dc, SmartPtr< Vector > &dd)=0
This is the method that has to be overloaded by a particular scaling method that somehow computes the...
void operator=(const StandardScalingBase &)
Default Assignment Operator.
virtual bool have_c_scaling()
Returns true if the equality constraints are scaled.
virtual void DetermineScaling(const SmartPtr< const VectorSpace > x_space, const SmartPtr< const VectorSpace > c_space, const SmartPtr< const VectorSpace > d_space, const SmartPtr< const MatrixSpace > jac_c_space, const SmartPtr< const MatrixSpace > jac_d_space, const SmartPtr< const SymMatrixSpace > h_space, SmartPtr< const MatrixSpace > &new_jac_c_space, SmartPtr< const MatrixSpace > &new_jac_d_space, SmartPtr< const SymMatrixSpace > &new_h_space, const Matrix &Px_L, const Vector &x_L, const Matrix &Px_U, const Vector &x_U)
This method is called by the IpoptNLP's at a convenient time to compute and/or read scaling factors.
virtual SmartPtr< const Vector > unapply_vector_scaling_c(const SmartPtr< const Vector > &v)
Returns an c-unscaled version of the given vector.
virtual SmartPtr< Vector > unapply_vector_scaling_c_NonConst(const SmartPtr< const Vector > &v)
Returns an c-unscaled version of the given vector.
virtual SmartPtr< const SymMatrix > apply_hessian_scaling(SmartPtr< const SymMatrix > matrix)
Returns a scaled version of the Hessian of the Lagrangian.
virtual SmartPtr< Vector > apply_vector_scaling_x_NonConst(const SmartPtr< const Vector > &v)
Returns an x-scaled version of the given vector.
static void RegisterOptions(SmartPtr< RegisteredOptions > roptions)
virtual SmartPtr< Vector > apply_vector_scaling_c_NonConst(const SmartPtr< const Vector > &v)
Returns an c-scaled version of the given vector.
virtual bool have_x_scaling()
Returns true if the primal x variables are scaled.
SmartPtr< Vector > dx_
x scaling
virtual SmartPtr< const Vector > apply_vector_scaling_c(const SmartPtr< const Vector > &v)
Returns an c-scaled version of the given vector.
SmartPtr< SymScaledMatrixSpace > scaled_h_space_
Scaled Hessian of Lagrangian spacea.
virtual Number apply_obj_scaling(const Number &f)
Methods to map scaled and unscaled matrices.
virtual bool have_d_scaling()
Returns true if the inequality constraints are scaled.
Number obj_scaling_factor_
Additional scaling value for the objective function.
virtual SmartPtr< const Matrix > apply_jac_d_scaling(SmartPtr< const Matrix > matrix)
Returns a scaled version of the Jacobian for d.
virtual SmartPtr< const Vector > apply_vector_scaling_x(const SmartPtr< const Vector > &v)
Returns an x-scaled version of the given vector.
virtual SmartPtr< const Vector > apply_vector_scaling_d(const SmartPtr< const Vector > &v)
Returns an d-scaled version of the given vector.
Number df_
Scaling parameters - we only need to keep copies of the objective scaling and the x scaling - the oth...
VectorSpace base class, corresponding to the Vector base class.
Definition IpVector.hpp:473
Vector Base Class.
Definition IpVector.hpp:48
#define IPOPTLIB_EXPORT
This file contains a base class for all exceptions and a set of macros to help with exceptions.
ipnumber Number
Type of all numbers.
Definition IpTypes.hpp:17