ECF 1.5
AlgXCS.h
1#ifndef XCS_h
2#define XCS_h
3
4#include "../Algorithm.h"
5#include "../bitstring/BitString.h"
6
7#include <set>
8
9#include "XCSParams.h"
10#include "Classifier.h"
11#include "ClassifierParams.h"
12#include "Environment.h"
13#include <fstream>
14#include <string>
15
16//#define XCS_STEP_DEBUG
17//#define XCS_DEBUG
18
19
29class XCS : public Algorithm
30{
31public:
32 XCS();
33 bool advanceGeneration(StateP state, DemeP deme);
34 bool initialize(StateP state);
35 void registerParameters(StateP state);
36
37protected:
38 SelectionOperatorP selRandomOp, selWorstOp, selFitPropOp;
39
40private:
41 void test (DemeP deme); //MAKNI
42
43 unsigned long long int time;
44 std::vector<ClassifierP> populationSet; //[P]
45 EnvironmentP environment;
46 XCSParamsP params;
47
48 //XCS methods:
49 std::vector<ClassifierP> generateMatchSet(StateP state, DemeP deme, GenotypeP input);
50 ClassifierP cover (StateP state, DemeP deme, GenotypeP input, std::vector<ClassifierP> matchSet);
51 std::map<int, double> generatePA(std::vector<ClassifierP> matchSet);
52 int selectActionId(StateP state, std::map<int, double> PA);
53 std::vector<ClassifierP> generateActionSet(std::vector<ClassifierP> matchSet, int actionId);
54 void updateActionSet(std::vector<ClassifierP> actionSet, DemeP deme, double reward, StateP state);
55 void runGA(std::vector<ClassifierP> actionSet, GenotypeP input, DemeP deme, StateP state);
56
57 void printPopulation();
58 std::pair<int, double> getMaxFromPA(std::map<int, double> PA);
59 std::set<int> getActionsFromMs (std::vector<ClassifierP> matchSet);
60 double getAsTimeSum(std::vector<ClassifierP> as);
61
62 void deleteFromPopulation(StateP state, DemeP deme);
63 void actionSetSubsumption(std::vector<ClassifierP> *actionSet, DemeP deme, StateP state);
64 void removeFromPopSet(ClassifierP cl, DemeP deme);
65};
66typedef boost::shared_ptr<XCS> XCSP;
67
68#endif
69
Algorithm base class.
Definition: Algorithm.h:20
XCS classifier system.
Definition: AlgXCS.h:30
bool advanceGeneration(StateP state, DemeP deme)
Perform a single generation on a single deme.
Definition: AlgXCS.cpp:101
bool initialize(StateP state)
Initialize the algorithm, read parameters from the system, do a sanity check.
Definition: AlgXCS.cpp:58
void registerParameters(StateP state)
Register algorithm's parameters (if any).
Definition: AlgXCS.cpp:49