From b3a1cd8ba18f6b9d302b812af1c8a42b72f39325 Mon Sep 17 00:00:00 2001 From: maberet <maberet@ada.local.isima.fr> Date: Thu, 30 Jun 2022 13:40:32 +0200 Subject: [PATCH] modif de la formule q learn --- travail_de_groupe/jeu_appren_par_renfo/src/main.c | 4 +++- travail_de_groupe/jeu_appren_par_renfo/src/qlearn.c | 12 ++++++++---- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/main.c b/travail_de_groupe/jeu_appren_par_renfo/src/main.c index 1e1570e..f8ab80e 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/main.c +++ b/travail_de_groupe/jeu_appren_par_renfo/src/main.c @@ -6,11 +6,13 @@ float ***** Q; int main(){ Q = allocateAndInitiateQ(); readQFromFile(Q); - int i= 10; + int i= 50; srand ( time(NULL)); while (i>0){ traningAgent(1000000,30, Q); + printf("%d \n ", i); + writeQ(Q); i--;} writeQ(Q); diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.c b/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.c index 4fea238..02eddd2 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.c +++ b/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.c @@ -399,8 +399,7 @@ void traningAgent ( int numberRun, int numberStep, float *****Q) {// pour avoir line.angleHZone=zoneAngleH; line.angleFZone=zoneAngleF; line.action= action; - moveAgent(agent, action); - actionStack( stack , line); + moveAgent(agent, action); agentZone= convertIntoZone( agent->x,agent->y ); reward = (agentZone==dropZone); @@ -412,16 +411,21 @@ void traningAgent ( int numberRun, int numberStep, float *****Q) {// pour avoir while ( !emptyStack(stack)){ reward=line.reward; maxAction= argmax(Q[line.receiverZone][line.shooterZone][line.angleHZone][line.angleFZone]); + agentZone= line.receiverZone; + canonZone= line.shooterZone; + zoneAngleH= line.angleHZone; + zoneAngleF=line.angleFZone; + line=unStack(stack); Q[line.receiverZone][line.shooterZone][line.angleHZone][line.angleFZone][line.action] += DISCOUNT*(reward + - LEARN_RATE* Q[line.receiverZone][line.shooterZone][line.angleHZone][line.angleFZone][maxAction] + LEARN_RATE* Q[agentZone][canonZone][zoneAngleH][zoneAngleF][maxAction] -Q[line.receiverZone][line.shooterZone][line.angleHZone][line.angleFZone][line.action]); } //if ( numberRun%1000000==1){printf (" %d \n ", numberRun);} - greedy = greedy - 1/numberRun; + //greedy = greedy - 1/numberRun; numberRun--; } freeStack(stack); -- GitLab