splitcontrol.h
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024 #ifndef __SPLITCONTROL_H
00025 #define __SPLITCONTROL_H
00026
00027 #include <selforg/abstractcontroller.h>
00028 #include <selforg/onecontrollerperchannel.h>
00029
00030 #include <vector>
00031 #include <functional>
00032
00033
00034
00035
00036
00037
00038
00039 class SplitControl : public AbstractController {
00040 public:
00041
00042 struct Assoziation {
00043 Assoziation();
00044 void addSensorIdx(int s) { sensors.push_back(s);}
00045 void addMotorIdx(int m) { motors.push_back(m);}
00046
00047 std::list<int> sensors;
00048 std::list<int> motors;
00049 };
00050 typedef std::vector<Assoziation> Assoziations;
00051
00052
00053
00054
00055
00056
00057
00058
00059 SplitControl(ControllerGenerator* controllerGenerator,
00060 const Assoziations& assoziations,
00061 std::string controllerName,
00062 int numCtrlCreateBeforeInit = 1,
00063 int numContextSensors = 0
00064 );
00065
00066 virtual ~SplitControl();
00067
00068
00069 virtual void init(int sensornumber, int motornumber, RandGen* randGen = 0);
00070
00071 virtual void step(const sensor* sensors, int sensornumber,
00072 motor* motors, int motornumber);
00073
00074 virtual void stepNoLearning(const sensor* sensors , int sensornumber,
00075 motor* motors, int motornumber);
00076
00077 virtual int getSensorNumber() const {return sensornumber; }
00078 virtual int getMotorNumber() const {return motornumber; }
00079
00080
00081
00082 virtual bool store(FILE* f) const {return false;}
00083
00084 virtual bool restore(FILE* f) {return false;}
00085
00086
00087 virtual std::vector<AbstractController*> getControllers() const { return ctrl;}
00088
00089 protected:
00090 std::vector<AbstractController*> ctrl;
00091
00092
00093 ControllerGenerator* controllerGenerator;
00094 Assoziations assoz;
00095 int numCtrlCreateBeforeInit;
00096 int numContextSensors;
00097 int motornumber;
00098 int sensornumber;
00099 double* sensorbuffer;
00100 double* motorbuffer;
00101 };
00102
00103 #endif