• Aucun résultat trouvé

3Travailàréaliser 2Spécifications 1Introduction Projet2011-2012

N/A
N/A
Protected

Academic year: 2022

Partager "3Travailàréaliser 2Spécifications 1Introduction Projet2011-2012"

Copied!
2
0
0

Texte intégral

(1)

L2 - Algorithmique et programmation avancée page 1/ 2

Projet 2011-2012

Simulation de robots aspirateurs

1 Introduction

Ce projet a pour objectif la réalisation d’une application en langage Javapermettant de simuler le fonction- nement d’un robot aspirateur chargé de nettoyer une pièce comportant des obstacles.

2 Spécifications

L’application doit simuler le fonctionnement d’un robot chargé de faire le ménage dans une pièce représentée par une grille rectangulaire. Chaque case de la grille peut avoir trois états : sale, propre, et inaccessible.

Les cases inaccessibles sont aussi appelées obstacles. Le robot part du coin inférieur gauche de la grille et se déplace d’une case à la fois, verticalement ou horizontalement. Il ne peut pas aller sur les cases inaccessibles.

Au départ, toutes les cases accessibles sont sales. Lorsque le robot passe sur une case sale, celle-ci devient propre. Une unité de temps correspond au temps requis par le robot pour se déplacer d’une case (qu’elle soit sale ou non). L’utilisateur fixe un temps maximum pour une séance de ménage. Lorsque ce temps est écoulé, le robot s’arrête et l’application doit afficher le nombre de cases propres et, si toutes les cases sont propres, le temps qui a été nécessaire pour nettoyer complètement la pièce.

On distingue trois types de robots qui ont tous en commun de n’avoir initialement accès à aucune information concernant les dimensions de la pièce à nettoyer et les positions des obstacles. Il peuvent par contre connaître les coordonnées de la case sur laquelle ils se trouvent à condition qu’ils mettent à jour eux-même cette information lors de leurs déplacements.

– Un robot de type i n’a aucune mémoire à l’exception de deux variables d’instance représentant les coor- données de sa position actuelle (il n’y a pas de limitation concernant les variables locales des méthodes).

Pour décider de son prochain mouvement, il sait seulement quels sont les déplacements autorisés (parmi les 4 directions possibles) depuis sa position courante.

– Un robot de type ii dispose en plus d’une mémoire de taille limitée, initialement vide. Cette mémoire se présente sous la forme d’une liste dont la taille maximum est fixée par l’utilisateur de l’application. Cette liste doit être mise à jour par le robot. Elle contient les coordonnées de cases déjà visitées par le robot.

– Un robot de type iii dispose d’une mémoire illimitée. Il peut cartographier les parties de la pièce qu’il a déjà explorées.

La configuration de la pièce à nettoyer est stockée dans un fichier texte qui devra respecter le format suivant : chaque ligne représente une ligne de la grille, le caractère 0 désignant les obstacles et le caractère 1 les cases accessibles. Par exemple, une pièce de 4 cases par 7 avec une cloison centrale verticale et une porte en bas sera représentée par :

0001000 0001000 0001000 0000000

3 Travail à réaliser

Vous devez concevoir et développer une application java permettant de simuler une séance de nettoyage effectuée par un robot dans une pièce représentée par une grille décrite dans un fichier texte au format précisé ci-dessus. Cette application devra inclure au moins deux robots de deux types différents parmi les trois présentés plus haut (un seul étant utilisé à la fois).

La conception de l’application devra s’appuyer sur les concepts et principes de la programmation orientée objets tels que l’abstraction (interfaces), la modularité (encapsulation), l’héritage, et le polymorphisme. Nous

(2)

L2 - Algorithmique et programmation avancée page 2/ 2

vous encourageons à essayer de concevoir des algorithmes de contrôle des robots aussi efficaces que possible et à comparer expérimentalement leurs performances. Lors du développement, chaque méthode comportant au moins une boucle devra être validée par des tests unitaires. Vous devrez garder une trace écrite (fournie en annexe du rapport) des données de test et des résultats obtenus. Par ailleurs, l’application devra faire l’objet de tests fonctionnels et d’une évaluation expérimentale des performances de vos robots sur différentes grilles que vous devrez proposer.

Autant que possible, vous développerez une interface graphique permettant de visualiser le déroulement d’une séance de nettoyage. Cette interface se révélera précieuse lors des tests fonctionnels de l’application.

Vous devrez rendre à mi-parcours (à une date qui vous sera précisée ultérieurement) un rapport intermédiaire qui devra préciser l’état d’avancement de votre travail. Ce document devra donner une vue synthétique de la l’architecture de votre application : quelles sont les classes utilisées, quels sont leurs rôles, comment les instances de ces classes échangent t-elles des informations, quelles sont les structures de données utilisées ? Il devra également préciser l’état d’avancement du développement : quelles sont les classes et méthodes testées, celles qui sont en cours de développement, et celles dont la réalisation n’a pas encore commencé ?

Un rapport définitif devra être livré avant les vacances de Noël. Il fournira une présentation synthétique de l’architecture de l’application, des structures de données utilisées, et décrira les principaux algorithmes, notamment pour le contrôle des robots. Vous devrez aussi présenter les tests fonctionnels et les évaluations expérimentales réalisés, ainsi que leurs résultats. Le détail des tests unitaires sera donné en annexe, ainsi que le code source. Ce dernier devra être commenté et présenté de manière lisible. Les modalités de livraison de ce rapport vous seront précisées ultérieurement.

4 Concours de robots

En marge du projet, nous vous proposons un concours ayant pour but de désigner les meilleurs robots dans chacune des catégories i,ii etiii présentées plus haut. Les robots seront évaluées sur la base de grilles qui ne seront dévoilées qu’au début de la compétition. La participation à ce concours est facultative.

5 Modalités d’évaluation

Les critères suivants seront pris en compte pour l’évaluation de votre travail :

– Architecture de votre application : modularité, évolutivité, utilisation pertinente des concepts de la pro- grammation orientée objets, choix judicieux des structures de données.

– Démarche de validation expérimentale : pertinence et exhaustivité des tests unitaires et des tests fonction- nels, qualité de l’évaluation expérimentale de l’efficacité de vos robots.

– Contenu et présentation des documents livrés, qualité de votre prestation lors de la présentation de votre travail.

– Efficacité, pertinence et originalité des algorithmes proposés, notamment pour le contrôle des robots.

– Fonctionnement de l’application et clarté du code source.

Nous espérons que ce projet vous passionnera, mais attention à ne pas vous tromper d’objectif et à bien répondre à l’ensemble des critères d’évaluation. Si vous négligez les autres aspects du projet, vous pouvez avoir une mauvaise note même si vous gagnez le concours des robots dans la catégorie iii!

Références

Documents relatifs

Les seuls mouvements autorisés consistent à faire pivoter le dé le long d'une arête vers la case située soit immédiatement au-dessus soit immédiatement à droite de la

En effet, on a vu que le rang est invariable

Si une matrice A est diagonalisable, alors lorsqu’on la diagonalise, on obtient une matrice diagonale dont les coefficients diagonaux sont les valeurs propres de A...

Algorithmes pour le calcul de toutes les valeurs propres d’une matrice M´ ethode de la puissance it´ er´ ee... G´ en´ eralit´ es, outils matriciels Matrices

Compte tenu du résultat obtenu à la première question, quel calcul faut-il faire pour savoir si B est diagonali- sable.. Effectuer ce calcul, et déterminer si B est diagonalisable

Huvent, Toutes les mathématiques – Cours, exercices corrigés – MPSI, PCSI, PTSI, TSI, Ellipses, 2004..

Dans toute la suite, E est de dimension nie A) Familles de vecteurs propres Proposition :. Soit E un espace K-

Nous allons voir un critère simple (mais pas le plus général) pour obtenir une matrice P −1 AP qui est diagonale, les coefficients diagonaux étant les valeurs propres de