IpGradientScaling.hpp
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __IPGRADIENTCALING_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 Number& df,
00056 SmartPtr<Vector>& dx,
00057 SmartPtr<Vector>& dc,
00058 SmartPtr<Vector>& dd);
00059
00060 private:
00061
00070
00072 GradientScaling(const GradientScaling&);
00073
00075 void operator=(const GradientScaling&);
00077
00079 SmartPtr<NLP> nlp_;
00080
00082 Number scaling_max_gradient_;
00083 };
00084 }
00085 #endif