00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef C_HISTORY_H
00033 #define C_HISTORY_H
00034
00035 #include "cbaseobjects.h"
00036 #include "clearndataobject.h"
00037 #include "cagentlistener.h"
00038
00039 class CStateCollectionImpl;
00040 class CStateModifier;
00041 class CStateProperties;
00042 class CAction;
00043 class CActionDataSet;
00044
00046 class CStep : public CStateObject, public CActionObject
00047 {
00048 public:
00049 CStateCollectionImpl *oldState;
00050 CStateCollectionImpl *newState;
00051
00052 CAction *action;
00053 CActionDataSet *actionData;
00054
00055 CStep(CStateProperties *properties, std::list<CStateModifier*> *modifiers, CActionSet *actions);
00056 ~CStep();
00057 };
00058
00060
00066 class CStepHistory : virtual public CStateModifiersObject, virtual public CLearnDataObject, public CActionObject
00067 {
00068 public:
00069
00070 CStepHistory(CStateProperties *properties, CActionSet *actions);
00071 virtual ~CStepHistory() {};
00072
00073 virtual int getNumSteps() = 0;
00074
00076 virtual void getStep(int index, CStep *step) = 0;
00077 };
00078
00079
00081
00088 class CBatchStepUpdate : public CSemiMDPListener
00089 {
00090 protected:
00091 int numUpdates;
00092 CSemiMDPListener *listener;
00093 CStepHistory *steps;
00094
00095 CStep *step;
00096
00097 CActionDataSet *dataSet;
00098 public:
00099 CBatchStepUpdate(CSemiMDPListener *listener, CStepHistory *logger, int numUpdatesPerStep, int numUpdatesPerEpisode, std::list<CStateModifier *> *modifiers);
00100 virtual ~CBatchStepUpdate();
00101
00102 virtual void newEpisode();
00103 virtual void nextStep(CStateCollection *oldState, CAction *action, CStateCollection *nextState);
00104
00106
00109 virtual void simulateSteps(CSemiMDPListener *listener, int num);
00111
00112 virtual void simulateAllSteps(CSemiMDPListener *listener);
00113
00114 };
00115
00116
00117
00118 #endif
00119
00120
00121