Diana
0.8.3
|
00001 #ifndef DIANA_BASIC_NLP_TASK_HPP 00002 #define DIANA_BASIC_NLP_TASK_HPP 00003 00004 #include <CapeOpen.hpp> 00005 00006 namespace Numeric { 00007 namespace Solvers { 00008 namespace NLPTasks { 00009 00010 00011 // Forward declaration of interfaces 00012 class BasicNLPTask; 00013 00015 typedef std::vector<BasicNLPTask*> ArrayBasicNLPTask; 00016 00020 class BasicNLPTask : virtual public DianaNLPTask, virtual public ICapeSensNLPTask { 00021 public: 00024 BasicNLPTask(const Common::Parameter::CapeArrayParameterSpec& _soughtParams); 00025 00027 virtual ~BasicNLPTask(); 00028 00030 inline eCapeNLPTaskType Type() const { return CAPE_FIRSTRANGE; } 00031 00033 virtual void SetObjFunction(ICapeNLPFunction *func) 00034 throw(Common::Error::ECapeUnknown); 00035 00037 virtual CapeDouble CalcObjFunction() 00038 throw(Common::Error::ECapeUnknown, Common::Error::ECapeSolvingError); 00039 00041 virtual Common::Types::CapeArrayDouble GetObjFunctionGradient() 00042 throw(Common::Error::ECapeUnknown, Common::Error::ECapeSolvingError); 00043 00048 virtual const Diana::DianaSparseArray& GetConstraintsJacobian(ConstraintType _type) 00049 throw(Common::Error::ECapeUnknown, Common::Error::ECapeSolvingError); 00050 00052 virtual const Common::Types::CapeString& GetComponentName() const 00053 throw (Common::Error::ECapeUnknown); 00054 00056 virtual const Common::Types::CapeString& GetComponentDescription() const 00057 throw(Common::Error::ECapeUnknown); 00058 00059 protected: 00061 virtual CapeDouble EvaluateObjFunction() 00062 throw(Common::Error::ECapeUnknown, Common::Error::ECapeSolvingError); 00063 00064 protected: 00065 ICapeNLPFunction *eval; 00066 Diana::DianaSparseArray mtrConstraintsJacobian; 00067 DerivativeApproximationType daGradientApprType; 00068 Common::Types::CapeDouble dblEpsilon; 00069 00070 00071 00072 private: 00073 Common::Types::CapeString strName; 00074 Common::Types::CapeString strDescription; 00075 00076 }; 00077 } 00078 } 00079 } 00080 00081 #endif // DIANA_BASIC_NLP_TASK_HPP