Ipopt  trunk
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines
IpGradientScaling.hpp
Go to the documentation of this file.
00001 // Copyright (C) 2005, 2009 International Business Machines and others.
00002 // All Rights Reserved.
00003 // This code is published under the Eclipse Public License.
00004 //
00005 // $Id$
00006 //
00007 // Authors:  Carl Laird, Andreas Waechter     IBM    2005-07-13
00008 
00009 #ifndef __IPGRADIENTSCALING_HPP__
00010 #define __IPGRADIENTSCALING_HPP__
00011 
00012 #include "IpNLPScaling.hpp"
00013 #include "IpNLP.hpp"
00014 
00015 namespace Ipopt
00016 {
00021   class GradientScaling : public StandardScalingBase
00022   {
00023   public:
00026     GradientScaling(const SmartPtr<NLP>& nlp)
00027         :
00028         StandardScalingBase(),
00029         nlp_(nlp)
00030     {}
00031 
00033     virtual ~GradientScaling()
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     GradientScaling(const GradientScaling&);
00075 
00077     void operator=(const GradientScaling&);
00079 
00081     SmartPtr<NLP> nlp_;
00082 
00084     Number scaling_max_gradient_;
00085 
00087     Number scaling_obj_target_gradient_;
00088 
00090     Number scaling_constr_target_gradient_;
00091 
00093     Number scaling_min_value_;
00094   };
00095 } // namespace Ipopt
00096 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines