Intelligence Artificielle Distribuée. Dossier technique. IAD TeamZ

Dimension: px
Commencer à balayer dès la page:

Download "Intelligence Artificielle Distribuée. Dossier technique. IAD TeamZ"

Transcription

1 Intelligence Artificielle Distribuée Dossier technique IAD TeamZ 29 mai 2004

2 Table des matières 1 Introduction Historique d Othello Othello But du jeu Support Algorithmique Fonction d évaluation MinMax et Alpha Beta L algorithme MinMax Alpha Beta ou MinMax amélioré Codage de l othellier Algorithmique distribuée le maître l esclave Amélioration LAM/MPI Introduction à LAM/MPI Installation de LAM/MPI Avec les sources Sous Debian Parc Informatique EPITA Configuration problèmes communs problèmes liés au PIE IAD compilation Paramètres environnement du PIE le./configure Configuration Spécification automatique Spécification avancee Exécution LAM/MPI plusieurs esclaves sur une seule machine Autres modes

3 6 Résultats Résultats techniques XMPI Webographie 24 3

4 1 Introduction Le but de ce projet était de réaliser une version d othello avec une IA utilisant efficacement plusieurs ordinateurs. 1.1 Historique d Othello Le jeu d Othello 1 sous sa forme actuelle a été commercialisé pour la première fois au Japon en Toutefois, ce jeu est très proche d un jeu anglais vieux d une centaine d années, connu sous le nom de Reversi. Qui a inventé le Reversi alors? Il est difficile de répondre à cette question. Deux gentlemen anglais, Lewis Waterman et John W. Mollett, se disputent la paternité de ce jeu dans les années 1880 et se traitent mutuellement d escrocs. A la fin des années 1880, où le Reversi était extrêmement populaire en Angleterre, les deux protagonistes avaient publié des livrets de règles et soutenaient des fabricants rivaux. Le plus vieil article de presse sur le jeu connu à ce jour est paru dans "The Saturday Review" daté du 21 août Le jeu est peu diffusé jusqu à ce que l auteur de jeux Walter H. Peel écrive au printemps 1888 une série d articles publiés dans "The Queen", un magazine spécialisé dans "des sujets intéressant les dames". Plusieurs livrets sont alors publiés mais le jeu perd de sa popularité au début du siècle. On trouve tout au long du vingtième siècle des références au jeu de Reversi mais celui-ci reste très confidentiel malgré une diffusion en Europe Centrale et aux Etats-Unis. Othello a été inventé en 1971 au Japon par Goro Hasegawa. Son père, professeur de littérature anglaise, suggéra le nom Othello par analogie avec les rebondissements de la pièce de Shakespeare. Il y a seulement deux différences avec Reversi : une seule position de départ est autorisée, et on peut emprunter des pions à l adversaire s il est obligé de passer. Dès 1973, le jeu devient un succès commercial au Japon et le premier championnat national est organisé. En 1976 le jeu d Othello envahit les Etats-Unis et l Angleterre. Parallèlement àà ce succès, des fédérations nationales se créent ; le premier championnat du monde est ainsi organisé en 1977 sur une base annuelle. En 1980, pour la première fois, le titre n est pas remporté par un Japonais : le joueur américain Jonathan Cerf bat le champion asiatique Takuya Mimura en finale. Le jeu d Othello apparaît en France à la fin des années 70 tandis que le premier championnat de France est organisé en En 1983, la Fédération 1 Othello est une marque déposé, on préférera le terme "Reversi" 4

5 Française d Othello est créée et va monter en puissance grâce, notamment, au journal "Jeux & Stratégie" qui fait du jeu un de ses "Grands Classiques". En 1984, Paul Ralle, alors âgé de 16 ans, devient le premier Français (et le deuxième non- Japonais) à remporter le titre suprême. La seconde moitié des années 80 voit un développement lent mais constant de la pratique du jeu. Toujours parmi les meilleurs au niveau mondial, l équipe de France remporte en 1990 le titre par équipe (performance qu elle rééditera en 1994 et 1998), tandis que Marc Tastet devient en 1992 le deuxième champion du monde français. 1.2 Othello Othello est un jeu de stratégie à deux joueurs : Noir et Blanc. Il se joue sur un plateau unicolore de 64 cases, 8 sur 8, appelé othellier. Ces joueurs disposent de 64 pions bicolores, noirs d un côté et blancs de l autre. Par commodité, chaque joueur a devant lui 32 pions mais ils ne lui appartiennent pas et il doit en donner à son adversaire si celui-ci n en a plus. Un pion est noir si sa face noire est visible et blanc si sa face blanche est sur le dessus. Pour jouer, il faut poser un pion sur une case vide, de manière à encadrer une ou plusieurs rangées de pions adverses qui sont alors retournées et qui nous appartiennent. 1.3 But du jeu Avoir plus de pions de sa couleur que l adversaire à la fin de la partie. Celle-ci s achève lorsque aucun des deux joueurs ne peut plus jouer de coup légal. Cela intervient généralement lorsque les 64 cases sont occupées. 1.4 Support Le projet est sous licence GPL 2 et est hébergé sur GNA 3 ici 4. Il sera bientôt téléchargeable en tar.bz2 ici 5. En attendant un accès au CVS en anonyme est proposé : cvs co iad https://gna.org/projects/iad 5 5

6 2 Algorithmique Nous avons implementé un minimax et un minimax_alpha_beta non-distribué de référence pour que chaque membre du groupe puisse comprendre l algorithme facilement. On peut jouer contre l ordinateur sans distribuer l algorithme (option -IA). 2.1 Fonction d évaluation Les algorithmes doivent être capables d évaluer une situation, c est a dire la valeur d un échiquier par rapport à un coup considéré. Ainsi à un echiquier dans une certaine configuration est associé une note pour un joueur consideré. Plus la note est grande plus le coup est pertinent et permettra de se diriger vers une victoire. C est la fonction d évaluation qui fournie cette note en évaluant une situation selon plusieurs critères : Les pions positionnés Il s agit des pions définitif groupés autour d un angle. Les pions C-X Les 3 pions autour d un angle sont les 3 pions C-X (les 2 du bord sont les pions C et celui en diagonale est le X) Les pions insérés Il s agit d un groupe de pions entièrement cernés par des pions adverses (cheval de troie) Les pions incrustés C est une invention maison : c est moins bien noté que les pions insérés : en fait les pions insérés sont tous incrustés Il s agit de pions complètement entourés, avec possibilité d avoir des voisins enemis. La mobilité Plus un coup laisse de possibilités a l adversaire, plus il aura statistiquement de chances de jouer un bon coup, il faut donc réduire ses possibilités avec la technique dite du bétonnage. Tous ces critères sont évalués par la suite pour donner une note au coup joué. pour un même critère, une note peut être positive ou négative selon la situation : un pion X est souvent malheureux mais dans certaines situations, cela peut-être très rentable. 6

7 L algorithme va chercher à trouver les coups maximisants sa note et minimisant la note du joueur adverses. Les valeurs d évaluation des différentes stratégies décrites ci-dessus ont été modifiées par bon sens et tâtonnement, et en jouant de nombreuses parties, soit contre un humain, soit contre le générateur aléatoire. 2.2 MinMax et Alpha Beta L algorithme MinMax Son principal atout est de tester tous les coups possibles jusqu à une certaine profondeur, y compris donc les coups tels que les sacrifices, etc..., qui paraissent dans un premier temps mauvais. Son principal défaut est, à l inverse, d être très lent : le nombre de configurations à tester évolue exponentiellement en fonction de la profondeur de réflexion, et donc le temps de réflexion également. La stratégie minmax suppose tout d abord que chacun des joueurs joue son meilleur coup (par rapport aux valeurs calculées par l algorithme) à chaque fois ; ça paraît discutable, mais ça n a pas l air de marcher si mal que ça : si l adversaire ne joue pas son meilleur coup, alors par définition c est qu il arrivera à une position moins forte qu il n aurait pu (toujours par rapport aux valeurs calculées par l algorithme lui-même). On commence donc par développer l arbre des coups possibles jusqu à la profondeur maximale. Pour cela on regarde l échiquier et on calcule les positions jouables pour le joueur courant (l ordinateur). Pour ce début de partie : Si c est "à l algorithme" de jouer en premier il a quatre coups possibles : C3, D2, F4, E5. Supposons qu il joue C3, au coup suivant l adversaire à trois coups possibles C2, E2 et C4 : Ainsi de suite. On aura donc un "arbre" des coups possibles comme celui visible sur la figure 3 page 9. Après chaque coup, on obtient une position : après le coup C3, une position dans laquelle c est à l adversaire de "l algorithme" de jouer, après la suite C3 - C2, c est à nouveau à l algorithme de jouer, et ainsi de suite. Après chaque suite de trois coups, notamment (donc aux feuilles de l arbre), c est à l adversaire de l algorithme de jouer. La fonction coût devient alors primordiale : c est elle qui va decider de la meilleur branche, c est a dire celle menant à un score le plus élevé possible. 7

