• Aucun résultat trouvé

Partiel UE Projet 2i013 - Groupe 5

N/A
N/A
Protected

Academic year: 2022

Partager "Partiel UE Projet 2i013 - Groupe 5"

Copied!
3
0
0

Texte intégral

(1)

Module 2i013 – Licence d’Informatique ann´ee 2015–2016

Partiel UE Projet 2i013 - Groupe 5

— Tous les exercices sont ind´ependants. Dans la plupart des exercices, la derni`ere question est plus dure que les autres, ne vous laissez pas happer par ces pi`eges.

— T´el´ephones portables ´eteints et rang´es

— Les classes de base du projet (tronc commun : Vecteur, Voiture, VoitureImpl, Commande, Circuit...) sont disponibles, vous ne vous occupez pas des import : vous les utilisez directement.

Exercice 1(≈5pts) – Fonctionnement de JAVA, r´ef´erences, instances Q 1.1staticou pas

Parmi les attributs et m´ethodes suivants (aux noms raisonnablement explicites), lesquels doivent ˆetre static ou pas ? Proposer une classe dans laquelle mettre ces morceaux de code.

(1)Vecteur addition(Vecteur v) (2)Vecteur addition(Vecteur v1, Vecteur v2) (3)double piSurQuatre (4)double getCommandeRotation()

(5)double getVMax() (6)Terrain terrainFromColor(Color c)

(7)double distanceSecuFreinage (8)boolean isCibleAtteinte(Vecteur cible, double rayon) Q 1.2final, type de base, objets.

Rappel :finalempˆeche la r´eaffectation d’un attribut apr`es son initialisation.

1 // d a n s une c l a s s e q u e l c o n q u e C

2 p r i v a t e f i n a l double d ;

3 p r i v a t e f i n a l V e c t e u r v ;

4

5 // C o n s t r u c t e u r

6 p u b l i c C(double d , V e c t e u r v ){

7 t h i s. d = d ; t h i s. v = v ;

8 }

1 // m´ethode

2 p u b l i c void methode ( ){

3 d = 2 ;

4 double e = d ; e = 3 ;

5 v = new V e c t e u r ( 2 , 2 ) ;

6 v . move ( 1 , 1 ) ;// m´ethode e x i s t a n t e

7 V e c t e u r v2 = v ; v2 . move ( 1 , 1 ) ;

8 }

Dans la colonne de droite :

— Quelle(s) ligne(s) pose(nt) des probl`emes de compilation (par rapport aux d´eclarationsfinal) ?

— Parmi les lignes correctes du point de vue syntaxique, lesquelles sont dangereuses ? Q 1.3Prot´eg´e ou pas

Cas 1 :

ClasseVecteurdont les attributsx,ysontprivate

1 V e c t e u r v1 =new V e c t e u r ( 1 , 1 ) ;

2 V e c t e u r v2 = v1 ;

3 U n e C l a s s e Q u e l c o n q u e . uneMethode ( v2 ) ;

4 V e c t e u r v3 = v2 ;

5 v2 =new V e c t e u r ( 2 , 2 ) ;

6 U n e C l a s s e Q u e l c o n q u e . uneMethode ( v3 ) ;

Cas 2 :

Classe Vecteur dont les attributs x,y sont public final

1 V e c t e u r v1 =new V e c t e u r ( 1 , 1 ) ;

2 V e c t e u r v2 = v1 ;

3 U n e C l a s s e Q u e l c o n q u e . uneMethode ( v2 ) ;

4 double x ;

5 x = v1 . x ;

6 x = 2 ;

