00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00013
00014 #ifndef _BSUOBJECTIVEFUNCTION_H_
00015 #define _BSUOBJECTIVEFUNCTION_H_
00016
00017 #include <vector>
00018 #include <map>
00019 #include <math.h>
00020
00021 #include <Mers/Estimation/Discrete/ApproximateBeliefState/BSEObjectiveFunction.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 namespace ProbabilityRules {
00033 class Rule;
00034 class ObsProbRule;
00035 namespace RuleTriggering {
00036 class RuleTrigger;
00037 }
00038 }
00039 namespace ApproximateBeliefState {
00040
00041
00054 class BSUObjectiveFunction : public Mers::Estimation::Discrete::ApproximateBeliefState::BSEObjectiveFunction
00055 {
00056
00057 public:
00058
00059
00060
00061
00079 BSUObjectiveFunction(Mers::Models::Base::BaseModelVariableArray const * dVs,
00080 const std::map<unsigned int, unsigned int> pMap,
00081 std::vector<double> allTransProbs,
00082 std::map<unsigned int,double> sProbs,
00083 std::vector<const Mers::Estimation::Discrete::ProbabilityRules::ObsProbRule *> & theObsProbabilityRules);
00084
00089 virtual ~BSUObjectiveFunction();
00090
00091
00092
00093
00094
00095 protected:
00096
00097
00098
00099
00111 virtual double calculateUtility(std::vector<Mers::Models::Base::BaseModelAssignment const *> & implicantAssignments,
00112 int sourceStateIndex = -1) const;
00113
00114 private:
00115
00116
00117
00118
00119
00120
00121
00122
00123
00127 Mers::Estimation::Discrete::ProbabilityRules::RuleTriggering::RuleTrigger * obsProbabilityRuleTrigger;
00128
00133 std::vector<Mers::Estimation::Discrete::ProbabilityRules::Rule *> triggerRules;
00134 };
00135 }
00136 }
00137 }
00138 }
00139
00140 #endif //ndef _BSUOBJECTIVEFUNCTION_H_
00141