8 FIG. 1 Début de partie FIG. 2 Après un premier coup 8

9 FIG. 3 Arbre de l algorithme MinMax Cela est notamment necessaire du fait qu on ne peut pas calculer absolument tous les coups possibles mais qu on doivent se limiter à une certaine profondeur d arbre selon les ressources allouées (nombre de nodes,...). L algorithme MiniMax, dû à Von Neumann, est très simple : on visite l arbre de jeu pour faire remonter à la racine une valeur (appelée "valeur du jeu") qui est calculée récursivement. On peut aller à n importe quelle profondeur de réflexion, en gardant bien à l esprit cependant que ce n est pas très rapide (on regarde tout l arbre, dont la taille croit exponentiellement en fonction de la profondeur). Pour être sûr d aller jusqu a la fin de la partie il faut compter une profondeur au moins égale au nombre de case sur l échiquier (dans le cas fictif ou l on passerait tout le temps). Il faut également garder à l esprit que cette stratégie dépend énormément de la qualité de la fonction d évaluation (on peut par exemple lorsque l on detecte que l on va gagner la partie à coup sur dans une certaine branche lui donner plus de poid). Le pseudo code de l algorithme est le suivant : minimax(in game board, in int depth, in int max_depth, out score chosen_score, out score chosen_move) begin 9

10 if (depth = max_depth) then chosen_score = evaluation(board); else moves_list = generate_moves(board); if (moves_list = NULL) then chosen_score = evaluation(board); else for (i = 1 to moves_list.length) do best_score = infinity; new_board = board; apply_move(new_board, moves_list[i]); minimax(new_board, depth+1, max_depth, the_score, the_move); if (better(the_score, best_score)) then best_score = the_score; best_move = the_move; endif enddo chosen_score = best_score; chosen_move = best_move; endif endif end Alpha Beta ou MinMax amélioré On observe que l algorithme MINIMAX effectue l évaluation pour tous les noeuds de l arbre de jeu d un horizon donné. Mais il existe des situations dans lesquelles, pour déterminer la valeur MiniMax associée à la racine, il n est pas nécessaire de calculer les valeurs associées à tous les noeuds de l arbre. On peut remarquer une telle situation dans la figure suivante, où la racine a un fils avec la valeur maximale possible (+100), donc les valeurs des autres fils n importent pas : elles ne peuvent pas changer la valeur MiniMax : La valeur 100 du fils central permet d éviter d explorer les autres branches : elle ne pourront pas changer la valeur MiniMax L algorithme alpha-beta est une optimisation du MiniMax, qui "coupe" des sous-arbres dès que leur valeur devient inintéressante aux fins du calcul de la valeur MiniMax du jeu. Cette optimisation permet souvant de diviser par deux le temps de calcul, sur le jeu othello le gain est de 30%. De plus en pratique ce gain permet de doubler la profondeur de l arbre. 10

11 FIG. 4 Nécessité d utiliser alpha-beta Le nom de l algorithme vient du nom donné a des valeurs portées par les noeuds dans le cas où il est utilisé : 1. alpha d un noeud : est une approximation par le bas de la vraie valeur du noeud. Elle est égale à la valeur sur les feuilles, et est initialisée à inf ailleurs. Ensuite, sur les noeuds joueur elle est maintenue égale à la plus grande valeur obtenue sur les fils visités jusque là, et elle est égale à la valeur alpha de son prédécesseur sur les noeuds opposant. 2. beta d un noeud : c est une approximation par le haut de la vraie valeur du noeud. Elle est égale à la valeur sur les feuilles, et est initialisée à +inf ailleurs. Ensuite, sur les noeuds opposant elle est maintenue égale à la plus petite valeur obtenue sur les fils visités jusque là, et elle est égale à la valeur beta de son prédécesseur sur les noeuds joueur. Le pseudo code de l algorithme est le suivant : minimax (in game board, in int depth, in int max_depth, in boolean alpha_beta, in score black_best, in score white_best, out score chosen_score, out score chosen_move) begin : 11

12 end. : minimax(new_board, depth+1, max_depth, alpha_beta, black_best, white_best, the_score, the_move); if (alpha_beta) then if (to_move(black) and (the_score > black_best)) if (the_score > white_best) break; /* alpha_beta cutoff */ else black_best = the_score; endif endif if (to_move(white) and (the_score < white_best)) if (the_score < white_best) break; /* alpha_beta cutoff */ else white_best = the_score; endif endif endif : : Codage de l othellier L othellier est de taille variable, le choix intervenant à la compilation. Ceci permet de tester plus facilement l algorithme et nécessite plus de puissance de calcul. 3 Algorithmique distribuée Il y a principalement deux manière de distribuer minmax : 1. Méthode du split : le maitre execute le corps de l algorithme et chaque exclave ne fait qu évaluer des positions avec la fonction coût 6. 6 cf Principle Variation Splitting (Marsland, Olafsson, and Schaeffer, 1986) 12

13 2. Méthode du depth : le maître évalue le premier niveau et répartit sur les esclaves les calculs à faire. Chaque esclaves s occupant lui même des sous niveaux de l algorithme (chaque esclave execute MinMax mais en commençant à une profondeur différente). Ces deux méthodes ont leurs points faibles et leurs avantages : Pour la méthode du split : + Tous les esclaves travaillent en permanence + Si un esclave meurt on peut facilement redistribuer - Beaucoup de transfert réseau Pour la méthode du depth : + Peu de transfert réseau + Fiabilité : à chaque coup on envoi uniquement aux esclaves "vivants" - Si un esclave meurt on devra peut être refaire beaucoup de calcul en fonction de son niveau. - Certains esclaves peuvent ne pas travailler pour certains coups. Nous avons choisis la deuxième méthode. Notre minimax est distribué de la sorte : le maître Calcul de la liste des coups possibles Traitement des cas triviaux (un ou zero coups possibles) Creation des jobs 7 par le dispatcher Envoi des jobs aux processus esclaves Recuperation des meilleurs coups et comparaison Renvoi du meilleur coup Pour jouer en distribuant l algorithme il faut utiliser l option NETWORK l esclave Réception d une situation à tester Algorithme alpha beta dessus Renvoi au maître du meilleur coup trouvé et de sont coût 7 Un job un est un noeud de l arbre à évaluer 13

