00001
00002
00003
00004
00005
00006
00007
00008
00009 #ifndef __IPUSERSCALING_HPP__
00010 #define __IPUSERSCALING_HPP__
00011
00012 #include "IpNLPScaling.hpp"
00013 #include "IpNLP.hpp"
00014
00015 namespace Ipopt
00016 {
00020 class UserScaling : public StandardScalingBase
00021 {
00022 public:
00025 UserScaling(const SmartPtr<const NLP>& nlp)
00026 :
00027 StandardScalingBase(),
00028 nlp_(nlp)
00029 {}
00030
00032 virtual ~UserScaling()
00033 {}
00035
00036 protected:
00037 virtual void DetermineScalingParametersImpl(
00038 const SmartPtr<const VectorSpace> x_space,
00039 const SmartPtr<const VectorSpace> c_space,
00040 const SmartPtr<const VectorSpace> d_space,
00041 const SmartPtr<const MatrixSpace> jac_c_space,
00042 const SmartPtr<const MatrixSpace> jac_d_space,
00043 const SmartPtr<const SymMatrixSpace> h_space,
00044 const Matrix& Px_L, const Vector& x_L,
00045 const Matrix& Px_U, const Vector& x_U,
00046 Number& df,
00047 SmartPtr<Vector>& dx,
00048 SmartPtr<Vector>& dc,
00049 SmartPtr<Vector>& dd);
00050
00051 private:
00052
00061
00063 UserScaling(const UserScaling&);
00064
00066 void operator=(const UserScaling&);
00068
00070 SmartPtr<const NLP> nlp_;
00071 };
00072 }
00073 #endif