/home/coin/SVN-release/CoinAll-1.1.0/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

Generated on Sun Nov 14 14:06:34 2010 for Coin-All by  doxygen 1.4.7