14 3.0.6 Amélioration En faisant cela on se rend vite compte que au dela de 6 esclaves (le nombre moyen de coup jouables) beaucoups ne servent que très peu ou pas du tout. Par exemple si au premier coup on a 5 possibilités et 20 esclaves le maitre n enverra des jobs que à 5 esclaves. La solution est d envoyer en même temps que les situation une liste d esclaves utilisable pour chaque exclaves. Par exemple dans le cas précédents si les esclaves sont numérotés de 1 à 20 on aura : esclave 1 : évalue cout de position 1 avec les esclaves 6,7,8 esclave 2 : évalue cout de position 2 avec les esclaves 9,10,11 esclave 3 : évalue cout de position 3 avec les esclaves 12,13,14 esclave 4 : évalue cout de position 4 avec les esclaves 15,16,17 esclave 5 : évalue cout de position 5 avec les esclaves 18,19,20 4 LAM/MPI 4.1 Introduction à LAM/MPI LAM/MPI est une bibliothèque de calcul parallèlle. MPI signifie Message Passing Interface et est un standard qui nous permet d écrire des applications distribuées portables. Il en existe plusieurs implémentations. Nous avons choisi LAM, qui est disponible sur toutes les distributions dignes de ce nom, et pour laquelle nous disposions d une documentation de qualité. LAM/MPI 8 est un environnement de programmation MPI développé par Ohio Supercomputer Center 9. Il permet à la fois le débuggage des applications MPI grace à des démons (comme PVM) et l éxécution performante des codes en courtcircuitant ces démons lorsque l application est testée

15 4.2 Installation de LAM/MPI Avec les sources Les sources de la version utilisée sont disponibles depuis l url suivante : Une fois les sources récupérée on compile les binaires :./configure --prefix=~/lam/ --without-romio make make install Sous Debian Pour compiler IAD, vous aurez besoin du paquet lam4-dev. Le problème est que ce paquet contient la version 7 de LAM, non compatible avec les versions inferieures (ou du moins posant suffisamment de problèmes de deploiment). Ceci venant de format de message incompatibles et d une liaison avec une version précise lors de la compilation. Pour eviter les problèmes d execution en cas de communication avec les machines du PIE, mieux vaut compiler LAM a partir des sources 10 afin d uniformiser les versions utilisées. Pour les autres distributions. Attention aux problèmes des versions. Utilisez bien la et pas les 7.*.* Parc Informatique EPITA Choix de la version de LAM : Nous n avons pas pu compiler les dernières versions de LAM sur le PIE, et nous sommes donc rabattus sur des versions anterieures : la Ceci ne devrait pas être pénalisant étant donné l usage que l on compte en faire. Une version compilée se trouve ici : " cessie_g/www/lam_install.tar.bz2". ou Lieu de l installation : Il faut que les binaires soient accessibles à toutes les machines participant a la distribution. Il faut donc installer les binaires sur votre compte ou sur le sgoinfre en cas de problème de quotas. 10 cf section

16 4.3 Configuration problèmes communs Clefs ssh : Lorsque vous lancez lamboot, il ne doit y avoir aucune sortie standard, c est à dire que aucune confirmation ou action ne doit être nécessaire. Ainsi vos clefs ssh ne doivent pas vous demander de mot de passe. deux solutions, soit vous creez vos clefs sans passphrase (non securisé), soit vous utilisez ssh-agent comme suit : eval ssh-agent -s ssh-add qui lorsque la passphrase sera demandé la renverra automatiquement problèmes liés au PIE environnement avoir un.mytcshrc comme celui qui suit (remplacer bien sur cessie_g par votre login ;), ne rien laisser d autre et la dernière ligne est indispensable!) : setenv PATH /u/a2/cessie\_g/lam/bin:/u/a2/cessie\_g/iad/bin\${path} setenv LAMHOME /u/a2/cessie\_g/lam/ setenv LAMRSH "ssh -x" alias. echo Je ne buggerais plus N.B : même si vous utilisez zsh, bash ou autre d habitude cela concerne toujours le.mytcshrc qui est utilisé par lamboot pour les vm. En effet lors du lancement des machines virtuelles sur les différents noeuds du réseau le shell par défaut est obligatoirement utilisé. En l occurence à l école le shell tcsh 11. Le PATH et LAHMOME permettent aux machines virtuelles de trouver LAM, LAMRSH indique que l on utilise ssh et pas rsh. Enfin l alias résoud un problème spécifique au PIE. Les machines virtuelles pourront alors être lancées sur des pcs distants

17 5 IAD 5.1 compilation Paramètres Les seuls paramètres intéressants à modifier sont : BOARD_SIZE : Dans board.h qui représente la taille de la board. MAX_LEVEL : La profondeur d évaluation de l algorithme (dans minmax_othello.h) ELAGUEUR : La puissance des cut-offs de l algorithme alpha-beta (dans minmax_othello.h) environnement du PIE Pour génerer le configure, il vous faut une version correcte des autotools : export PATH=/u/prof/yaka/bin/:\$PATH./autogen.sh NB : n utilisez surtout pas ceux d akim avec lesquels j ai eu de nombreux problèmes! le./configure Pour compiler IAD avec MPI il faut faire : CC=mpicc./configure --prefix=\$home/iad && make all install pour compiler avec le débuggage : CC=mpicc./configure --prefix=\$home/iad --enable-debug && make all install cela definira : IAD_DEBUG : macro a utiliser : IAD_DEBUG(command) ; IAD_DEBUG_FLAG : define a utiliser avec un #ifdef./configure --help vous donnera plus d informations. La compilation abouti à deux exécutables dans le répertoire src/ : iad et iadslave. L exécutable iad s occupe de l affichage graphique et de l envoi de données aux esclaves, alors que iadslave s occupe uniquement de retourner les coups (en utilisant minmax) pour une position et une profondeur donnée. 17

18 5.2 Configuration Spécification automatique Le "./configure" genère "/tmp/lamhosts" automatiquement avec la machine sur laquelle vous etes en premier (le maître) et une liste de nodes listés dans le fichier lamnodes. Ensuite on lance la vm sur les différents noeuds avec la commande : lamboot /tmp/lamhosts -vd Les deux dernieres lignes du résultat de la commande précédente doivent être les suivantes : topology done lamboot completed successfully Les machines virtuelles sont alors lancées sur les différents noeuds en attente de travaux Spécification avancee On peut mettre plus de travaux sur un pc avec l option CPU, le fichier lamhosts ressemblant alors à : localhost machine1 CPU=2 machine2 CPU=1 Le nom (ou l ip) de sa propre machine doit toujours être en debut de liste. 5.3 Exécution Il faut ensuite faire un fichier add.shema qui précise ce qui est lancé sur chaque noeud du réseau : n0 iad -b NETWORK n1 iadslave Ici on a indiqué que le noeud 0 fait tourner iad et le noeud 1 l éxecutable iadslave. NB : verifiez votre PATH pour qu il comprenne bien iad et iadslave. Ensuite pour lancer IAD qui utilisera tous les noeuds du réseau on lance sur le maître la commande : 18

19 mpirun add.schema NB : Attention bien distinguer les messages affichés par le maître et les esclaves car ils sont tous affichés sur le maître LAM/MPI plusieurs esclaves sur une seule machine Il suffit de changer les fichiers précédents avec : $ cat add.schema n0 iad -b NETWORK n0 -np X iadslave $ cat lamhosts localhost Remplacer X par le nombre d esclaves voulu. Ensuite le mpirun add.schema les utilisera tous sur le pc courant Autres modes Iad supporte de nombreuses options : Usage: iad [-h] [-b <input>] [-w <input>] [-o <output>] -h Help -b Input player (Black) [GRAPHIC] -w Input player (White) [GRAPHIC] -o Output [GRAPHIC] I/O values: TEXT GRAPHIC PIPE IA NETWORK RANDOM text mode graphic mode pipe mode (interface) EXPERIMENTAL! computer (input only) computer (input only) random mode (input only) Par exemple pour jouer contre l IA sans distribution on peut faire :./iad -b IA Ou pour tester la distribution de l algorithme contre un random :./iad -b NETWORK -w RANDOM 19

