Ipopt
trunk
|
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