Outils pour utilisateurs

Outils du site


ia:prolog:intro

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édentesRévision précédente
Prochaine révision
Révision précédente
ia:prolog:intro [2017/11/02 13:46] – [Problème] brunoia:prolog:intro [2018/11/09 11:50] (Version actuelle) – [Prise en main] bruno
Ligne 2: Ligne 2:
 ===== Supports de cour ===== ===== Supports de cour =====
 {{ :ia:prolog:cours1-ia-intro-.pdf |Introduction à l'IA et à Prolog}} {{ :ia:prolog:cours1-ia-intro-.pdf |Introduction à l'IA et à Prolog}}
 +
 +[[https://perso.liris.cnrs.fr/christine.solnon/publications/poly.pdf|Un très bon cours introductif de Christine Solnon]] qui reprend ce qui a été dit en cours. Lire les chapitres 1, 2 et 3 (et le reste si vous avez envie bien sûr!!!).
  
 ===== Travaux pratique en Prolog===== ===== Travaux pratique en Prolog=====
Ligne 9: Ligne 11:
 ==== Prise en main ==== ==== Prise en main ====
 {{ :ia:prolog:ia-robotique.tar.gz | TP découverte de Prolog}} {{ :ia:prolog:ia-robotique.tar.gz | TP découverte de Prolog}}
 +
 +Au programme: parties 1, 2 et 3.
 ==== Problème ==== ==== Problème ====
 Nous allons traiter un cas concret de planification de tâches appliqué à la robotique. Nous allons traiter un cas concret de planification de tâches appliqué à la robotique.
  
-=== Énoncé  === +[[ia:prolog:tpRobotique| Planification de tâches robotisées en prolog]]
-Une école dispense des cours dans des salles informatiques équipées d'ordinateurs. +
- +
-L'objectif est qu'avant chaque cours, tous les ordinateurs soient allumés et qu'une bouteille d'eau soit disponible pour l'enseignant. +
- +
-L'école dispose d'un robot capable d'allumer un ordinateur s'il est éteint, et d'apporter une bouteille d'eau dans une salle. +
- +
-Les créneaux de cours sont les suivants: +
- +
-  * 7h00-8h00libre (pas de cours) +
-  * 8h00-10h00; +
-  * 10h-10h30: pause (toutes les salles sont inoccupées); +
-  * 10h30-12h30; +
-  * 12h30-13h30: pause +
-  * 13h30-15h30; +
-  * 15h30:16h00: pause +
-  * 16h00-18h00; +
-  * 18h00-19h00: libre (pas de cours) +
- +
-L'objectif est de fournir un planning au robot permettant d'allumer avant chaque cours les machines et de fournir une bouteille d'eau. +
- +
-=== Mise en pratique === +
-Pour le moment, nous commencerons par considérer: +
-  - que le robot a besoin de 30 minutes pour s'occuper d'une salle; +
-  - que l'école dispose uniquement de 4 salles informatiques. +
- +
-Nous complexifierons les données en fin de TP. +
- +
-== 1) Description d'une solution == +
-  - Décrivez en prolog une structure permettant de représenter une solution. +
- +
- +
-<spoiler|Structure d'une solution> +
-Il y a plusieurs solutions bien entendu, voici celle que nous utiliserons pour le moment: +
- +
-<code prolog> +
-plan([ +
-    cr([_,_,_,_,_],r1), +
-    cr([_,_,_,_,_],r2), +
-    cr([_,_,_,_,_],r3), +
-    cr([_,_,_,_,_],r4), +
-    cr([_,_,_,_,_],r5), +
-    cr([_,_,_,_,_],r6), +
-    cr([_,_,_,_,_],r7), +
-    cr([_,_,_,_,_],r8), +
-    cr([_,_,_,_,_],r9), +
-    cr([_,_,_,_,_],r10), +
-    cr([_,_,_,_,_],r11), +
-    cr([_,_,_,_,_],r12), +
-    cr([_,_,_,_,_],r13), +
-    cr([_,_,_,_,_],r14), +
-    cr([_,_,_,_,_],r15), +
-    cr([_,_,_,_,_],r16), +
-    cr([_,_,_,_,_],r17), +
-    cr([_,_,_,_,_],r18), +
-    cr([_,_,_,_,_],r19), +
-    cr([_,_,_,_,_],r20), +
-    cr([_,_,_,_,_],r21), +
-    cr([_,_,_,_,_],r22), +
-    cr([_,_,_,_,_],r23), +
-    cr([_,_,_,_,_],r24) +
-    ]). +
-</code> +
-  +
-Questions auxquelles vous devez pouvoir répondre: +
-  - pourquoi la liste de la solution comprend 24 lignes ? +
-  - pourquoi dans cr([liste],valeur), //liste// a une taille de 5 et non de 4 (pour 4 salles)? +
-  - à quoi servent les valeurs de variable r1, r2,...,r24?  +
- +
-</spoiler> +
-== Écriture du but et affichage == +
-  - Créez un but avec cette solution (que nous appellerons //but//). +
-  - Affichez la solution (sans contrainte pour le moment). +
- +
-<spoiler|Résultat attendu> +
-<code prolog> +
-| ?- but. +
-[cr([_68,_70,_72,_74,_76],r1),cr([_81,_83,_85,_87,_89],r2),cr([_94,_96,_98,_100,_102],r3),cr([_107,_109,_111,_113,_115],r4),cr([_120,_122,_124,_126,_128],r5),cr([_133,_135,_137,_139,_141],r6),cr([_146,_148,_150,_152,_154],r7),cr([_159,_161,_163,_165,_167],r8),cr([_172,_174,_176,_178,_180],r9),cr([_185,_187,_189,_191,_193],r10),cr([_198,_200,_202,_204,_206],r11),cr([_211,_213,_215,_217,_219],r12),cr([_224,_226,_228,_230,_232],r13),cr([_237,_239,_241,_243,_245],r14),cr([_250,_252,_254,_256,_258],r15),cr([_263,_265,_267,_269,_271],r16),cr([_276,_278,_280,_282,_284],r17),cr([_289,_291,_293,_295,_297],r18),cr([_302,_304,_306,_308,_310],r19),cr([_315,_317,_319,_321,_323],r20),cr([_328,_330,_332,_334,_336],r21),cr([_341,_343,_345,_347,_349],r22),cr([_354,_356,_358,_360,_362],r23),cr([_367,_369,_371,_373,_375],r24)] +
- +
-yes +
-</code> +
-<spoiler| Code du but et affichage> +
-<code prolog> +
-but:-plan(P), +
-    write(P). +
-</code> +
-</spoiler> +
-</spoiler> +
  
ia/prolog/intro.1509630365.txt.gz · Dernière modification : 2017/11/02 13:46 de bruno