Browse Source

Renommage variable + limite augmentation alpha

Arthur Brandao 6 years ago
parent
commit
37f30e51df
2 changed files with 21 additions and 18 deletions
  1. 16 16
      BanditEMA/ControlBandit.cpp
  2. 5 2
      BanditEMA/ControlBandit.hpp

+ 16 - 16
BanditEMA/ControlBandit.cpp

@@ -18,10 +18,10 @@ ControlBandit::ControlBandit() {
 	}
 	//Remplissage tableau moyenne
 	for(int f = 0; f < NB_FILL; f++) {
-		favg[f] = 0;
+		fema[f] = 0;
 	}
 	for(int h = 0; h < NB_HEURISTIC; h++){
-		havg[h] = 0;
+		hema[h] = 0;
 	}
 	//Ini method
 	alphaStatic = true;
@@ -39,10 +39,10 @@ ControlBandit::~ControlBandit() {
 void ControlBandit::setMethod(int cstMethod, bool statique) {
 	if(statique) {
 		alphaStatic = true;
-		alpha = 0.5;
+		alpha = ALPHA_STATIC;
 	} else {
 		alphaStatic = false;
-		alpha = 0.4;
+		alpha = ALPHA_MIN;
 	}
 	method = cstMethod;
 }
@@ -84,35 +84,35 @@ void ControlBandit::addFill(int num, int score) {
 	num -= 2;
 	//Recup la valeur d'alpha
 	double localAlpha;
-	if(alphaStatic) {
-		localAlpha = alpha;
-	} else {
+	if(!alphaStatic && alpha < ALPHA_MAX){
 		//Increment la valeur
 		mutex.lock();
 		alpha += ALPHA_STEP;
 		localAlpha = alpha;
 		mutex.unlock();
+	} else {
+		localAlpha = alpha;
 	}
 	//Met a jour la moyenne
 	mutexFill.lock();
-	favg[num] = (1 - localAlpha) * favg[num] + localAlpha * score;
+	fema[num] = (1 - localAlpha) * fema[num] + localAlpha * score;
 	mutexFill.unlock();
 }
 
 void ControlBandit::addHeuristic(int num, int score) {
 	//Recup la valeur d'alpha
 	double localAlpha;
-	if(alphaStatic) {
-		localAlpha = alpha;
-	} else {
+	if(!alphaStatic && alpha < ALPHA_MAX){
 		//Increment la valeur
 		mutex.lock();
 		alpha += ALPHA_STEP;
 		localAlpha = alpha;
 		mutex.unlock();
+	} else {
+		localAlpha = alpha;
 	}
 	mutexHeuristic.lock();
-	havg[num] = (1 - localAlpha) * havg[num] + localAlpha * score;
+	hema[num] = (1 - localAlpha) * hema[num] + localAlpha * score;
 	mutexHeuristic.unlock();
 }
 
@@ -147,8 +147,8 @@ int ControlBandit::getBestFill() {
 	int fill = 0;
 	mutexFill.lock();
 	for(int i = 0; i < NB_FILL; i++) {
-		if(favg[i] > max) {
-			max = favg[i];
+		if(fema[i] > max) {
+			max = fema[i];
 			fill = i;
 		}
 	}
@@ -161,8 +161,8 @@ int ControlBandit::getBestHeuristic() {
 	int h = 0;
 	mutexHeuristic.lock();
 	for(int i = 0; i < NB_HEURISTIC; i++) {
-		if(havg[i] > max) {
-			max = havg[i];
+		if(hema[i] > max) {
+			max = hema[i];
 			h = i;
 		}
 	}

+ 5 - 2
BanditEMA/ControlBandit.hpp

@@ -12,6 +12,9 @@
 #define MT_EMA 0
 #define MT_EPS 1
 #define ALPHA_STEP 0.001
+#define ALPHA_MIN 0.4
+#define ALPHA_MAX 0.6
+#define ALPHA_STATIC 0.5
 
 /* --- Structure --- */
 typedef struct {
@@ -42,8 +45,8 @@ class ControlBandit {
 		std::vector<fillAndHeuristic> queue;
 		bool alphaStatic;
 		double alpha;
-		double favg[NB_FILL];
-		double havg[NB_HEURISTIC];
+		double fema[NB_FILL];
+		double hema[NB_HEURISTIC];
 
 		fillAndHeuristic methodEma();
 		fillAndHeuristic methodEps();