20 6 Résultats 6.1 Résultats techniques Malgré la distribution de l algorithme le jeu reste jouable (environ une seconde entre chaque coup pour une profondeur de 9 avec 15 esclaves 12 ). Les parties ont été testées contre de nombreux autres jeux d othello de niveaux conséquents 13 et les resultats semblent bons. Une procédure de test intensive à été mise au point en utilisant une IA random et l ordinateur gagne à 100% (environ 300 parties testées). Seulement deux points sont à améliorer : MPI ne gère pas facilement la mort des esclaves : si un esclave meurt (sigkill par exemple) la partie s arrete sans alternative : Lamboot stop directement tous les noeuds du réseau y compris le programme maitre. La redistribution des travaux en cas de problèmes ou d esclave inocupés n a pas été faite (problème avec la communication MPI qui ne permet pas d envoyer facilement des types complexes 14 ) Débug MPI du de l envoi et de la réception des coups et coûts : DEBUT MPI Je suis le maitre et il y a 13 process (moi compris). Master: debut create jobs: J ai 12 esclaves, chaque esclave va faire AU MIN 1 jobs parmis les 12. job numero 11 [pour player 2] Liste des coup a tester: 53, job numero 10 [pour player 2] Liste des coup a tester: 54, job numero 9 [pour player 2] Liste des coup a tester: 62, job numero 8 [pour player 2] Liste des coup a tester: 63, job numero 7 [pour player 2] Liste des coup a tester: 64, job numero 6 [pour player 2] Liste des coup a tester: 65, job numero 5 [pour player 2] Liste des coup a tester: 70, job numero 4 [pour player 2] Liste des coup a tester: 71, job numero 3 [pour player 2] Liste des coup a tester: 74, 12 Simulé sur un seul ordinateur Les structs par exemple 20

21 FIG. 5 Capture d écran en cours de partie job numero 2 [pour player 2] Liste des coup a tester: 76, job numero 1 [pour player 2] Liste des coup a tester: 78, job numero 0 [pour player 2] Liste des coup a tester: 79, Master: fin create job: 12 jobs crees. Master: debut de l envoi des donnees: Master: send jobs 11 to slave number 1 Master: send jobs 10 to slave number 2 Master: send jobs 9 to slave number 3 Master: send jobs 8 to slave number 4 Master: send jobs 7 to slave number 5 Master: send jobs 6 to slave number 6 Master: send jobs 5 to slave number 7 Master: send jobs 4 to slave number 8 Master: send jobs 3 to slave number 9 Master: send jobs 2 to slave number 10 Master: send jobs 1 to slave number 11 Master: send jobs 0 to slave number 12 21

22 Master: fin envoi des donnees. Master: debut reception des donnees sur 13 proc. * slave 1: La board recue contient 1 positions a tester pour le player 2. * slave 1: Envoi la meillleure position 53 (coutant 229) au maitre * slave 1: Fin envoi. Attente next job * slave 2: La board recue contient 1 positions a tester pour le player 2. * slave 2: Envoi la meillleure position 54 (coutant 234) au maitre * slave 2: Fin envoi. Attente next job * slave 3: La board recue contient 1 positions a tester pour le player 2. * slave 3: Envoi la meillleure position 62 (coutant 212) au maitre * slave 3: Fin envoi. Attente next job * slave 4: La board recue contient 1 positions a tester pour le player 2. * slave 4: Envoi la meillleure position 63 (coutant 221) au maitre * slave 4: Fin envoi. Attente next job * slave 5: La board recue contient 1 positions a tester pour le player 2. * slave 5: Envoi la meillleure position 64 (coutant 220) au maitre * slave 5: Fin envoi. Attente next job * slave 6: La board recue contient 1 positions a tester pour le player 2. * slave 6: Envoi la meillleure position 65 (coutant 231) au maitre * slave 6: Fin envoi. Attente next job * slave 7: La board recue contient 1 positions a tester pour le player 2. * slave 7: Envoi la meillleure position 70 (coutant 229) au maitre * slave 7: Fin envoi. Attente next job * slave 8: La board recue contient 1 positions a tester pour le player 2. * slave 8: Envoi la meillleure position 71 (coutant 221) au maitre 22

23 * slave 8: Fin envoi. Attente next job * slave 9: La board recue contient 1 positions a tester pour le player 2. * slave 9: Envoi la meillleure position 74 (coutant 227) au maitre * slave 9: Fin envoi. Attente next job * slave 10: La board recue contient 1 positions a tester pour le player 2. * slave 10: Envoi la meillleure position 76 (coutant 236) au maitre * slave 10: Fin envoi. Attente next job * slave 11: La board recue contient 1 positions a tester pour le player 2. * slave 11: Envoi la meillleure position 78 (coutant 228) au maitre * slave 11: Fin envoi. Attente next job * slave 12: La board recue contient 1 positions a tester pour le player 2. * slave 12: Envoi la meillleure position 79 (coutant 230) au maitre * slave 12: Fin envoi. Attente next job Master: a recut la position 53 avec le cout 229 Master: a recut la position 54 avec le cout 234 Master: a recut la position 62 avec le cout 212 Master: a recut la position 63 avec le cout 221 Master: a recut la position 64 avec le cout 220 Master: a recut la position 65 avec le cout 231 Master: a recut la position 70 avec le cout 229 Master: a recut la position 71 avec le cout 221 Master: a recut la position 74 avec le cout 227 Master: a recut la position 76 avec le cout 236 Master: a recut la position 78 avec le cout 228 Master: a recut la position 79 avec le cout 230 Master: fin reception des donnees Master: Le coup choisi est FIN MPI resultat:

24 FIG. 6 XMPI 6.2 XMPI Une des caractéristiques les plus intéressantes de LAM est la possibilité d exploiter les traces générées avec l option -ton de LAM mpirun. Le script lamjob appelle automatiquement lamtrace qui collecte ces traces dans le fichier lamjob.lamtr. L application XMPI 15 permet d exploiter les traces produites. A la fin de l exécution du code on lance xmpi sur le noeud maitre. On observe sur la figure 6 page 24 en vert les temps d activité (calcul), en rouge l inactivité et en jaune la communication. 7 Webographie

Algorithmique et Programmation Projets 2012/2013

Algorithmique et Programmation Projets 2012/2013 3 Dames 3. Objectif Il s agit d écrire un programme jouant aux Dames selon les règles. Le programme doit être le meilleur possible. Vous utiliserez pour cela l algorithme α β de recherche du meilleur coup

Plus en détail

Mini-Projet : Tournoi de Dames

Mini-Projet : Tournoi de Dames Mini-Projet : Tournoi de Dames L objectif du projet est de programmer un jeu de dames de façon à ce que votre programme puisse jouer une partie de dames avec les programmes des autres étudiants. 1 Organisation

Plus en détail

Intelligence Artificielle Jeux

Intelligence Artificielle Jeux Intelligence Artificielle Jeux Bruno Bouzy http://web.mi.parisdescartes.fr/~bouzy bruno.bouzy@parisdescartes.fr Licence 3 Informatique UFR Mathématiques et Informatique Université Paris Descartes Programmation

Plus en détail

1 Force brute. 2 Analyse. 3 Conception préliminaire. 4 Conception détaillée. 5 Développement. 6 Conclusion. Architecture des Systèmes d Information

1 Force brute. 2 Analyse. 3 Conception préliminaire. 4 Conception détaillée. 5 Développement. 6 Conclusion. Architecture des Systèmes d Information Plan Puissance 4 intelligent I3 Algorithmique Nicol Delestre 1 Force brute 2 Analyse 3 Conception préliminaire 4 Conception détaillée 5 Développement 6 Conclusion Puissance 4. v2.0 1 / 29 Puissance 4.

Plus en détail

Jeu de Dames. Rapport de projet. Etudiants : Tuteur : Mohr Maxence Ollagnon Julien. Informatique 3 ème année Promo 2016 Projet Algorithmique

Jeu de Dames. Rapport de projet. Etudiants : Tuteur : Mohr Maxence Ollagnon Julien. Informatique 3 ème année Promo 2016 Projet Algorithmique Polytech'Marseille Case 925 163, avenue de Luminy 13288 Marseille cedex 9 Informatique 3 ème année Promo 2016 Projet Algorithmique Jeu de Dames Rapport de projet Etudiants : Tuteur : Charton Trystan Alexandra

Plus en détail

Projet de programmation Java Puissance 4

Projet de programmation Java Puissance 4 Projet de programmation Java Puissance 4 Juliusz Chroboczek et Gabriel Scherer Version du 13 novembre 2014 Le but de ce projet est d implémenter en Java un jeu de plateau qui s appelle Puissance 4. Votre