Dans les deux cas de figure, est-il possible que v1 soit modifi´e par rapport `a sa d´eclaration initiale (l3 et/ou l6) ? Dans l’affirmative, donner un morceau de code deuneMethodeeffectuant la modification.

Q 1.4Remplissage de tableau et r´ef´erences

Dans un main, nous avons besoin de remplir un tableau de 100 commandes... Afin de faciliter la lecture, ce remplissage est effectu´e dans la classeTools.

Cas 1 :

1 // main

2 A r r a y L i s t<V e c t e u r> l i = new A r r a y L i s t<V e c t e u r>( ) ;

3 T o o l s . r e m p l i r ( l i ) ;

4

5 // c l a s s e T o o l s

6 p u b l i c s t a t i c void r e m p l i r ( A r r a y L i s t<V e c t e u r> l i ){

7 f o r(i n t i = 0 ; i<100; i ++)

8 l i . add (new Commande ( 1 , 0 ) ) ;

9 }

Cas 2 :

1 // main

2 A r r a y L i s t<V e c t e u r> l i = n u l l;

3 T o o l s . r e m p l i r ( l i ) ;

4

5 // c l a s s e T o o l s

6 p u b l i c s t a t i c void r e m p l i r ( A r r a y L i s t<V e c t e u r> l i ){

7 l i = new A r r a y L i s t<V e c t e u r>( ) ;

8 f o r(i n t i = 0 ; i<100; i ++)

9 l i . add (new Commande ( 1 , 0 ) ) ;

10 }

Les deux solutions sont-elles ´equivalentes ? Dans la n´egative, laquelle vous semble la plus int´eressante ? Justifier bri`evement.

(2)

Module 2i013 – Licence d’Informatique page 2

Exercice 2(6 pts)– Cibler un point

