- Main Page
- Namespaces
- Classes
- Files

- File List
- File Members

# /home/coin/SVN-release/Ipopt-3.5.1/Ipopt/src/Algorithm/IpEquilibrationScaling.hpp

Go to the documentation of this file.

    00001 // Copyright (C) 2007 International Business Machines and others.
    00002 // All Rights Reserved.
    00003 // This code is published under the Common Public License.
    00004 //
    00005 // $Id: IpEquilibrationScaling.hpp 985 2007-05-30 23:07:40Z andreasw $
    00006 //
    00007 // Authors:  Andreas Waechter            IBM    2007-05-21
    00008
    00009 #ifndef __IPEQUILIBRATIONSCALING_HPP__
    00010 #define __IPEQUILIBRATIONSCALING_HPP__
    00011
    00012 #include "IpNLPScaling.hpp"
    00013 #include "IpNLP.hpp"
    00014
    00015 namespace Ipopt
    00016 {
    00021   class EquilibrationScaling : public StandardScalingBase
    00022   {
    00023   public:
    00026     EquilibrationScaling(const SmartPtr<NLP>& nlp)
    00027         :
    00028         StandardScalingBase(),
    00029         nlp_(nlp)
    00030     {}
    00031
    00033     virtual ~EquilibrationScaling()
    00034     {}
    00036
    00040     static void RegisterOptions(const SmartPtr<RegisteredOptions>& roptions);
    00042
    00043   protected:
    00045     bool InitializeImpl(const OptionsList& options,
    00046                         const std::string& prefix);
    00047
    00048     virtual void DetermineScalingParametersImpl(
    00049       const SmartPtr<const VectorSpace> x_space,
    00050       const SmartPtr<const VectorSpace> c_space,
    00051       const SmartPtr<const VectorSpace> d_space,
    00052       const SmartPtr<const MatrixSpace> jac_c_space,
    00053       const SmartPtr<const MatrixSpace> jac_d_space,
    00054       const SmartPtr<const SymMatrixSpace> h_space,
    00055       const Matrix& Px_L, const Vector& x_L,
    00056       const Matrix& Px_U, const Vector& x_U,
    00057       Number& df,
    00058       SmartPtr<Vector>& dx,
    00059       SmartPtr<Vector>& dc,
    00060       SmartPtr<Vector>& dd);
    00061
    00062   private:
    00063
    00072
    00074     EquilibrationScaling(const EquilibrationScaling&);
    00075
    00077     void operator=(const EquilibrationScaling&);
    00079
    00081     SmartPtr<NLP> nlp_;
    00082
    00085     Number point_perturbation_radius_;
    00086   };
    00087
    00092   class PointPerturber : public ReferencedObject
    00093   {
    00094   public:
    00097     PointPerturber(const Vector& reference_point,
    00098                    Number random_pert_radius,
    00099                    const Matrix& Px_L, const Vector& x_L,
    00100                    const Matrix& Px_U, const Vector& x_U);
    00101
    00103     virtual ~PointPerturber()
    00104     {}
    00106
    00108     SmartPtr<Vector> MakeNewPerturbedPoint() const;
    00109
    00110   private:
    00111
    00120
    00122     PointPerturber(const PointPerturber&);
    00123
    00125     void operator=(const PointPerturber&);
    00127
    00129     SmartPtr<Vector> ref_point_;
    00130
    00132     SmartPtr<Vector> pert_dir_;
    00133   };
    00134
    00135 } // namespace Ipopt
    00136 #endif