Plus en détail

Antoine Cornuéjols AgroParisTech

Antoine Cornuéjols AgroParisTech Antoine Cornuéjols AgroParisTech antoine.cornuejols@agroparistech.fr http://www.lri.fr/~antoine Cours IA 1. Introduction 2. Cas des jeux entièrement explorables 3. L algorithme du MinMax 4. Amélioration

Plus en détail

Algorithmique et programmation avec Java (NFA002)

Algorithmique et programmation avec Java (NFA002) Algorithmique et programmation avec Java (NFA002) Deuxième session 13 septembre 2012 Aucun document n est autorisé. Le barème est donné à titre indicatif. Exercice 1 : listes (4 points) Etudiez le programme

Plus en détail

Conception et Développement d un moteur d intelligence artificielle pour un jeu d échecs multiplateformes

Conception et Développement d un moteur d intelligence artificielle pour un jeu d échecs multiplateformes MEMOIRE DE FIN D ETUDES MASTER D INFORMATIQUE Conception et Développement d un moteur d intelligence artificielle pour un jeu d échecs multiplateformes Étudiant Superviseurs : HOANG Duc Viet : HO Tuong

Plus en détail

Travaux dirigés n o 6

Travaux dirigés n o 6 Travaux dirigés n o 6 Lycée Kléber MPSI, Option Info 2014/2015 Exercice 1 (Indexation d un arbre binaire) Ecrire une fonction Caml indexation : ( f, n) arbre_binaire -> (string,string) arbre_binaire qui

Plus en détail

Proposition d activité utilisant l application. Tripatouille. (http://www.malgouyres.fr/tripatouille/)

Proposition d activité utilisant l application. Tripatouille. (http://www.malgouyres.fr/tripatouille/) IREM Clermont-Ferrand Algorithmique au lycée Malika More malika.more@u-clermont1.fr 28 janvier 2011 Proposition d activité utilisant l application Tripatouille (http://www.malgouyres.fr/tripatouille/)

Plus en détail

Rendu de travaux I, Algo - langage C

Rendu de travaux I, Algo - langage C IFIP 33 avenue de la République 75011 PARIS Rendu de travaux I, Valérie Amiot RP 50 2001-2002 SOMMAIRE I. Pourquoi sous C? II. Présentation du jeu 1) But du jeu III. Analyse fonctionnelle IV. Fonctionnalités

Plus en détail

Algorithmique Travaux Dirigés

Algorithmique Travaux Dirigés Algorithmique Travaux Dirigés Master Technologie et Handicap : Intensifs 1 Corrigé Exercice 1 Affectations 1. Considérons les algorithmes ci-dessous. (a) Quel sera le contenu des variables a, b et éventuellement

Plus en détail

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12 Probabilités. I - Rappel : trois exemples. Exemple 1 : Dans une classe de 25 élèves, il y a 16 filles. Tous les élèves sont blonds ou bruns. Parmi les filles, 6 sont blondes. Parmi les garçons, 3 sont

Plus en détail

C12. Les structures arborescentes. Août 2006

C12. Les structures arborescentes. Août 2006 Les structures arborescentes Août 2006 Objectifs du C12 Connaître le principe de la structure d arbre binaire Connaître les détails d implémentation de la structure d arbre binaire de recherche Les structures

Plus en détail

Les structures de données. Rajae El Ouazzani

Les structures de données. Rajae El Ouazzani Les structures de données Rajae El Ouazzani Les arbres 2 1- Définition de l arborescence Une arborescence est une collection de nœuds reliés entre eux par des arcs. La collection peut être vide, cad l

Plus en détail

Poker. A rendre pour le 25 avril

Poker. A rendre pour le 25 avril Poker A rendre pour le 25 avril 0 Avant propos 0.1 Notation Les parties sans * sont obligatoires (ne rendez pas un projet qui ne contient pas toutes les fonctions sans *). Celles avec (*) sont moins faciles

Plus en détail

ParallelKnoppix. Majid Hameed. Copyright 2005 Majid Hameed. Copyright 2005 Gauthier Savart. Copyright 2005 Joëlle Cornavin

ParallelKnoppix. Majid Hameed. Copyright 2005 Majid Hameed. Copyright 2005 Gauthier Savart. Copyright 2005 Joëlle Cornavin Linux Gazette n 110 Janvier 2005 Majid Hameed Copyright 2005 Majid Hameed Copyright 2005 Gauthier Savart Copyright 2005 Joëlle Cornavin Article paru dans le n 110 de la Gazette Linux de janvier 2005. Traduction

Plus en détail

BUREAU D ETUDES INFORMATIQUE JOUEUR DE PUISSANCE 4

BUREAU D ETUDES INFORMATIQUE JOUEUR DE PUISSANCE 4 MIETLICKI Pascal 3 MIC C2 BUREAU D ETUDES INFORMATIQUE JOUEUR DE PUISSANCE 4 1. Mode Console... 2 2. Mode Graphique... 2 3. Architecture de notre logiciel... 3 4. Manuel d utilisation... 5 5. Aide au joueur...

Plus en détail

Structures de données non linéaires

Structures de données non linéaires Structures de données non linéaires I. Graphes Définition Un graphe (simple) orienté G est un couple (S, A), où : S est un ensemble dont les éléments sont appelés les sommets. A est un ensemble de couples

Plus en détail

Master UPMC Sciences et technologies, mention informatique Spécialité Systèmes et Applications

Master UPMC Sciences et technologies, mention informatique Spécialité Systèmes et Applications Master UPMC Sciences et technologies, mention informatique Spécialité Systèmes et Applications Réparties Réalisation Assistée d Applications Réparties Projet - écriture d un générateur de code Encadreur

Plus en détail

LE CONTENU DU JEU : LA NOTATION :

LE CONTENU DU JEU : LA NOTATION : Dames Classiques Les jeux de pions et de plateau datent de la plus haute antiquité et furent trouvés notamment, dans des tombes en Egypte. Il semble donc logique de voir le jeu de dames comme un de leur

Plus en détail

Décision Markovienne appliquée à un jeu de stop ou encore : Pickomino (Heckmeck Am Bratwurmeck)

Décision Markovienne appliquée à un jeu de stop ou encore : Pickomino (Heckmeck Am Bratwurmeck) Décision Markovienne appliquée à un jeu de stop ou encore : Pickomino (Heckmeck Am Bratwurmeck) Stéphane Cardon Nathalie Chetcuti-Sperandio Fabien Delorme Sylvain agrue CRI - Université d Artois {cardon,chetcuti,delorme,lagrue}@cril.univ-artois.fr

Plus en détail

Structures de données, IMA S6

Structures de données, IMA S6 Structures de données, IMA S6 Arbres Binaires d après un cours de N. Devésa, Polytech Lille. Laure Gonnord http://laure.gonnord.org/pro/teaching/ Laure.Gonnord@polytech-lille.fr Université Lille 1 - Polytech

Plus en détail

GRAPHES : PLATEAUX DE JEU

GRAPHES : PLATEAUX DE JEU 1 GRAPHES : PLATEAUX DE JEU Contenu GRAPHES : PLATEAUX DE JEU... 1 Snort... 2 Dames chinoises sur damier... 3 Le loup et les brebis... 4 Awithlaknannai mosona... 5 Alquerque... 6 Peralikatama... 7 Renard

Plus en détail

Ligne de commande Linux avancée et scriptage bash (Linux 201)

Ligne de commande Linux avancée et scriptage bash (Linux 201) Ligne de commande Linux avancée et scriptage bash (Linux 201) laurent.duchesne@calculquebec.ca maxime.boissonneault@calculquebec.ca Université Laval - Septembre 2014 1 2 Se connecter à Colosse ssh colosse.calculquebec.ca

Plus en détail

SNAKE. Programmation du jeu SNAKE sur la console Windows en C sous l IDE Devcpp. Copie d écran du jeu

SNAKE. Programmation du jeu SNAKE sur la console Windows en C sous l IDE Devcpp. Copie d écran du jeu SNAKE Programmation du jeu SNAKE sur la console Windows en C sous l IDE Devcpp Copie d écran du jeu Principe de fonctionnement du jeu : le serpent avance automatiquement, le joueur ne peut agir que sur

Plus en détail

Exercices «Programmation récursive» Deuxième saison UPMC Cycle L Revision: 1.21

Exercices «Programmation récursive» Deuxième saison UPMC Cycle L Revision: 1.21 Exercices «Programmation récursive» Deuxième saison UPMC Cycle L Revision: 1.21 Anne Brygoo, Maryse Pelletier, Christian Queinnec, Michèle Soria Université Paris 6 Pierre et Marie Curie septembre 2005

Plus en détail

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

Jade. Projet Intelligence Artificielle «Devine à quoi je pense» Jade Projet Intelligence Artificielle «Devine à quoi je pense» Réalisé par Djénéba Djikiné, Alexandre Bernard et Julien Lafont EPSI CSII2-2011 TABLE DES MATIÈRES 1. Analyse du besoin a. Cahier des charges

Plus en détail

Le jeu de Marienbad. 1 Écriture binaire d un entier

Le jeu de Marienbad. 1 Écriture binaire d un entier MPSI Option Informatique Année 2002, Quatrième TP Caml Vcent Simonet (http://cristal.ria.fr/~simonet/) Le jeu de Marienbad Dans le film d Ala Resnais «L année dernière à Marienbad» (1961), l un des personnages,

Plus en détail

Dossier projet isn 2015 par Victor Gregoire

Dossier projet isn 2015 par Victor Gregoire Dossier projet isn 2015 par Victor Gregoire Plan: I) But du projet: créer un jeu de blackjack fonctionnel et le poster sur une page web mise en ligne. Le jeu sera developpé en C++ a l'aide de code blocks.

Plus en détail

Que faire en algorithmique en classe de seconde? ElHassan FADILI Lycée Salvador Allende

Que faire en algorithmique en classe de seconde? ElHassan FADILI Lycée Salvador Allende Que faire en algorithmique en classe de seconde? BEGIN Que dit le programme? Algorithmique (objectifs pour le lycée) La démarche algorithmique est, depuis les origines, une composante essentielle de l

Plus en détail

TP 8 : Arbres binaires de recherche

TP 8 : Arbres binaires de recherche TP 8 : Arbres binaires de recherche Semaine du 17 Mars 2008 Exercice 1 Dénir une structure struct noeud_s permettant de coder un n ud d'un arbre binaire contenant une valeur entière. Ajouter des typedef

Plus en détail

Ch. 1 : Bases de programmation en Visual Basic

Ch. 1 : Bases de programmation en Visual Basic Ch. 1 : Bases de programmation en Visual Basic 1 1 Variables 1.1 Définition Les variables permettent de stocker en mémoire des données. Elles sont représentées par des lettres ou des groupements de lettres

Plus en détail

WebFTP Un client Web sécurisé pour FTP

WebFTP Un client Web sécurisé pour FTP WebFTP Un client Web sécurisé pour FTP Jirung Albert SHIH, Shih@math.Jussieu.fr Université Paris 7 JRES 2001 Introduction Nous allons dans ce document présenter une solution mise en œuvre sur le réseau

Plus en détail

Afficher le contenu du script au fur et à mesure de son exécution.

Afficher le contenu du script au fur et à mesure de son exécution. 5 Commandes, variables et utilitaires système Ns avons étudié en détail les structures offertes par le langage de programmation des scripts shell, ainsi que les mécanismes d évaluation des expressions.

Plus en détail

Manuel utilisateur. VPtimeClock 1.6. pour VISUAL-PLANNING TM. Logiciel de pointage des temps de travail en réseau.

Manuel utilisateur. VPtimeClock 1.6. pour VISUAL-PLANNING TM. Logiciel de pointage des temps de travail en réseau. Manuel utilisateur VPtimeClock 1.6 pour VISUAL-PLANNING TM Logiciel de pointage des temps de travail en réseau 05 Décembre 2010 99 avenue Albert 1 er 92500 Rueil-Malmaison France (33) (0)1 41 39 88 31

Plus en détail

Héritage en java : Calculatrice SDC

Héritage en java : Calculatrice SDC Programmation orientée objet L3 MIAGE Héritage en java : Calculatrice SDC Travail à rendre : le code complet du projet SDC sous forme d une archive tar.gz. L archive comportera trois répertoires : un répertoire

Plus en détail

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures)

