Géométrie et système expert

From OFSET Wiki

Jump to: navigation, search

Contents

[edit] 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à.


[edit] Différentes pistes.

[edit] Système experts disponibles

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 3.9 et 3.10 ainsi que l'image originale OLPC. Actuellement il reste un problème d'affichage des clauses dans les versions pour Squeakland Plugin et la future image commune OLPC et squeakland.

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.

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.

Nouvelle solution, écrire un système expert directement en Smalltalk. le traitement peut donc se faire tout en Squeak. voir: Système Expert. Je me suis fait rattraper par le nouveau Squeak Prolog(vois ci-dessus). Mais 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. b

[edit] Solution avec swi-prolog

[edit] A partir de DrGeo Squeak

[edit] 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.

Image:DrGeoAffirm.gif

[edit] 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

[edit] 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.

[edit] 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]).
 
[edit] 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)]
[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
Personal tools