00001 #ifndef RewardsByFunction_H 00002 #define RewardsByFunction_H 00003 00004 #include "Const.h" 00005 #include "Observations.h" 00006 #include "Actions.h" 00007 #include "States.h" 00008 #include "MathLib.h" 00009 #include "BeliefWithState.h" 00010 #include "IVariable.h" 00011 #include "VariableRelation.h" 00012 #include "Rewards.h" 00013 00014 using namespace std; 00015 using namespace momdp; 00016 namespace momdp 00017 { 00018 class MOMDP; 00019 class RewardsByFunction : public Rewards 00020 { 00021 private: 00022 SharedPointer<SparseMatrix> getMatrixInner(int x, bool transpose); 00023 00024 public: 00025 RewardsByFunction(void); 00026 virtual ~RewardsByFunction(void); 00027 00028 vector<SharedPointer<IVariable> > vars; 00029 00030 virtual REAL_VALUE getReward(BeliefWithState& belief, int a); 00031 REAL_VALUE reward(States::iterator& x, States::iterator& y, Actions::iterator& a); 00032 00033 virtual SharedPointer<SparseMatrix> getMatrix(int x); 00034 //SharedPointer<SparseMatrix> getMatrixTr(int x); 00035 00036 vector<SharedPointer<VariableRelation> > relations; 00037 MOMDP* problem; 00038 }; 00039 } 00040 #endif 00041 00042