L2 - Algorithmique et structures de données (Année 2010/2011) Examen (2 heures) L2 - lgorithmique et structures de données (nnée 2010/2011) Delacourt, Phan Luong, Poupet xamen (2 heures) Les documents (cours, TD, TP) sont autorisés. Les quatre exercices sont indépendants. À la fin

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche Chapitre 6 Arbres binaires de recherche 6.1 Introduction On a étudié le problème de la recherche dans une collection d éléments ordonnés entre eux : on a montré que Pour une liste contiguë, la recherche

Plus en détail

Manuel de System Monitor

Manuel de System Monitor Chris Schlaeger John Tapsell Chris Schlaeger Tobias Koenig Traduction française : Yves Dessertine Traduction française : Philippe Guilbert Traduction française : Robin Guitton Relecture de la documentation

Plus en détail

Qualité du logiciel: Méthodes de test

Qualité du logiciel: Méthodes de test Qualité du logiciel: Méthodes de test Matthieu Amiguet 2004 2005 Analyse statique de code Analyse statique de code Étudier le programme source sans exécution Généralement réalisée avant les tests d exécution

Plus en détail

API08 Evaluation site internet

API08 Evaluation site internet UNIVERSITE DE TECHNOLOGIE DE COMPIEGNE API08 Evaluation site internet Fédération Française des échecs Emilien NOTARIANNI Printemps 2014 Table des matières Introduction... 2 Evaluation «subjective»... 3

Plus en détail

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014

Langage C/C++ TD 3-4 : Création dynamique d objets. Hubert Godfroy. 27 novembre 2014 Langage C/C++ TD 3-4 : Création dynamique d objets Hubert Godfroy 7 novembre 014 1 Tableaux Question 1 : Écrire une fonction prenant un paramètre n et créant un tableau de taille n (contenant des entiers).

Plus en détail

Cours d Algorithmique et Complexité

Cours d Algorithmique et Complexité Cours d Algorithmique et Complexité Structures de données (2e suite) Catalin Dima Arbres binaires de recherche Propriété de base des arbres binaires de recherche Soit x un noeud de l arbre. Alors : 1.

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche Chapitre 1 Arbres binaires de recherche 1 Les arbre sont très utilisés en informatique, d une part parce que les informations sont souvent hiérarchisées, et peuvent être représentées naturellement sous

Plus en détail

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

Plus en détail

SSH, le shell sécurisé

SSH, le shell sécurisé , le shell sécurisé Objectifs : 1. Présenter le protocole et les outils associés Sébastien JEAN Pourquoi 1/2? Les services standards ne supportent que peu de propriétés de sécurité souvent l identification,

Plus en détail

INFO-F-404 : Techniques avancées de systèmes d exploitation

INFO-F-404 : Techniques avancées de systèmes d exploitation Nikita Veshchikov e-mail : nikita.veshchikov@ulb.ac.be téléphone : 02/650.58.56 bureau : 2N8.213 URL : http://student.ulb.ac.be/~nveshchi/ INFO-F-404 : Techniques avancées de systèmes d exploitation Table

Plus en détail

Algorithmes probabilistes. Références: Fundamentals of Algortihms de Gilles Brassard et Paul Bratley Note de cours de Pierre McKenzie

Algorithmes probabilistes. Références: Fundamentals of Algortihms de Gilles Brassard et Paul Bratley Note de cours de Pierre McKenzie Algorithmes probabilistes Références: Fundamentals of Algortihms de Gilles Brassard et Paul Bratley Note de cours de Pierre McKenzie Mise en contexte: Indices: Vous êtes à la recherche d un trésor légendaire

