00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013
00014 #ifndef _BFTEOBJECTIVEFUNCTION_H_
00015 #define _BFTEOBJECTIVEFUNCTION_H_
00016
00017 #include <vector>
00018 #include <map>
00019 #include <math.h>
00020
00021 #include <Mers/Estimation/Discrete/MEObjectiveFunction.h>
00022
00023 namespace Mers {
00024 namespace Models {
00025 namespace Base {
00026 class BaseModelVariableArray;
00027 class BaseModelAssignment;
00028 }
00029 }
00030 namespace Estimation {
00031 namespace Discrete {
00032 class Trajectories;
00033 class MEObjectiveFunction;
00034
00046 class BFTEObjectiveFunction : public Mers::Estimation::Discrete::MEObjectiveFunction
00047 {
00048
00049 public:
00050
00051
00052
00053
00069 BFTEObjectiveFunction(Mers::Models::Base::BaseModelVariableArray const * dVs,
00070 const std::map<unsigned int, unsigned int> pMap,
00071 std::vector<double> allTransProbs,
00072 std::map<unsigned int,double> sProbs);
00073
00077 virtual ~BFTEObjectiveFunction();
00078
00079
00080
00081
00082
00083
00084 protected:
00085
00086
00087
00088
00089
00101 virtual double calculateUtility(std::vector<Mers::Models::Base::BaseModelAssignment const *> & bmAssignments,
00102 int sourceStateIndex = -1) const;
00103
00114 virtual double calculatePropagationUtility(
00115 std::vector<Mers::Models::Base::BaseModelAssignment const *> & bmAssignments,
00116 int sourceStateIndex = -1) const;
00117
00118
00119
00120
00121
00122 };
00123 }
00124 }
00125 }
00126
00127 #endif //ndef _BFTEOBJECTIVEFUNCTION_H_
00128