00001 // NetworkMinimizableDirector.h: interface for the NetworkMinimizableDirector class. 00002 // 00004 00005 #if !defined(AFX_NETWORKMINIMIZABLEDIRECTOR_H__C03A8E92_E561_4180_B799_A6972926C1B7__INCLUDED_) 00006 #define AFX_NETWORKMINIMIZABLEDIRECTOR_H__C03A8E92_E561_4180_B799_A6972926C1B7__INCLUDED_ 00007 00008 #if _MSC_VER > 1000 00009 #pragma once 00010 #endif // _MSC_VER > 1000 00011 00012 #include "SingleNetworkMinimizable.h" 00013 00014 class NetworkMinimizableDirector : public NLLSMinimizable 00015 { 00016 public: 00017 NetworkMinimizableDirector(); 00018 virtual ~NetworkMinimizableDirector(); 00019 // Inherited from Minimizable - should return the size of Union_i(p_i) over 00020 // _minimizableList (pure virtual) 00021 virtual int GetNParameters() = 0; 00022 // Inherited from Minimizable - returns the summed objective function for all 00023 // minimizables in _minimizableList 00024 virtual double ObjectiveFunction(double *parameters); 00025 // Inherited from NLLSMinimizable - computes residuals for all the individual 00026 // minimizables in _minimizableList and stores them appropriately 00027 virtual double ComputeResiduals(double *parameters); 00028 virtual double ComputeES(double *parameters, double T); 00029 virtual double EntropyShift(double T); 00030 virtual double F(double *parameters, double T); 00031 virtual double F0(double *parameters, double T); 00032 // Inherited from Minimizable - should return the appropriate parameter 00033 // (pure virtual) 00034 virtual double GetParameter(int parIndex) = 0; 00035 // Returns a single mover 00036 virtual CReactionMover *GetMover(int moverIndex) {return _moverList[moverIndex];} 00037 // Returns the number of experiments 00038 virtual int GetNExperiments() const {return _experimentList.size();} 00039 // Returns a single reaction network 00040 virtual ReactionNetwork *GetReactionNetwork(int networkIndex) {return _networkList[networkIndex];} 00041 // Dumps information about residuals order to a file 00042 virtual void DumpResidualInfo(); 00043 private: 00044 // Initialization of conditions for each minimizable 00045 virtual void DefineExperiments() = 0; 00046 protected: 00047 // std::vector<SingleNetworkMinimizable *> _minimizableList; 00048 std::vector<NetworkMinimizable *> _minimizableList; 00049 std::vector<Experiment *> _experimentList; 00050 std::vector<ReactionNetwork *> _networkList; 00051 std::vector<CReactionMover *> _moverList; 00052 // indices of parameters (if any) that have a cost for deviation from guessed values 00053 std::vector<int> m_iPriorList; 00054 // penalty for difficult integrations; always make it the last residual in 00055 // the list 00056 double m_dGammaSquared; 00057 }; 00058 00059 #endif // !defined(AFX_NETWORKMINIMIZABLEDIRECTOR_H__C03A8E92_E561_4180_B799_A6972926C1B7__INCLUDED_)