Plus en détail

Le jeu d échecs à l école maternelle

Le jeu d échecs à l école maternelle Ecole «L Oiseau Vert» 800 VOGELGRUN Le jeu d échecs à l école maternelle Développer les capacités de stratégie et de raisonnement Action du projet d école 0/0 Etape n : notion de quadrillage Construction

Plus en détail

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Tutoriel Création d une source Cydia et compilation des packages sous Linux Tutoriel Création d une source Cydia et compilation des packages sous Linux 1. Pré-requis 1. Quelques connaissances sous Linux 2. Avoir à disposition un Serveur FTP pour héberger votre source 3. Un thème

Plus en détail

Une implémentation du jeu Breakthrough en Haskell

Une implémentation du jeu Breakthrough en Haskell Une implémentation du jeu Breakthrough en Haskell Julien Dehos 23 mai 2014 1 Le jeu Breakthrough Jeu de plateau de type jeu de dames. Initialement, le plateau est composé de deux rangées de pions noirs

Plus en détail

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement

Pharmed. gestion de pharmacie hospitalière. Installation / déploiement Pharmed gestion de pharmacie hospitalière Installation / déploiement Version 1.0 du 23/05/2006 Date Auteur Version Modification 23/05/06 Pierre CARLIER 1.0 14/06/06 Matthieu Laborie Table des matières

Plus en détail

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski cegielski@u-pec.fr Mars 2002 Pour Irène et Marie Legal Notice Copyright c 2002 Patrick Cégielski Université

Plus en détail

Sylvain Archenault Yves Houpert PROJET INFORMATIQUE : Langage C : Le Jeu De Dames

Sylvain Archenault Yves Houpert PROJET INFORMATIQUE : Langage C : Le Jeu De Dames Sylvain Archenault Yves Houpert PROJET INFORMATIQUE : Langage C : Le Jeu De Dames Projet GM3 Janvier 2005 Table des matières 1 Introduction. 2 2 Présentation du Jeu. 3 2.1 Règle du jeu de dames.....................................

Plus en détail

Système d exploitation

Système d exploitation Chapitre 2 Système d exploitation 2.1 Définition et rôle Un ordinateur serait bien difficile à utiliser sans interface entre le matériel et l utilisateur. Une machine peut exécuter des programmes, mais

Plus en détail

Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales

Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales Retour d expérience en Astrophysique : utilisation du Cloud IaaS pour le traitement de données des missions spatiales Cécile Cavet cecile.cavet at apc.univ-paris7.fr Centre François Arago (FACe), Laboratoire

Plus en détail

LIF1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION

LIF1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION Licence STS Université Claude Bernard Lyon I LIF1 : ALGORITHMIQUE ET PROGRAMMATION IMPÉRATIVE, INITIATION 1 COURS 7 : Structures et Fichiers OBJECTIFS DE LA SÉANCE Deux notions abordées dans ce cours Celle

Plus en détail

Université du Littoral Master 1. PROJET Puissance 4

Université du Littoral Master 1. PROJET Puissance 4 Université du Littoral Master 1 PROJET Puissance 4 Le but de ce projet est de réaliser un programme permettant à l utilisateur de jouer au Puissance 4 contre l ordinateur. 1 Travail à Rendre Le travail

Plus en détail

Arbres binaires de recherche

Arbres binaires de recherche 1 arbre des comparaisons 2 recherche dichotomique l'arbre est recalculé à chaque recherche 2 5 3 4 7 9 1 6 1 2 3 4 5 6 7 9 10 conserver la structure d'arbre au lieu de la reconstruire arbre binaire de

Plus en détail

Serveurs de noms Protocoles HTTP et FTP

Serveurs de noms Protocoles HTTP et FTP Nils Schaefer Théorie des réseaux (EC3a) Serveurs de noms Protocoles HTTP et FTP Théorie des réseaux (EC3a) Séance 7 Pourquoi DNS? Internet est une structure hiérarchique et arborescente de réseaux et

Plus en détail

Rapport de projet : Jeu de dames en java

Rapport de projet : Jeu de dames en java Durand Faustine Hamouma Mickael Brunet-Manquat Ivan Coquilhat Mattéo Rapport de projet : Jeu de dames en java Licence 2 informatique 2015 Projet informatique HLIN405 1 Encadrant: Abdelhak-Djamel Seriai

Plus en détail

LI5a : Développement de programmes (A. Slissenko)

LI5a : Développement de programmes (A. Slissenko) 1 Licence 3 Info LI5a : Développement de programmes (A. Slissenko) Corrigé 1. (1a). Expliquez brièvement à quoi sert la spécification des requis, comment elle peut être décrite et comment elle peut être

Plus en détail

Arbres binaires et codage de Huffman

Arbres binaires et codage de Huffman MP Option Informatique Premier TP Caml Jeudi 8 octobre 2009 Arbres baires et codage de Huffman 1 Arbres baires Soit E un ensemble non vide. On défit la notion d arbre baire étiqueté (aux feuilles) par

Plus en détail

Préparation TP Système et réseau : mise en oeuvre et exploitation

Préparation TP Système et réseau : mise en oeuvre et exploitation Préparation TP Système et réseau : mise en oeuvre et exploitation Procédure à réaliser avant chaque TP : Sous Windows : Démarrer/Panneau de configuration/connexion Réseau Propriétés/Onglet général Propriétés

Plus en détail

Fiche de TD-TP no. 4

Fiche de TD-TP no. 4 Master 1 Informatique Programmation Fonctionnelle, p. 1 Fiche de TD-TP no. 4 Exercice 1. Voici trois façons différentes de définir le type Image : type Image = [[ Int ]] data Image = Image [[ Int ]] newtype

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Automatisation de l administration système

Automatisation de l administration système Automatisation de l administration système Plan Problèmatique : trop de systèmes, trop de solutions Typage des solutions Puppet : gestion de configuration de systèmes Capistrano : déploiement d applications

Plus en détail

L annuaire et le Service DNS

L annuaire et le Service DNS L annuaire et le Service DNS Rappel concernant la solution des noms Un nom d hôte est un alias assigné à un ordinateur. Pour l identifier dans un réseau TCP/IP, ce nom peut être différent du nom NETBIOS.

Plus en détail

MANUEL D INSTALLATION

MANUEL D INSTALLATION Data Processing Commission Fast Advanced Software for Table soccer - v 1.0 Logiciel de gestion de tournoi de football de table MANUEL D INSTALLATION INSTALLATION INFORMATIQUE DE LA TABLE DE MARQUE & CONFIGURATION

Plus en détail

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt

Procédure pas à pas de découverte de l offre. Service Cloud Cloudwatt Procédure pas à pas de découverte de l offre Service Cloud Cloudwatt Manuel Utilisateur 03/07/2014 Cloudwatt - Reproduction et communication sont interdites sans autorisation 1/45 Contenu 1. Introduction...

Plus en détail

Cours 7 : fonctions recursives, arithmétique binaire, flottants 1

Cours 7 : fonctions recursives, arithmétique binaire, flottants 1 Cours 7 : fonctions recursives, arithmétique binaire, flottants 1 Les types énumérés On peut aussi définir des types qui ont un nombre fini de valeurs (ex: jours de la semaine, couleurs primaires, etc.)

Plus en détail

Projet de Programmation Fonctionnelle

Projet de Programmation Fonctionnelle Projet de Programmation Fonctionnelle L objectif de ce projet est de concevoir, en Objective Caml, un évaluateur pour le langage mini-ml (un sous ensemble du langage Objective Caml). Votre programme devra

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE

EPREUVE OPTIONNELLE d INFORMATIQUE EPREUVE OPTIONNELLE d INFORMATIQUE A) QCM Les réponses au QCM doivent être portées directement sur la feuille de sujet de QCM. Ne pas omettre de faire figurer votre numéro de candidat sur cette feuille

Plus en détail

M2 TIIR (2013-2014) Bilel Derbel

