|
@@ -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;
|
|
|
}
|
|
|
}
|