Diana  0.8.3
DianaBasicNLPTask.hpp
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