diff options
Diffstat (limited to 'code/core/reward.h')
-rw-r--r-- | code/core/reward.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/code/core/reward.h b/code/core/reward.h new file mode 100644 index 0000000..1bc13f4 --- /dev/null +++ b/code/core/reward.h @@ -0,0 +1,53 @@ +#ifndef REWARD_H +#define REWARD_H + +#include <vector> +#include <set> + +#include <queue> + +#include "event.h" +#include "bin.h" + +using namespace std; + +class Reward : public VirtualEvent { +public: + typedef vector< std::set<int> > IOPop; + + Reward(double time) : VirtualEvent(time) {} + Reward(double time, IOPop *inputNeurons, IOPop *outputNeurons) : VirtualEvent(time), inputNeurons(inputNeurons), outputNeurons(outputNeurons) {} + virtual void vexecute(); + + // state + IOPop *inputNeurons, *outputNeurons; +}; + +class Reward_Input : public Reward { +public: + Reward_Input(double time, IOPop *inputNeurons, IOPop *outputNeurons) : Reward(time, inputNeurons, outputNeurons) {} + virtual void vexecute(); +}; + +class Reward_EnableBinning : public Reward { +public: + Reward_EnableBinning(double time, IOPop *inputNeurons, IOPop *outputNeurons, int symbol) : Reward(time, inputNeurons, outputNeurons), symbol(symbol) {} + virtual void vexecute(); + + int symbol; +}; + +class Reward_Readout : public Reward { +public: + Reward_Readout(double time, int symbol, IOPop *inputNeurons, IOPop *outputNeurons, vector<Bin*> *bins) : Reward(time, inputNeurons, outputNeurons), symbol(symbol), bins(bins) {} + virtual void vexecute(); + + double estimatePerformance(); + void deployReward(double reward); + + int symbol; + vector<Bin*> * bins; +}; + + +#endif // REWARD_H |