Géométrie et système expert
From OFSET Community Wiki
Contents |
Introduction
Cette page regroupe des tentatives de réaliser le couplage outil de construction de figures interactives et un système expert faisant des déductions sur la figure construite.
Les faits transmis au système expert sont la description des objets géométriques construits. et constituent la base de donnée.
Des règles décrivent les déductions possible à partir de ces faits.
Le moteur d'inférences du système expert essaie d'appliquer les règles, si les conditions d'une règles sont toutes satisfaites, un nouveau fait est déduit et ajouté à la base de donnée s'il n'y est pas déjà.
Différentes pistes.
Système experts disponibles
Squeak Prolog
L'outil le plus simple pour créer un système expert est le langage Prolog.
Squeak prolog est un prolog intégré à Smalltak. Malheureusement il ne fonctionne pas au delà de la version 3.6 de Squeak (une mise à jour est promise pour bientôt ???).
[18 6 2008] Bonne nouvelle Squeak Prolog fonctionne à nouveau.
Grâce à Stéphane Rollandin qui a fait revivre Squeak Prolog, il a même développé un nouveau browser spécifique qui permet d'essayer les règles d'une façon conviviale.
La nouvelle versions est sur SqueakMap, l'évolution est rapide ces jours. Elle fonctionne avec les versions Squeak 3.9 et 3.10. Etoys 3 et 4.
Le fichier .change qui accompagne l'image doit e̊tre autorisée en écriture et associé au fichier .image pour pouvoir afficher la syntaxe prolog.Les versions plugin n'ont pas de fichier .change dans les réglages par défaut et ne conviennent pas.
[12.12.2011] Il y a une version pour Squeak 4. Mais pas pour Pharo.
Shelog
Shelog est un prolog écrit en scheme, il y a un package lispkit contenant sheme et shelog pour squeak. Le problème est que si cela fonctionne, la lenteur le rend inutilisable pour une utilisation autre que de démonstration et la syntaxe est difficile à utiliser.
Passer les données à un prolog extérieur à Squeak.
Autre solution, extraire les données et les passer à un prolog hors de squeak, c'est ce que l'on peut faire avec le programme open source swiprolog, la syntaxe standard (dite de Edimbourg) permet d'utiliser les faits dans différents prolog. L'avantage de cette solution pour les connaisseurs de Prolog est d'utiliser la syntaxe standard de Prolog.
Système expert en SmallTalk.
Autre solution, écrire un système expert directement en Smalltalk. le traitement peut donc se faire tout en Squeak... Et le maintenir compatible :=-).
Ce système présente l'intérêt d'être facile à utiliser par des élèves.
Un système semblable dans une version en Logo a été expérimenté il y a quelques années avec des élèves de 13 14 ans.
voir: Système Expert.
Solution avec swi-prolog
Un projet Etoys permet d'afficher les affirmations décrivant la figure dans un texte qui permet de les copier et de les introduire en suite dans Swi prolog.
Deux exemples sont donnés ci-dessous l'un à partir de drGeo,l'autre à partir de V-Geom.
A partir de DrGeo Sqeueak
Extraction des faits du programme de constructions
Un petit projet d'interface extrait les faits et les place dans un texte qui peut être collé et copié ailleurs.
- telecharger le projet(Ce projet ne fonctionne que dans une image contenant DrGreo).
A partir de Etoys 4, DrgGeo est inclu et doit être lancé depuis le catalogue des objets.
Traitement dans SwiProlog
Affirmation des faits.
1 ?- faits. [drGeo, DrGFreePointItem, A] [drGeo, DrGFreePointItem, B] [drGeo, DrGFreePointItem, C] [drGeo, DrGFreePointItem, D] [drGeo, DrGSegment2PointsItem, [AB], A, B] [drGeo, DrGSegment2PointsItem, [BC], B, C] [drGeo, DrGSegment2PointsItem, [CD], C, D] [drGeo, DrGSegment2PointsItem, [DA], D, A] [drGeo, DrGMiddlePointSegmentItem, I, [AB]] [drGeo, DrGMiddlePointSegmentItem, J, [BC]] [drGeo, DrGMiddlePointSegmentItem, K, [CD]] [drGeo, DrGMiddlePointSegmentItem, L, [DA]] [drGeo, DrGSegment2PointsItem, [IJ], I, J] [drGeo, DrGSegment2PointsItem, [JK], J, K] [drGeo, DrGSegment2PointsItem, [KL], K, L] [drGeo, DrGSegment2PointsItem, [LI], L, I] Fin des faits Yes
Déductions.
2 ?- deduis. Deductions [interfaceDrGeo, point, A] [interfaceDrGeo, point, B] [interfaceDrGeo, point, C] [interfaceDrGeo, point, D] [interfaceDrGeo, segment, [AB], A, B] [interfaceDrGeo, segment, [BC], B, C] [interfaceDrGeo, segment, [CD], C, D] [interfaceDrGeo, segment, [DA], D, A] [interfaceDrGeo, segment, [IJ], I, J] [interfaceDrGeo, segment, [JK], J, K] [interfaceDrGeo, segment, [KL], K, L] [interfaceDrGeo, segment, [LI], L, I] [interfaceDrGeo, milieu, I, A, B] [interfaceDrGeo, milieu, J, B, C] [paralMil3, paral, segment(A, C), segment(I, J)] [paralseg, segment(A, C)] [paralseg, segment(I, J)] [interfaceDrGeo, milieu, K, C, D] [paralMil3, paral, segment(B, D), segment(J, K)] [paralseg, segment(B, D)] [paralseg, segment(J, K)] [interfaceDrGeo, milieu, L, D, A] [paralMil3, paral, segment(B, D), segment(I, L)] [paralTrans4, paral, segment(J, K), segment(I, L)] [paralMil3, paral, segment(A, C), segment(K, L)] [paralTrans4, paral, segment(I, J), segment(K, L)] [paralseg, segment(I, L)] [paralseg, segment(K, L)] [parallelo2, parallelogramme, J, I, L, K] Fin des déductions Yes
A partir de v-geom
Versions actuelles de v-geom
English version:
Tout objets de v-geom a un script affichant le fait le décrivant.La base de données est obtenue en donnant l'odre à tous les objets de la figure d'exécuter le script.
Extraction des faits du programme de constructions
Liste des faits extraits de la figure:
affirme([v-geom,point, a]). affirme([v-geom,point, b]). affirme([v-geom,point, c]). affirme([v-geom,point, d]). affirme([v-geom,milieu,i,a,b]). affirme([v-geom,milieu,j,b,c]). affirme([v-geom,milieu,k,c,d]). affirme([v-geom,milieu,l,d,a]).
Traitement dans SwiProlog
Déductions produites par SwiProlog.
Deductions [interfaceV-geom, milieu, i, a, b] [interfaceV-geom, milieu, j, b, c] [interfaceV-geom, milieu, k, c, d] [interfaceV-geom, milieu, l, d, a] [paralMil3, paral, segment(b, d), segment(i, l)] [paralMil3, paral, segment(a, c), segment(i, j)] [paralMil3, paral, segment(b, d), segment(j, k)] [paralTrans4, paral, segment(i, l), segment(j, k)] [paralMil3, paral, segment(a, c), segment(k, l)] [paralTrans4, paral, segment(i, j), segment(k, l)] [paralseg, segment(b, d)] [paralseg, segment(a, c)]e [paralseg, segment(i, l)] [paralseg, segment(i, j)] [paralseg, segment(j, k)] [paralseg, segment(k, l)] [parallelo, parallelogramme, i, j, k, l] Fin des déductions Yes
Utilisation d'un Script SmallTalk dans DrGeo
Pour DrGeo la possibilité d'inclure des scripts en smalltalk a permis d'inclure un script affichant la description de la figure.
Avec DrGeo version Pharo, on peut sauver les figures au format .fgeo. Le script est sauvé avec la figure.
Pour la version Etoys, on sauve le projet.
Il existe de tels scripts pour la nouvelle version de DrGeo en Pharo associée à une figure et dans un projet pour DrGeo inclus dans Etoys. Ceci pour SwiProlog, Squeak Prolog et le système Expert.
Squeak Prolog ne fonctionne plus ave la version DrGeo en Pharo.Pour éviter ce problème,j'ai repris et développé le système expert en smalltalk qui fonctionne avec Etoys et Pharo.
Voir la page:



