#ifndef REWARD_H #define REWARD_H #include #include #include #include "event.h" #include "bin.h" using namespace std; class Reward : public VirtualEvent { public: typedef vector< std::set > 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 *bins) : Reward(time, inputNeurons, outputNeurons), symbol(symbol), bins(bins) {} virtual void vexecute(); double estimatePerformance(); void deployReward(double reward); int symbol; vector * bins; }; #endif // REWARD_H