00001
00002
00004
00005 #if !defined(AFX_NETWORKMINIMIZABLE_H__8F38BFB2_7B39_41DB_A979_3A20AD69180D__INCLUDED_)
00006 #define AFX_NETWORKMINIMIZABLE_H__8F38BFB2_7B39_41DB_A979_3A20AD69180D__INCLUDED_
00007
00008 #if _MSC_VER > 1000
00009 #pragma once
00010 #endif // _MSC_VER > 1000
00011
00012 #include <iomanip>
00013 #include <cmath>
00014 #include <assert.h>
00015 #include "SubjectObserver.h"
00016 #include "NLLSMinimizable.h"
00017 #include "Experiment.h"
00018 #include "ReactionMover.h"
00019 #include "CellAverageObserver.h"
00020 #include "ConversionFactor.h"
00021
00022 class NetworkMinimizable : public NLLSMinimizable, public Subject
00023 {
00024 public:
00025
00026 NetworkMinimizable();
00027 virtual ~NetworkMinimizable();
00028 virtual void Initialize(std::vector<Experiment *> experiments, std::vector<CReactionMover *> reactionMovers, int nCells, bool rateConstantsOptimizable, bool initialChemConcOptimizable, bool logsInObjectiveFunction, double timeSeriesWeight, double rateConstantsWeight, double initialChemConcWeight);
00029 virtual void Initialize(Experiment *experiment, CReactionMover *reactionMover, int nCells, bool rateConstantsOptimizable, bool initialChemConcOptimizable, bool logsInObjectiveFunction, double timeSeriesWeight, double rateConstantsWeight, double initialChemConcWeight);
00030
00031 int GetNCells() {return this->nCells;}
00032 bool GetRateConstantsOptimizable() const {return rateConstantsOptimizable;}
00033 bool GetInitialChemConcOptimizable() const {return initialChemConcOptimizable;}
00034 bool GetLogsInObjectiveFunction() const {return logsInObjectiveFunction;}
00035 double GetTimeSeriesWeight() {return this->timeSeriesWeight;}
00036 double GetRateConstantsWeight() {return this->rateConstantsWeight;}
00037 double GetInitialChemConcWeight() {return this->initialChemConcWeight;}
00038 void SetTimeSeriesWeight(double timeSeriesWeight) {this->timeSeriesWeight = timeSeriesWeight;}
00039 void SetRateConstantsWeight(double rateConstantsWeight) {this->rateConstantsWeight = rateConstantsWeight;}
00040 void SetInitialChemConcWeight(double initialChemConcWeight) {this->initialChemConcWeight = initialChemConcWeight;}
00041 CConversionFactor *GetConversionFactor(int factorIndex) {return m_pConversionFactors[factorIndex];}
00042
00043
00044 virtual double GetParameter(int parIndex)=0;
00045 virtual Experiment *GetExperiment();
00046 virtual Experiment *GetExperiment(int expNum);
00047 virtual int GetNParameters()=0;
00048 virtual double ComputeResiduals(double *parameters)=0;
00049 virtual double ComputeES(double *parameters, double T)=0;
00050
00051
00052
00053 double EntropyShift(double T);
00054 virtual double F(double *parameters, double T)=0;
00055 virtual double F0(double *parameters, double T)=0;
00056 int GetNBFactors() {return this->m_iNBFactors;}
00057 protected:
00058 bool rateConstantsOptimizable;
00059 bool initialChemConcOptimizable;
00060 bool logsInObjectiveFunction;
00061 int nCells;
00062 double timeSeriesWeight;
00063 double rateConstantsWeight;
00064 double initialChemConcWeight;
00065
00066
00067 std::vector<CConversionFactor *> m_pConversionFactors;
00068
00069 int m_iNBFactors;
00070
00071 };
00072
00073 #endif // !defined(AFX_NETWORKMINIMIZABLE_H__8F38BFB2_7B39_41DB_A979_3A20AD69180D__INCLUDED_)