Géométrie et système expert

From OFSET Community Wiki

Jump to: navigation, search

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.

A partir de Etoys 4, DrgGeo est inclu et doit être lancé depuis le catalogue des objets.

Image:DrGeoAffirm.gif

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

Image:Dedparalmil.png

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:

Système Expert

Personal tools