Projet informatique : optimisation du déplacement d’un robot

Slides:



Advertisements
Présentations similaires
Bratec Martin ..
Advertisements

NOTIFICATION ÉLECTRONIQUE
Fragilité : une notion fragile ?
SEMINAIRE DU 10 AVRIL 2010 programmation du futur Hôtel de Ville
Phono-sémantique différentielle des monosyllabes italiens
MAGGIO 1967 BOLOGNA - CERVIA ANOMALIES DU SOMMEIL CHEZ L'HOMME
droit + pub = ? vincent gautrais professeur agrégé – avocat
Transcription de la présentation:

Projet informatique : optimisation du déplacement d’un robot Plan : Cahier des Charges Analyse structurée …………………………………………………….. page 2 Bête à corne ……………………………………………………………. page 3 Pieuvre ………………………………………………………………….. page 4 Graphe d’appel de sous-programme à sous-programme …………. page 5 Présentation des programmes ……………………………………….. page 6 Algorithmes (pseudo-code) Premier programme ……………………………………………………. page 7 Deuxième programme …………………………………………………. page 8 Code Premier programme ……………………………………………………. page 9 Deuxième programme

Cahier des charges Optimisation du déplacement d’un robot Saisir la carte Saisir le point de départ et d’arrivé Déterminer le chemin optimal Imposer les contraintes Afficher la solution

Cahier des charges / Bête à corne Robot Utilisateur Programme Pathfinding Optimiser le déplacement du robot

Cahier des charges / Pieuvre Programme Pathfinding Robot Chemin F1 Obstacles C1 Contrainte de déplacement C3 Points de départ & d’arrivée C2 Chemin optimal F2 Utilisateur F1 : Trouver le chemin optimal F2 : Afficher la solution trouvée C1 : Eviter les obstacles C2 : Partir du point de départ et arriver au point d’arrivée C3 : Se déplacer en respectant la contrainte de déplacement

Graphe d’appel de sous-programme à sous-programme Main Lire la carte Lire le point de départ & d’arrivée Vérifier que les points de départ & d’arrivée ne sont pas des obstacles Calculer le chemin optimal en respectant la contrainte de déplacement Afficher le résultat

Présentation des différents programmes Premier programme : (Pas d’obstacles, ni de contrainte) Trouver un chemin quelconque du point de départ au point d’arrivé avec un déplacement 8 connexe, et afficher la position à tout instant Deuxième programme : (Chemin quelconque avec obstacles et contrainte) Trouver un chemin quelconque du point de départ au point d’arrivé avec une contrainte de déplacement et des obstacles, et afficher le résultat

Premier programme : Pseudo-code de l’algorithme Lire carte, lire (x0,y0), lire (xa,ya), Entiers (x,y), x=x0, y=y0, i=0, j=0, Tant que x0≠xa faire, si x<xa alors x=x+1 sinon x=x-1 Afficher « les coordonnées sont (x, y0)», Tant que y0≠ya faire, si y<ya alors y=y+1 sinon y=y-1 Afficher « les coordonnées sont (x0, y)»,

Deuxième programme : Pseudo-code de l’algorithme Int N(x,y)=abs(x-xa) +abs(y-ya); Tant que x!=xa & y!=ya faire { Tant que x!=xa faire { Si x<xa alors{ si matrice[y][x+1]=1 faire x++ sinon si N(x,y+ 1)<N(x,y-1) faire y++ sinon y— } Sinon { si matrice[y][x-1]=1 faire x-- Tant que y!=ya faire Si y<ya alors{ si matrice[x][y+1]=1 faire y++ sinon si N(x+1,y)<N(x-1,y) faire x++ sinon x— si matrice[x][y-1]=1 faire y--

Code premier programme #include<stdio.h> #include<string.h> //Transposition de la carte dans une matrice// void main(void){ int i=0; int j=0; int a,b; int c; int matrice[128][128]; FILE *carte; carte=fopen("./carte2.txt","rb"); if (carte == NULL) printf("Le fichier existe pas\n"); while((c=fgetc(carte))!=EOF){ if(c=='\n'){ i=i++; j=0; printf("\n"); } else { if (c != 13) { matrice[i][j]=c-48; printf("%d ",matrice[i][j]); j++; //Entrer les coordonnées du point de départ// int xo; int yo; int xa; int ya; printf("Entrer l'abscisse du point de départ : "); scanf("%d",&xo); printf("Entrer l'ordonnée du point de départ : "); scanf("%d",&yo); printf("Entrer l'abscisse du point d'arrivé : "); scanf("%d« ,&xa); printf("Entrer l'ordonnée du point d'arrivé : "); scanf("%d",&ya); Code premier programme //Application de l'algorithme// int D=matrice[xo][yo]; int A=matrice[xa][ya]; int x=xo; int y=yo; int R=matrice[x][y]; while(x!=xa){ if(x<xa){ x++; } else{ x--; printf("La position du robot est : %d,R"); while(y!=ya){ if(y<ya){ y++; y--;

Code deuxième programme #include<math.h> #include<stdio.h> #include<string.h> //Transposition de la carte dans une matrice// void main(void){ int i=0; int j=0; int a,b; int c; int matrice[128][128]; FILE *carte; carte=fopen("./carte2.txt","rb"); if (carte == NULL) printf("Le fichier existe pas\n"); while((c=fgetc(carte))!=EOF){ if(c=='\n'){ i=i++; j=0; printf("\n"); } else { if (c != 13) { matrice[i][j]=c-48; printf("%d ",matrice[i][j]); j++;

Code deuxième programme (suite) //Entrer les coordonnées du point de départ// int xo; int yo; int xa; int ya; printf("Entrer l' abscisse du point de depart : "); scanf("%d",&xo); printf("Entrer l' ordonnee du point de depart : "); scanf("%d",&yo); printf("Entrer l' abscisse du point d'arrive : "); scanf("%d",&xa); printf("Entrer la ordonnee du point d'arrive : "); scanf("%d",&ya); //Application de l'algorithme// int x=xo; int y=yo; while(x!=xa && y!=ya){ while(x!=xa){ if(x<xa){ if(matrice[y][x+1]==0){if(abs(x-xa)+abs(y+1-ya)<abs(x-xa)+abs(y-1-ya)){y++;} else{y--;}} else{x++;} printf("La position du robot est : %d,%d \n",y,x); } while(y!=ya){ if(y<ya){ if(matrice[y+1][x]==0){if(abs(x+1-xa)+abs(y-ya)<abs(x-1-xa)+abs(y-ya)){x++;} else{x--;}} else{y++;} printf("La position du robot est : %d,%d \n",x);