Dans cet exercice, nous allons construire une strat´egie visant un point donn´e (cette cible est donn´ee `a la construction). Vous r´efl´echirez `a la signature de la classe, aux attributs n´ecessaires, au constructeur, puis vous respecterez les sp´ecifications des questions suivantes.

Note :¸ca vaut le coup de lire toutes les questions avant de donner les r´eponses.

Q 2.1Donner la signature de la classe, d´eclarer les attributs et le constructeur.

Q 2.2Donner le code de la m´ethodeboolean isVisible(Vecteur position, Vecteur cible, Circuit c), qui retournetrue si la cible est visible (ie, directement accessible en restant sur des casesrunnables) et false sinon. Vous d´eterminerez si la m´ethode doit ˆetrepublicou pas,staticou pas.

Rappel de l’algorithme :

— D´eterminer la direction (position, cible) par soustraction.

— Construire un vecteur de norme 0.1

— Tant que nous ne sommes pas dans un rayon de 0.1 autour de la cible :

— Avancer par pas successifs en v´erifiant l’´etat du terrain

— Si le terrain n’est pasrunnable, retournerfalse

— retourner true

Q 2.3Donner le code de la m´ethodeCommande getCommande()qui r´epond aux sp´ecifications suivantes :

— Si la cible n’est pas visible, renvoyernull

— Si la cible est derri`ere la voiture, renvoyernull

— Si la cible est visible et se trouve dans un intervalle ±π/6, donner la commande pour aller vers la cible en acc´el´erant au maximum

— Si la cible est plus ´eloign´ee (angulairement), freiner (sans tomber en-dessous d’une vitesse de 0.2) Note : vous disposez de la classeVecteurau complet, incluant une m´ethode de calcul d’angle entre vecteurs double angle(Vecteur v).

Q 2.4Strat´egie compl`ete.

La strat´egie pr´ec´edente ne fonctionne que dans certains cas de figure... Nous voulons une strat´egiecompl`ete, qui retourne toujours uneCommandenonnull.

Q 2.4.1Proposer une architecture pour ´etendre cette classe (par h´eritage ou d´ecoration).

[nom & d´eclaration de la classe, attributs]

Q 2.4.2Donner le code de cette classe.

Exercice 3(4 pts)– Modification de circuits

Q 3.1Nous avons vu dans le dernier TME que certains circuits posent probl`eme... Un mani`ere de r´esoudre le probl`eme consiste `aboucher certains trous, c’est `a dire, modifier le terrain existant en rajoutant de l’herbe pour simplifier le travail de Dijkstra et des futures strat´egies.

Nous faisons l’hypoth`ese que nous disposons de l’interface de baseCircuit, qui permet d’acc´eder `a une case, mais pas `a la matrice compl`ete de Terrain. Comment faire pour proposer un circuit modifi´e ? - Il existe 2 principales approches pour r´ealiser cel`a-

Q 3.2 Nous souhaitons en particulier rendre compl`etement herbeux les carr´es 2x2 dont la diagonale est non- runnable... Proposer une impl´ementation (= du code) permettant de r´ealiser cela.

(3)

Module 2i013 – Licence d’Informatique page 3

Exercice 4(5 pts)– Strat´egie param´etrique & optimisation

Soit une strat´egie param´etrique StrategyParam prenant en argument de cr´eation : une voiture, un radar Dijkstra, un radar de proximit´e et les pa- ram`etres suivants :

— distance limite des obstacles dans la direction actuelle,

— distance limite des obstacles dans la direction souhait´ee,

— angle limite au-del`a duquel il faut freiner,

— vitesse limite au-dessous de laquelle on acc´el`ere syst´ematiquement 1. Nous faisons l’hypoth`ese que cette classeexiste

2. Nous disposons d’un jeu de param`etres par d´efautp?et d’un vecteurδ indiquant un pas de modification raisonnable pour chaque param`etre.

3. Nous disposons d’une classe SimulationBis, construite avec une voi- ture, un circuit et une strat´egie, dont la m´ethodeplay()retourne :

— le nombre de coup si la course a r´eussi,

— 100000 + le score Dijkstra de la case o`u la voiture est sortie de la route si la course `a ´echou´ee.

Position Dire

ction

Meilleure direction

Q 4.1 Donner le code de la classe OptimisationGradientqui, `a partir des ´el´ements n´ecessaires, d’un jeu de param`etres par d´efautpdet d’un pas d’exploration associ´e `a chaque param`etreδ, permet d’optimiser la strat´egie param´etrique en utilisant l’algorithme suivant :

Init. Param`etres courantsp?= param`etres par d´efaut 1. Calculer le scores? pour la course par d´efaut 2. Pendant 1000 it´erations :

(a) Tirer au hasard un param`etrepi

(b) Construire les strat´egies :{p0, . . . , pi−δi, pn},{p0, . . . , pii, pn}, (c) Les ´evaluer (= courir les deux courses) :s1, s2

(d) Si l’une des courses est meilleure, sauver le jeu de param`etre correspondant dansp? 3. Afficher les param`etres optimauxp?

Q 4.2Nous avons un probl`eme...

Le code pr´ec´edent n’est pas g´en´erique du tout. On voudrait s’en servir pour optimiser les param`etres d’une strat´egie composite bas- culant entre une strat´egie`a fond et une strat´egieprudente en fonc- tion de l’avancement de la course. Pour faire simple, cette strat´egie va `a fond tout le temps et bascule en mode prudent `a partir de certain score Dijkstra (ligne sur l’illustration ci-contre) et pour une dur´ee donn´ee (longueur de la fl`eche sur l’illustration ci-contre). Ces seuils doivent ˆetre optimis´es, et ¸ca ne marche pas en l’´etat ! ! ! Le param´etrage de cette strat´egie requiertnz×2 valeurs (ie,nzcouples seuil,longueur).

Proposer une architecture (entre 2 et 6 classes/interfaces) permet- tant de rendre le code d’optimisation g´en´erique, c’est `a dire adapt´e

`

a n’importe quelle strat´egie `a base de param`etres.

Notes : pas de code complet, juste des classes, des attributs et quelques signatures pour les m´ethodes cl´es. Eventuellement des ex- plications rapides si besoin. Vous pourrez r´efl´echir `a l’introduction deStrategyFactory.

Ligne de score Dijkstra 42614

Références

Documents relatifs

marge brute – remise – prix d’achat net – prix de vente hors taxe – coût d’achat prix de vente toute taxe comprise – prix d’achat net – frais d’achat – prix

En traction, torsion ou flexion il est possible de résoudre un système qui est hyperstatique et d’en déterminer sa déformation, ou la contrainte. Pour cela la même méthode pour

 A chaque type et chaque degré est affecté un nombre de points La méthode permet de calculer le poids du projet en points de

Mise en valeur du travail de création : Ronsard au gré des poèmes associe le mythe de Méduse à un autre mythe, complète et dépasse le mythe en attribuant à

Quel type de procédé industriel permet d'observer cette réaction ? Nommer le réactif. Ecrire sa formule semi-développée. Ecrire le motif d'un polymère créé à partir de ce

Les réactifs sont les ions Ag + et le cuivre métallique car les courbes correspondantes ont un coefficient directeur négatif.. Les produits sont le métal Ag et les ions Cu 2+ car

* Détermination de la graduation 100 : on plonge le réservoir du thermomètre dans de l’eau en ébullition sous la pression atmosphérique normale.. Le liquide dans le capillaire

Un régulateur est dit à action proportionnelle (P) lorsque la valeur de sa tension de sortie est proportionnelle à l’erreur détectée .Quand l’erreur a été corrigée,