00001 00008 #ifndef INCFastInfUBInitializer_h 00009 #define INCFastInfUBInitializer_h 00010 00011 #include "MathLib.h" 00012 #include "MOMDP.h" 00013 #include "FacmodelStructs.h" 00014 #include "BeliefValuePairPool.h" 00015 #include "BeliefValuePairPoolSet.h" 00016 #include "FullObsUBInitializer.h" // SYL260809 added 00017 00018 #define PRUNE_EPS (1e-10) 00019 #define MDP_RESIDUAL (1e-10) 00020 00021 namespace momdp { 00022 00023 struct FastInfUBInitializer 00024 { 00025 SharedPointer<MOMDP> pomdp; 00026 BeliefValuePairPoolSet* bound; 00027 //UpperBoundBVpair* upperBoundBVpair; 00028 00029 std::vector<alpha_vector> alphas; // am assuming that we dont really need more than one set (for all state indexes) of alphas 00030 00031 // SYL260809 commented out - it's not needed now that only one FullObsUBInitializer object is created 00032 //std::vector<alpha_vector> alphasByState; 00033 00034 FastInfUBInitializer(SharedPointer<MOMDP> problem, BeliefValuePairPoolSet* _bound); 00035 FastInfUBInitializer(SharedPointer<MOMDP> problem); 00036 void initialize(double targetPrecision); 00037 void getFIBsolution(double targetPrecision); 00038 00039 // data and methods for factored version 00040 vector<vector<alpha_vector> > actionAlphaByState; 00041 00042 00043 protected: 00044 void initMDP(double targetPrecision, FullObsUBInitializer& m); // SYL260809 prevly: void initMDP(double targetPrecision); 00045 void initFIB(double targetPrecision, bool getFIBvectors); 00046 00047 void initMDP_unfac(double targetPrecision); 00048 void initFIB_unfac(double targetPrecision, bool getFIBvectors); 00049 00050 00051 }; 00052 00053 }; // namespace zmdp 00054 00055 #endif /* INCFastInfUBInitializer_h */ 00056