M2 TIIR (2013-2014) Bilel Derbel M2 TIIR (2013-2014) Bilel Derbel Notre but est de concevoir une application générique sur grid5000 qui permet de déployer des calculs parallèles de façon transparente Plus précisément, nous nous plaçons

Plus en détail

Tests de SlipStream sur les plateformes StratusLab@LAL et OpenStack@CC-IN2P3 : vers la. Vers la fédération du Cloud computing

Tests de SlipStream sur les plateformes StratusLab@LAL et OpenStack@CC-IN2P3 : vers la. Vers la fédération du Cloud computing Tests de sur les plateformes StratusLab@LAL et OpenStack@CC-IN2P3 : vers la fédération du Cloud computing Cécile Cavet1 & Charles Loomis2 (1) Centre François Arago, Laboratoire, Université Paris Diderot,

Plus en détail

Première approche. Définition. Définition de l informatique donnée par l Académie Française en 1966 :

Première approche. Définition. Définition de l informatique donnée par l Académie Française en 1966 : Première approche Définition Définition de l informatique donnée par l Académie Française en 1966 : L informatique est la science du traitement rationnel, notamment par machines automatiques, de l information

Plus en détail

Théorie des Jeux Et ses Applications

Théorie des Jeux Et ses Applications Théorie des Jeux Et ses Applications De la Guerre Froide au Poker Clément Sire Laboratoire de Physique Théorique CNRS & Université Paul Sabatier www.lpt.ups-tlse.fr Quelques Définitions de la Théorie des

Plus en détail

Domaine Name System. Auteur: Congduc Pham, Université Lyon 1. Figure 1: Schéma des salles TP11 et TD4

Domaine Name System. Auteur: Congduc Pham, Université Lyon 1. Figure 1: Schéma des salles TP11 et TD4 TP de Réseaux IP pour DESS Domaine Name System Auteur: Congduc Pham, Université Lyon 1 1 Schéma de départ Figure 1: Schéma des salles TP11 et TD4 Le schéma de départ pour aujourd hui est celui de la figure

Plus en détail

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server Machine virtuelle Machine virtuelle Machine virtuelle VMware ESX 3 Network Shutdown Module Network

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE QCM Remarque : - A une question correspond au moins 1 réponse juste - Cocher la ou les bonnes réponses Barème : - Une bonne réponse = +1 - Pas de réponse = 0

Plus en détail

Répartition de charge dynamique dans un système distribuée

Répartition de charge dynamique dans un système distribuée Rapport de TER Répartition de charge dynamique dans un système distribuée Tuteur : Stephane Mancini Benjamin Petit Grenoble INP - Ensimag Mai 2010 Table des matières 1 Introduction 4 1.1 Contexte pratique...................................

Plus en détail

Gestion de la mémoire

Gestion de la mémoire Gestion de la mémoire ENSIIE : Programmation avancée 1/20 Langages et mémoire Différence principale entre langages de haut niveau : OCaml, Java, C# langages de bas niveau : C, C++ : Gestion de la mémoire

Plus en détail

Master Poly Trader. Manuel d utilisateur. Group IV Benoît Perroud Marius Erni Lionel Matthey David Wenger Lotfi Hussami

Master Poly Trader. Manuel d utilisateur. Group IV Benoît Perroud Marius Erni Lionel Matthey David Wenger Lotfi Hussami Master Poly Trader Manuel d utilisateur Group IV Benoît Perroud Marius Erni Lionel Matthey David Wenger Lotfi Hussami MasterPoly Trader est un logiciel réalisé dans le cadre d un projet de génie logiciel.

Plus en détail

PocketNet SNMP/Modbus

PocketNet SNMP/Modbus Volume 1 RBEI-ADISCOM Manuel utilisateur PocketNet SNMP/Modbus CONVERTISSEUR SERIE - ETHERNET Manuel utilisateur PocketNet SNMP/Modbus Table des matières CHAPITRE 1 Caractéristiques utiles à la mise en

Plus en détail

TP2 sur le module CIE-H10 MODBUS/TCP

TP2 sur le module CIE-H10 MODBUS/TCP TP2 sur le module CIE-H10 MODBUS/TCP Durée : 4heures Propreté : /1 Autonomie : /3 Binôme : Bilan : Note /40 : 1 1: MISE EN SITUATION Vous êtes technicien de contrôle au sein de la société Sollae, le fabricant

Plus en détail

Initiation aux algorithmes des arbres binaires

Initiation aux algorithmes des arbres binaires Initiation aux algorithmes des arbres binaires Plan I. Les arbres biniaires I. Définition II. Représentation graphique d un arbre III. Terminologie IV. Représentation en mémoire des arbres binaires V.

Plus en détail

Mathrice et les outils de travail et développement collaboratif

Mathrice et les outils de travail et développement collaboratif Mathrice et les outils de travail et développement collaboratif Philippe Depouilly, Laurent Facq IMB UMR 5251 - Mathrice GDS 2754 21 janvier 2013 (IMB/MATHRICE) Mathrice/Envol 2013 21 janvier 2013 1 /

Plus en détail

Information numérique Analyse de trafic TP Page 1 / 1

Information numérique Analyse de trafic TP Page 1 / 1 1 / 1 Lorsqu un ordinateur se connecte à Internet, il émet des in formations et en reçoit d autres. Ces informations sont organisées en blocs de quelques centaines d octets. On appelle ces blocs des «trames».

Plus en détail

Marches, permutations et arbres binaires aléatoires

Marches, permutations et arbres binaires aléatoires Marches, permutations et arbres binaires aléatoires Épreuve pratique d algorithmique et de programmation Concours commun des Écoles Normales Supérieures Durée de l épreuve: 4 heures Cœfficient: 4 Juillet

Plus en détail

TP 4 -Arbres Binaires -

TP 4 -Arbres Binaires - L3 Informatique Programmation fonctionnelle OCaml Année 2013/2014 TP 4 -Arbres Binaires - Un arbre binaire est une structure de données qui peut se représenter sous la forme d une hiérarchie dont chaque

Plus en détail

Projet : site web de gestion d itinéraires de voyage

Projet : site web de gestion d itinéraires de voyage Projet : site web de gestion d itinéraires de voyage Partie 1 (modélisation et architecture du site) UCBL - Département Informatique de Lyon 1 LIF4 - automne 2014 1 Description générale du projet Le projet

Plus en détail

CHAMPION Matthieu Modèles de Marché en Visual Basic ESILV S04 S6. Sommaire... 1. Introduction... 2

CHAMPION Matthieu Modèles de Marché en Visual Basic ESILV S04 S6. Sommaire... 1. Introduction... 2 Sommaire Sommaire... 1 Introduction... 2 1 Trois différentes techniques de pricing... 3 1.1 Le modèle de Cox Ross Rubinstein... 3 1.2 Le modèle de Black & Scholes... 8 1.3 Méthode de Monte Carlo.... 1

Plus en détail

VALORISATION DES PRODUITS DE CHANGE :

VALORISATION DES PRODUITS DE CHANGE : VALORISATION DES PRODUITS DE CHANGE : TERMES, SWAPS & OPTIONS LIVRE BLANC I 2 Table des Matières Introduction... 3 Les produits non optionnels... 3 La méthode des flux projetés... 3 Les options de change

Plus en détail

Introduction à MATLAB R

Introduction à MATLAB R Introduction à MATLAB R Romain Tavenard 10 septembre 2009 MATLAB R est un environnement de calcul numérique propriétaire orienté vers le calcul matriciel. Il se compose d un langage de programmation, d

Plus en détail

Algorithme. Table des matières

Algorithme. Table des matières 1 Algorithme Table des matières 1 Codage 2 1.1 Système binaire.............................. 2 1.2 La numérotation de position en base décimale............ 2 1.3 La numérotation de position en base binaire..............

Plus en détail

Programmation générique des arbres binaires de recherche AVL et applications

Programmation générique des arbres binaires de recherche AVL et applications Introduction Programmation générique des arbres binaires de recherche AVL et applications Ce TP porte sur l étude d une structure de données appelée arbres binaires de recherche qui sert généralement à

Plus en détail