restricted:tc-a:tp3:travaux_pratiques_premiere_seance_2017

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
restricted:tc-a:tp3:travaux_pratiques_premiere_seance_2017 [2017/10/06 14:36] pprearestricted:tc-a:tp3:travaux_pratiques_premiere_seance_2017 [2017/10/06 16:19] (Version actuelle) pprea
Ligne 1: Ligne 1:
 +====== TP3 ======
  
 +Le but de ce TP est de résoudre des problèmes d'[[https://fr.wikipedia.org/wiki/PERT|ordonnancement]].
 +Pour cela, on résoudra & implémentera l'exercice 2 du TD3.
 +
 +
 + 
 +<note>
 +Le fait de tester toutes vos créations n'est plus explicitement demandé car cela doit **toujours** être fait.
 +</note>
 +
 +
 +La donnée de départ n'est pas un graphe, mais le "tableau des contraintes" tel qu'il est donné en TD. Concrètement :
 +<code python>
 +OBTENTION = "Obtention Permis"
 +ADDUCTION = "Adduction Eau EdF"
 +MURS = "Fondations + Murs"
 +CHARPENTE = "Charpente"
 +TOITURE = "Toiture"
 +PLAFOND = "Plafond"
 +CLOISONS = "Cloisons"
 +PLOMBERIE = "Plomberie"
 +ELECTRICITE = "Electricite"
 +PLATRE = "Platre"
 +
 +DUREE = "duree"
 +PREDECESSEUR = "predecesseurs"
 +
 +CONTRAINTES = {
 +    OBTENTION: {DUREE: 6, PREDECESSEUR: []},
 +    ADDUCTION: {DUREE: 3, PREDECESSEUR: []},
 +    MURS: {DUREE: 5, PREDECESSEUR: [OBTENTION, ADDUCTION]},
 +    CHARPENTE: {DUREE: 2, PREDECESSEUR: [MURS]},
 +    TOITURE: {DUREE: 2, PREDECESSEUR: [CHARPENTE]},
 +    PLAFOND: {DUREE: 2, PREDECESSEUR: [TOITURE]},
 +    CLOISONS: {DUREE: 3, PREDECESSEUR: [PLAFOND]},
 +    PLOMBERIE: {DUREE: 3, PREDECESSEUR: [PLAFOND, CLOISONS]},
 +    ELECTRICITE: {DUREE: 2, PREDECESSEUR: [PLAFOND, CLOISONS]},
 +    PLATRE: {DUREE: 3, PREDECESSEUR: [PLAFOND, CLOISONS, PLOMBERIE, ELECTRICITE]}
 +    }
 +</code>
 +
 +On recopiera donc le code ci-dessus dans un fichier.
 +
 +<note>
 +Les variables globales (CHARPENTE = "Charpente", ...) permettent d'utiliser la complétion automatique de pycharm (celle-ci ne marche pas sur les chaines de caractères).
 +</note>
 +
 +Dans un autre fichier, on écrira un programme qui, à partir de ces données, construira un graphe qui sera implémenté sous la forme d'un [[https://informatique.centrale-marseille.fr/tutos/post/python-bases.html#les-dictionnaires|dictionnaire]].\\
 +Les clés du dictionnaire seront (tous) les sommets, &, à chaque clé K sera associé un (sous-)dictionnaire. Les clés en seront (tous) les sommets. À chaque clé K' sera associé un nombre :
 +    * 0 si K = K'
 +    * la longueur de l'arc K —> K' si celui-ci existe
 +    * -1 sinon.
 +
 +<note>
 +On fera attention à ne pas oublier les sommets "alpha" (qui est relié aux sommets sans prédécesseurs) & "omega" (à qui sont reliés les sommets sans successeurs).
 +</note>
 +
 +À partir de ce graphe, on calculera les dates au plus tôt & dates au plus tard de chaque tâche, & on déterminera les tâches critiques.