Ipopt  3.11.8
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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 // $Id: IpNLPScaling.hpp 2036 2011-07-02 17:21:08Z stefan $
6 //
7 // Authors: Carl Laird, Andreas Waechter IBM 2004-08-13
8 
9 #ifndef __IPNLPSCALING_HPP__
10 #define __IPNLPSCALING_HPP__
11 
12 #include "IpOptionsList.hpp"
13 #include "IpRegOptions.hpp"
14 
15 namespace Ipopt
16 {
17  // forward declarations
18  class Vector;
19  class VectorSpace;
20  class Matrix;
21  class MatrixSpace;
22  class SymMatrix;
23  class SymMatrixSpace;
24  class ScaledMatrixSpace;
25  class SymScaledMatrixSpace;
26 
33  {
34  public:
38 
40  virtual ~NLPScalingObject();
42 
44  bool Initialize(const Journalist& jnlst,
45  const OptionsList& options,
46  const std::string& prefix)
47  {
48  jnlst_ = &jnlst;
49  return InitializeImpl(options, prefix);
50  }
51 
55  virtual Number apply_obj_scaling(const Number& f)=0;
57  virtual Number unapply_obj_scaling(const Number& f)=0;
59  virtual SmartPtr<Vector>
65  virtual SmartPtr<Vector>
77  virtual SmartPtr<Vector>
80  virtual SmartPtr<Vector>
89  virtual SmartPtr<Vector>
92  virtual SmartPtr<Vector>
104  virtual SmartPtr<const Matrix>
113 
118  const Matrix& Px_LU,
119  const SmartPtr<const Vector>& lu,
120  const VectorSpace& x_space);
123  const Matrix& Px_LU,
124  const SmartPtr<const Vector>& lu,
125  const VectorSpace& x_space);
128  const Matrix& Pd_LU,
129  const SmartPtr<const Vector>& lu,
130  const VectorSpace& d_space);
133  const Matrix& Pd_LU,
134  const SmartPtr<const Vector>& lu,
135  const VectorSpace& d_space);
138  const Matrix& Pd_LU,
139  const SmartPtr<const Vector>& lu,
140  const VectorSpace& d_space);
143  const Matrix& Pd_LU,
144  const SmartPtr<const Vector>& lu,
145  const VectorSpace& d_space);
147 
153  virtual SmartPtr<Vector>
156  virtual SmartPtr<const Vector>
160  virtual SmartPtr<Vector>
164  virtual SmartPtr<const Vector>
167 
172  virtual bool have_x_scaling()=0;
174  virtual bool have_c_scaling()=0;
176  virtual bool have_d_scaling()=0;
178 
182  virtual void DetermineScaling(const SmartPtr<const VectorSpace> x_space,
183  const SmartPtr<const VectorSpace> c_space,
184  const SmartPtr<const VectorSpace> d_space,
185  const SmartPtr<const MatrixSpace> jac_c_space,
186  const SmartPtr<const MatrixSpace> jac_d_space,
187  const SmartPtr<const SymMatrixSpace> h_space,
188  SmartPtr<const MatrixSpace>& new_jac_c_space,
189  SmartPtr<const MatrixSpace>& new_jac_d_space,
190  SmartPtr<const SymMatrixSpace>& new_h_space,
191  const Matrix& Px_L, const Vector& x_L,
192  const Matrix& Px_U, const Vector& x_U)=0;
193  protected:
196  virtual bool InitializeImpl(const OptionsList& options,
197  const std::string& prefix)=0;
198 
200  const Journalist& Jnlst() const
201  {
202  return *jnlst_;
203  }
204  private:
205 
214 
217 
219  void operator=(const NLPScalingObject&);
221 
223  };
224 
230  {
231  public:
235 
237  virtual ~StandardScalingBase();
239 
243  virtual Number apply_obj_scaling(const Number& f);
245  virtual Number unapply_obj_scaling(const Number& f);
247  virtual SmartPtr<Vector>
250  virtual SmartPtr<const Vector>
253  virtual SmartPtr<Vector>
256  virtual SmartPtr<const Vector>
259  virtual SmartPtr<const Vector>
262  virtual SmartPtr<const Vector>
265  virtual SmartPtr<Vector>
268  virtual SmartPtr<Vector>
271  virtual SmartPtr<const Vector>
274  virtual SmartPtr<const Vector>
277  virtual SmartPtr<Vector>
280  virtual SmartPtr<Vector>
286  virtual SmartPtr<const Matrix>
292  virtual SmartPtr<const Matrix>
301 
305  virtual bool have_x_scaling();
306  virtual bool have_c_scaling();
307  virtual bool have_d_scaling();
309 
313  virtual void DetermineScaling(const SmartPtr<const VectorSpace> x_space,
314  const SmartPtr<const VectorSpace> c_space,
315  const SmartPtr<const VectorSpace> d_space,
316  const SmartPtr<const MatrixSpace> jac_c_space,
317  const SmartPtr<const MatrixSpace> jac_d_space,
318  const SmartPtr<const SymMatrixSpace> h_space,
319  SmartPtr<const MatrixSpace>& new_jac_c_space,
320  SmartPtr<const MatrixSpace>& new_jac_d_space,
321  SmartPtr<const SymMatrixSpace>& new_h_space,
322  const Matrix& Px_L, const Vector& x_L,
323  const Matrix& Px_U, const Vector& x_U);
324 
327  static void RegisterOptions(SmartPtr<RegisteredOptions> roptions);
329 
330  protected:
332  virtual bool InitializeImpl(const OptionsList& options,
333  const std::string& prefix);
334 
339  virtual void DetermineScalingParametersImpl(
340  const SmartPtr<const VectorSpace> x_space,
341  const SmartPtr<const VectorSpace> c_space,
342  const SmartPtr<const VectorSpace> d_space,
343  const SmartPtr<const MatrixSpace> jac_c_space,
344  const SmartPtr<const MatrixSpace> jac_d_space,
345  const SmartPtr<const SymMatrixSpace> h_space,
346  const Matrix& Px_L, const Vector& x_L,
347  const Matrix& Px_U, const Vector& x_U,
348  Number& df,
349  SmartPtr<Vector>& dx,
350  SmartPtr<Vector>& dc,
351  SmartPtr<Vector>& dd)=0;
352 
353  private:
354 
363 
366 
368  void operator=(const StandardScalingBase&);
370 
381 
391 
397  };
398 
401  {
402  public:
406  {}
407 
410  {}
412 
413 
414  protected:
416  virtual void DetermineScalingParametersImpl(
417  const SmartPtr<const VectorSpace> x_space,
418  const SmartPtr<const VectorSpace> c_space,
419  const SmartPtr<const VectorSpace> d_space,
420  const SmartPtr<const MatrixSpace> jac_c_space,
421  const SmartPtr<const MatrixSpace> jac_d_space,
422  const SmartPtr<const SymMatrixSpace> h_space,
423  const Matrix& Px_L, const Vector& x_L,
424  const Matrix& Px_U, const Vector& x_U,
425  Number& df,
426  SmartPtr<Vector>& dx,
427  SmartPtr<Vector>& dc,
428  SmartPtr<Vector>& dd);
429 
430  private:
431 
440 
443 
445  void operator=(const NoNLPScalingObject&);
447  };
448 
449 } // namespace Ipopt
450 
451 #endif