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 9b06103b077fa0d1a16e95df582ecd59adc7dbd7..aabe3040d4946d838f6870e37da699b1afb81c92 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.c +++ b/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.c @@ -6,7 +6,7 @@ agent_t * initAgent (){ printf("erreur alloc\n "); exit (1); } - agent->x=(16+rand()%16)*BLOCK_SIZE; + agent->x=(16+rand()%14)*BLOCK_SIZE; agent->y=(1+rand()%14)*BLOCK_SIZE; agent->high=2*BLOCK_SIZE; agent->weight=2*BLOCK_SIZE; @@ -92,7 +92,6 @@ float ***** allocateAndInitiateQ(){ return q; } -// attention il manque 3 lignes void writeQ(float *****Q){ int i, j, k, l, m ; FILE * fp = fopen("q.txt", "w+"); @@ -247,6 +246,29 @@ int setReward(int xAgent, int yAgent, int dropZone){ reward=1; } return (reward); -} +} + +float defineAngle (int xCanon, int yCanon , int xDropPoint, int yDropPoint){ + float distance; + float angleSin; + distance= sqrtf( powf((float)(xDropPoint-xCanon),2)+powf((float)(yDropPoint-yCanon),2)); + angleSin = asinf(distance/(xDropPoint-xCanon)); + return angleSin; +} + +void traningAgent ( int numberRun, int numberStep, float *****Q) { + int i ; + int action; + point_t canon ; + point_t dropPoint ; + + while (numberRun>0){ + canon=initPoint(0); + dropPoint= initPoint(1); + for (i=0; i< numberStep;i++){ + + } + } +} diff --git a/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.h b/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.h index 15cf2773f949b6b0dc8f461c4d4b4bb1d486d04b..48b0f6e6b1fbafbe00af3b08b19a05259e5fe929 100644 --- a/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.h +++ b/travail_de_groupe/jeu_appren_par_renfo/src/qlearn.h @@ -37,6 +37,12 @@ typedef struct line { }line_t,*ptline_t; +typedef struct point{ + int x; + int y; +} point_t ; + + agent_t* initAgent ( ); void moveAgent(agent_t * agent, int choice); float ***** allocateAndInitiateQ();