Intelligence Artificielle AI - Prolog : TP5 6 PROLOG (PROgrammation LOGique)
Télécharger PDFTP Prolog : Système de Diagnostic pour une Ligne de Découpe de Cuir
Objectif du TP
Modéliser un système de diagnostic pour résoudre les problèmes d’une ligne de découpe de cuir en utilisant Prolog.
Contexte et Fonctionnement Actuel
À l’atelier de découpe de cuir, un ouvrier fait appel à un expert lorsqu’un problème survient. Voici les principaux cas :
- Si l’installation ne démarre pas, la courroie ne tourne pas. Il faut alors réparer rapidement.
- Les composants ont des rôles précis :
- La courroie, entraînée par le moteur et la boîte à vitesses, assure la découpe.
- L’interrupteur, le secteur et le transformateur interviennent dans l’alimentation en énergie.
- Le bouton d’arrêt d’urgence, le relais et la batterie garantissent la sécurité.
- Un dysfonctionnement peut résulter de :
- Un composant défaillant (ex. : batterie morte ou déchargée).
- Une dépendance à une autre fonction défaillante (ex. : absence d’alimentation empêche la découpe).
Problèmes et Solutions Typiques
- Si la batterie ne fournit pas de tension (nulle ou inférieure à 24V), elle doit être changée ou rechargée.
- Quand le relais n’est pas alimenté, le transformateur et le moteur ne le sont pas non plus.
- Si le secteur fonctionne et qu’aucune urgence n’est déclenchée, mais qu’il n’y a pas de courant au primaire du transformateur, le relais est défectueux.
- Un moteur grillé ne tourne pas malgré une tension au secondaire du transformateur.
- Un transformateur défectueux ne fournit pas de tension au secondaire, alors qu’il en reçoit au primaire.
- Si le moteur tourne mais pas la courroie, il faut débloquer la tringlerie dans la boîte à vitesses.
Amélioration du Système : Chaînage Mixte
Pour optimiser le diagnostic, on distingue deux types de faits :
- Les faits terminaux : conclusions finales (ex. :
transformateur_mort). - Les faits observables : informations recueillies par l’utilisateur (ex. :
relais_non_alimente).
Moteur en Chaînage Avant
Ce moteur doit fonctionner en chaînage avant (ordre zéro) avec les étapes suivantes :
- Base de règles : Définir un prédicat
regle/1sous forme de listes de prémisses et conclusions. - Initialisation des faits : Utiliser
assertapour ajouter des faits positifs (vrai(Fait)) ou négatifs (faux(Fait)). - Exécution et traçage : Créer un prédicat qui applique les règles et affiche les conclusions obtenues.
Moteur en Chaînage Arrière
Ce moteur doit fonctionner en chaînage arrière (ordre zéro) avec la même structure de base de règles et de faits.
Amélioration : Chaînage Mixte ou Autre
Proposer une amélioration, comme un chaînage mixte :
- Définir les prédicats
terminal(F)etobservable(F)pour identifier les faits. - Si les symptômes ne permettent pas de conclure, poser des questions à l’utilisateur sur les faits observables manquants.
- Éviter de répéter les mêmes questions et relancer le moteur après chaque réponse.
- Si aucune conclusion terminale n’est atteinte, répéter le processus.
Exemple d’Exécution
Pour un chaînage mixte, l’exécution pourrait ressembler à :
- L’utilisateur fournit des symptômes initiaux (ex. :
non(relais_non_alimente),secondaire_transformateur_non_alimente). - Le système pose des questions (ex. :
tension_sous_24,primaire_transformateur_non_alimente). - Après réponse, il conclut (ex. :
transformateur_mort) et propose une action (ex. :Changer le transformateur).
Question Subsidiaire (Bonus)
Si le système ne parvient pas à résoudre le problème, permettre à l’expert d’ajouter une nouvelle règle après diagnostic.
FAQ
1. Qu’est-ce qu’un fait terminal en Prolog ?
Un fait terminal est une conclusion finale qui ne dépend d’aucune autre prémisse dans la base de règles.
2. Comment éviter les questions répétitives dans un chaînage mixte ?
En marquant les questions déjà posées et en ne les réaffichant que si la réponse précédente n’a pas permis de conclure.
3. À quoi sert le chaînage avant dans ce contexte ?
Il permet d’appliquer les règles de manière systématique pour déduire les conclusions à partir des faits observés, sans nécessiter de questions supplémentaires.