• Aucun résultat trouvé

en parallèle

N/A
N/A
Protected

Academic year: 2022

Partager "en parallèle"

Copied!
50
0
0

Texte intégral

(1)

Autres langages de l’IA

Cours en cours de réalisation … Module Programmation Logique

Pierre De Loor – enib -2004 – [email protected] www.enib.fr/~deloor

(2)

Exemples

{ Programmation logiques par contraintes

{ Programmation fonctionnelle

{ CLIPS

{ SOAR

{ Programmation logique parallèle

{ Programmation des logiques modales

{ Programmation des logiques temporelles

{ Programmation logique inductive

{ Programmation logique abductive

(3)

Programmation logique par contraintes

{

CHIP

{

CLP®

{

CLP(FD)

{

Distribution

z AWC

(4)

Programmation fonctionnelle (PF)

{ Fonctions

{ Origine mathématique

z Lambda-calcul : Church 1932

{ Formalisation de la notion de fonctions

{ Exclusion de la dualité Intension/extension

{ Fonctions définies par des règles

{ Récursivité intrinsèque : le domaine des lambda- fonctions est l ’ensemble des termes du lambda- calcul

z Applications

{ Mathématiques

{ Informatique

{ Linguistique

(5)

PF : lambda calcul

Partir en véhicule En utilisant Un traineau Appliquer la

consigne au véhicule

consigne

Partir en traineau

• Langage naturel

(6)

PF : lambda-calcul

Partir en x En utilisant Un traineau λ.x

consigne

Partir en traineau

• Lambda Langage

(7)

PF : lambda calcul

λ.x(partir en x) traineau

• Lambda-calcul

(8)

PF : lambda calcul

{

Mise en cascade

{

Réduction

λ.y(λ.x(partir en x y) traîneau) bleu)

λ.x(partir en x bleu) traîneau (partir en traîneau bleu)

(9)

PF : lambda calcul

{ Récursivité F ≡ (G F)

{ Exemple du factoriel

G ≡ λ.f[λ.n[if(=n 0) 1 (* n(f(-n 1)))]]

{

(10)

PF : Exemple en LISP

(defun fact (n))

(if (eq n 0) 1

(* n fact (- n 1)) )

)

(11)

PF : conclusion (1/2)

{ Puissance d’expression

z Parler de fonctions sans connaitre leur “valeur”

z Fonctions d’ordres supérieurs

{ Languages :

z LISP

z Miranda

z OCaml

z Haskell

(12)

PF : conclusion (2/2)

{

PF et PL

z Pas d’unification ni de retour arrière

z Ordre supérieur

z Fusionner les deux ?

¾ Curry

(13)

CLIPS

{ NASA (CLIPS 1985 … CLIPS 6 1994)

{ « Système de production »

{ Langage de description de S.E.

z Noyau de plusieurs milliers de SE.

{ Faits et règles typés

{ Assertion et délétion

{ Chaînage avant

{ Hiérarchie des règles « salience »

{ Règles actives à un instant : agenda

{ Réfraction

{ Algorithme RETE : complexité linéaire nbFait nbRègles

(14)

CLIPS : Principe

Agenda Base de règles

règles

Type de faits

Appariement (Rete)

Règles « activables »

Faits

activation réfraction

production

cycle

(15)

CLIPS : Mots clés

Agenda Base de règles

règles

Type de faits

assert/modify

duplicate/retract/deffacts/reset

appariement

defrule

run<n>

Règles « activables »

Faits

deftemplate

activation réfraction

refresh

production

(16)

CLIPS : Execution

{ Une règle activée est mise dans l’agenda

{ Lorsqu’elle est exécutée elle est retirée de l’agenda : « refraction »

{ Au prochain pas, elle ne sera pas réactivée

{ Sauf si c’est par de nouveaux faits

{ Une régle peut être mise en plusieurs exemplaires dans l’agenda si elle est activée par plusieurs faits

{ La fonction (refresh <règle>) remet la

règle dans l’agenda comme si elle n’avait pas été activée

(17)

CLIPS : Types faits et règles exemple 1

(deftemplate objet (slot nom)

(slot position) (slot couleur)) (deftemplate posseder

(slot objet))

(deftemplate liste-nombres (multislot values))

(defrule prendre (objet (nom ?unNom))

=>

(assert(posseder (objet ?unNom))

(18)

CLIPS : Types faits et règles exemple 1

; faits initiaux en ligne : assert (assert(objet (nom cafetiere)

(position 5-7) (couleur bleue)))

; faits initiaux en vrac : deffacts

; ils seront insérés suite à l'instruction (reset) (deffacts scene1 "Exemple de scene"

(objet (nom theiere) (position 4-4) (couleur verte)) (objet (nom chaise)

(position 1-1) (couleur jaune)) (objet (nom pomme)

(position 4-8) (couleur rouge)))

(19)

CLIPS : Exemple d’exécution exemple 1

{deloor@deloor}~/enseignement/ia/CLIPS/EXAMPLES/pdl$ clips CLIPS (V6.21 06/15/03)

CLIPS> (load "coursExample1.CLP") Defining deftemplate: objet Defining deftemplate: posseder Defining deftemplate: liste-nombres Defining defrule: prendre +j Defining deffacts: scene1 TRUE

CLIPS> (assert (objet (nom cafetiere) (position 1-2) (couleur bleue)))

<Fact-0>

CLIPS> (facts)

f-0 (objet (nom cafetiere) (position 1-2) (couleur bleue)) For a total of 1 fact.

CLIPS> (agenda) 0 prendre: f-0 For a total of 1 activation.

CLIPS> (run) CLIPS> (facts)

f-0 (objet (nom cafetiere) (position 1-2) (couleur bleue)) f-1 (posseder (objet cafetiere))

For a total of 2 facts.

CLIPS> (agenda) CLIPS> (reset) CLIPS> (facts) f-0 (initial-fact)

f-1 (objet (nom theiere) (position 4-4) (couleur verte)) f-2 (objet (nom chaise) (position 1-1) (couleur jaune)) f-3 (objet (nom pomme) (position 4-8) (couleur rouge)) For a total of 4 facts.

CLIPS> (agenda) 0 prendre: f-3 0 prendre: f-2 0 prendre: f-1 For a total of 3 activations.

CLIPS> (run)

CLIPS> (facts)

f-0 (initial-fact)

f-1 (objet (nom theiere) (position 4-4) (couleur verte))

f-2 (objet (nom chaise) (position 1-1) (couleur jaune))

f-3 (objet (nom pomme) (position 4-8) (couleur rouge))

For a total of 4 facts.

CLIPS> (agenda) 0 prendre: f-3 0 prendre: f-2 0 prendre: f-1

For a total of 3 activations.

CLIPS> (run) CLIPS> (facts)

f-0 (initial-fact)

f-1 (objet (nom theiere) (position 4-4) (couleur verte))

f-2 (objet (nom chaise) (position 1-1) (couleur jaune))

f-3 (objet (nom pomme) (position 4-8) (couleur rouge))

f-4 (posseder (objet pomme)) f-5 (posseder (objet chaise)) f-6 (posseder (objet theiere)) For a total of 7 facts.

CLIPS> (agenda) CLIPS>

(20)

CLIPS : Exemple 2

(deftemplate vehicule (slot nom)

(slot position) (slot vitesse))

(defrule sortirParking

?f1 <- (vehicule (position parking))

=>

(modify ?f1 (position route) (vitesse 40km/heures)))

{deloor@deloor}~/enseignement/ia/CLIPS/EXAMPLES/pdl$ clips CLIPS (V6.21 06/15/03)

CLIPS> (load "coursExemple2.CLP") Defining deftemplate: vehicule Defining defrule: sortirParking +j TRUE

CLIPS> (assert (vehicule (nom trotinette) (position parking) (vitesse 0)))

<Fact-0>

CLIPS> (assert (vehicule (nom kart) (position route) (vitesse 12km/h)))

<Fact-1>

CLIPS> (facts)

f-0 (vehicule (nom trotinette) (position parking) (vitesse 0)) f-1 (vehicule (nom kart) (position route) (vitesse 12km/h)) For a total of 2 facts.

CLIPS> (agenda) 0 sortirParking: f-0 For a total of 1 activation.

CLIPS> (run) CLIPS> (facts)

f-1 (vehicule (nom kart) (position route) (vitesse 12km/h)) f-2 (vehicule (nom trotinette) (position route) (vitesse

40km/heures)) For a total of 2 facts.

CLIPS> (agenda) CLIPS>

(21)

CLIPS : Hiérarchiser les règles

{

Utilisation de salience

{

Méta-règles

z Exemple :

{ Utiliser les règles relatives à la couleur des champignons

{ Puis celles relatives à la température

{

z Sauf si l’on rencontre certains faits …

(22)

CLIPS : Stratégie de chaînage

{

Correspond à un tri par défaut des règles

z Largeur + salience

z Profondeur + salience

z Aléatoire

z Lexicale

z Complexité

z

(23)

CLIPS : calcul de la salience

{

Explicitée par l’utilisateur

{

Règles pré-définies :

z Lors de l’activation des règles

z Lors de la définitions de règles

z A Chaque cycles

(24)

CLIPS : conclusions

{ C Language Integrated Production System

{ Version JAVA : Jess

{ CLIPS et PL ?

z Chaînage avant

z Unification

z Mixage ?

{ « Quelle est donc cette fleur » [Aichelle]

{ Beaucoup de Systèmes Experts définis en CLIPS

(25)

Programmation Logique Parallèle

{

Quoi : paralléliser la résolution de Prolog

a :- b,c,d. % règle r1 a :- c,d. % règle r2

a :- f. % règle r3

{

prolog est séquentiel :

scrutation des conjonctions (b puis c puis d)

scrutation des disjonctions (r1 puis r2

puis r3)

(26)

PLP : Pourquoi paralléliser prolog

{

Pas de justification de la scrutation séquentielle

{

Branches infinies

{

Optimisation

(27)

PLP : Exemple

concAplat(T1,T2,T3): aplatir(T1,T1P),

aplatir(T2,T2P), conc(T1P,T2P,T3).

{ conc peut commencer dès que l ’on a le début de T1P et de T2P.

{ mieux : concAplat peut commencer dès que l ’on a le début de T1 et T2 (possibilité de listes infinies).

z lazy evaluation.

{ problème : il existe une règle conc([],[],[]).

(28)

PLP : Parallélisation des conjonctions

a(X,Y) :- b(X,Z),c(Z,Q),d(X,Q,Y).

en parallèle

• problème d ’unification

• priorités ?

• direction (flots de données)

• échec ou « suspension »

(29)

PLP : Parallélisation des disjonctions

couleur(jaune).

couleur(vert).

couleur(orange).

-? couleur(X).

en parallèle problème de choix

indeterminisme

problème de suspension

(30)

PLP : Imposer des flots

{ Parlog

mode conc(?,?, ↑).

mode applatir(?,↑).

mode

concApplat(?,?,↑).

{ Concurrent Prolog

concApplat aplatir

aplatir

conc

(31)

PLP : Revoir l ’unification

{

Si une entrée est une variable

z la règle n ’est pas en échec

z elle est « suspendue »

z ensuite : unification classique

(32)

PLP : Exemple

-? concAplat([a,[b]],[c,d],L):

aplatir([a,[b]],X) aplatir([c,d],Y)

aplatir([[b]],X1)

X=[a|X1]

aplatir([d],X2)

Y=[d|X2]

1 2

Dès que 1 et 2 sont finies on peut lancer conc([a|X1],[b|X2],L) Si 1 va + vite que 2 on peut arriver à conc([a,b],[c|X2]).

Si 2 va + vite que 1 on peut arriver à conc([a|X1],[c,d]).

(33)

PLP : Indéterminisme

{

par essence

{

plusieurs processus peuvent être la source d ’une même variable.

{

solution dépendante de la

« vitesse » relative des processus.

{

la solution est « logiquement »

bonne

(34)

PLP : Le retour arrière

{

n’existe plus

z comme si chaque prédicat commençait par un !

z toutes les unifications des têtes sont évaluées en parallèle

z l ’engagement :

{ la première tête unifiable trouvée a gagné

z les autres sont abandonnées

z non déterministe

z choix délibéré : engagement dans une branche

z si la branche est en échec « fail » et c ’est tout z on ne trouve qu’une solution ou aucune

(incomplet)

(35)

PLP : Limiter les engagements : les gardes « : »

{

régle :- g1,g2 : b1,b2.

{

engagement si la garde est vraie

{

sinon suspension : attente d ’une garde vraie

mode on_ord_tree(?,,?).

on_ord_tree(KEY,VALUE,bt(X,(KEY,VALUE),Y)).

on_ord_tree(KEY,VALUE,bt(X,(KEY2,_),Y)):- KEY<KEY2 :

on_ord_tree(KEY,VALUE,X).

on_ord_tree(KEY,VALUE,bt(X,(KEY2,_),Y)):-KEY>KEY2 on_ord_tree(KEY,VALUE,Y):.

garde

(36)

PLP : Pas facile de trouver les gardes

{

Exemple de recherche sur un arbre non ordonné

mode on_tree(?,,?).

on_tree(KEY,VALUE,bt(X,(KEY,VALUE),Y)).

on_tree(KEY,VALUE,bt(X,(_,_),Y)):- on_tree(KEY,VALUE,X):.

on_tree(KEY,VALUE,bt(X,(_,_),Y)):- on_tree(KEY,VALUE,Y):.

(37)

PLP : Quelques variantes

{ Concerne surtout le mécanisme de garde

{ L’évaluation de la garde ne peut « envoyer » de résultats aux buts (sauf lors de l ’engagement)

{ Que faire si la résolution des buts modifie la valeur de la garde ?

z Concurrent Prolog [Shapiro, 1983]

z Guarded Horn Clauses [Ueda 1985]

z Parlog [Gregory 1987]

z travaux récents : « Continuations for Parallel Logic Programming (2000) » [Eneia Todoran]

(38)

Programmation en Logique Modale : PLM

{

Objectifs :

z Expressivité

{ Spécification plus « naturelle »

{ Modalité : vouloir, savoir, pouvoir, croire, devoir, possible

z Puissance

{ Extension du système de résolution (ou système de preuve)

(39)

PLM : Rappel sur les systèmes formels

réel système

formel

théorie formaliser

prédire

fonctionne seul

Concept Principe Idée

(40)

PLM : Rappel sur les systèmes formels

modèle axiomatique

Notion de vérité {v,f}

de validité

Notion de preuve : théorèmes

complétude

adéquation

réel

(41)

PLM : Calcul propositionnel

Proposition langage naturel

Axiomatique : 3 axiomes, 1 règle d ’inférence

Modèle : tables de vérité

Langage : propositions, connecteurs, règle d ’équivalence

(42)

PLM : Logiques Modales

Modalités

de raisonnement

Axiomatique : T

S1..S5

Modèle : mondes possibles

Langage : propositions, connecteurs modaux, règle d ’équivalence

(43)

PLM : Paradoxe d’implication matérielle

A B (A↔B) (A→B) (A∧B) (A∨B)

t t t t t t

t f f f f t

f t f t f t

f f t t f f

Si A = f, A→B est vrai (quelque soit B) !!

(44)

PLM : Modalités selon le dictionnaire

{ Linguistique

z Comparer les langues

z Mots qui représentent des valeurs

{ Désirative, éventuelle, hypothétique, probable, possible, nécessaire …

z Représentant des opinions, attitudes, jugements, propositions

z Déontique, épistémique, aléthique …

{ Logiciens

z Fluctuation entre le nécessaire, le possible et le probable

(45)

PLM : Modalités, différents courants

{ Philosophie/logique

{ Propositions modales

z Aristote :

{ Possibilité/nécessité

z Kant :

{ Problématique

{ Assertorique

{

z Logique classique :

{ Possibilité/impossibilité

{ Contingence/nécessité

(46)

PLM : modalités (exemple de

classification d’après Paul Laurendeau)

Subjectivité (je réclame) + être et n’être pas dans le monde Jugement de

valeur + être et ne pas être dans le monde Possible,

probable, incertain.

S’appuie sur un étalon extérieur au sujet Négation

d’une fluctuation, prise en charge, prise en compte assertion stricte

Assertion subjective (selon mon

expérience)

Je veux qu’il vienne Tu devrais

rendre visite à ta mère Je me réjouis

qu’il vienne Je crois qu’il

vient

Je prétends qu’il viendra J’ai peut- être visité cette ville Je vais

peut-être visiter cette ville.

Il va bien venir.

Il est probable qu’il vienne Je dis qu’il

vient Je t’assure qu’il vient Il fait chaud

Il fait, selon moi, chaud

Volitive (désir, volonté) Déontique

(devoir être) -objectif +subjectif (morale) Appréciative

(bon/mauvais- normal/étrang e)

Épistémique (connaissance du sujet, fluctuation sur le connaître) Aléthique

(fluctuation s à être) Ontique

(stabilité)

Modalité Mixte

Modalité subjective Modalité

objective

Modalisation Assertion

(47)

PLM : modalités (selon Antoine Culioli)

(48)

PLM : Logiques Aléthiques

{ Opérateurs modaux :

z Possibilité : ◊

z Nécessité :

z Modèles : mondes possibles

{ Spécialisation :

z Logique des connaissances SAVOIR

COMPATIBLE AVEC MES CONNAISSANCES

z Logique des croyances

z Logiques temporelle modales (toujours/parfois)

z

(49)

PLM : modèle : pas de table de vérité

{

Exemple

z Fait : le ciel est bleu

Ciel_bleu

(50)

Bibliographie

[Aichelle] Aichelle D., « Quelle est donc cette fleur », Fernand Nathan.

[All 92] Alliot J.M. et al, « Implementing Prolog extensions : A Parallel Inference Machine », International Conference on Fifth Generation Computer System, 1992.

[Bal 88] Balbiani P., Farinas del Cerro L. Herzig A, « Declarative semantics for modal logic programs », Proc. Int. Conf. On Fifth Generation Computer Systems (FGCS-88).

[Dix 98] Dix J. et al « The Logic Programming Paradigm », AI Communication vol 11, pages 123-131, 1998.

[Fish 93] Fisher M. et al, « An Introduction to Executable Modal and Temporal Logics » In Proc. of the IJCAI’93 workshop on Executable Modal and Temporal Logics, volume 897 of LNAI, pages 1-20,

springerVerlag, 1993.

[Ger 01] Gergatsoulis « Temporal and Modal Logic Programming Langages », Encyclopedia of Microcomputers, vol 27, supplement 6, pages 393-408, New-York, 2001.

[Giarratano 98] Giarratano & Ripley, « Expert Systems, Principles and programming », PWS Publishing Compagny, 1998.

[Gre 87] Gregory S. « Parallel Logic Programming in PARLOG », 1987.

[Liu 98] Liu C. « A Temporal Reasoning Methodology for Concurrent Systems Using Chronolog (MC) », Proc of the 2st Australian Computer Science Conference, 1998.

[Org 93] Orgun M.A « Chronolog(Z): Linear-time Logic programming », in Proc of the Fith International Conference on Computing and Information, pages 545-549, IEE Computer Society Press, 1993.

[Ron 98] Rondogiannis P. et al, « Branching-time Logic Programming: The Language Cactus and its Applications », Computer Languages Vol 24, Issue 3, pages 155-178, 1998.

[Sha 83] Shapiro, « Concurrent Prolog », 1983.

[Tod 00] Eneia Tordoran, « Continuation for Parallel Logic Programming », 2000.

[Ued 85] Ueda, « Guarded Horn Clauses », 1985.

http://www.linguistes.com/mots/verbe.html http://www.cyberphilo.com/

http://www.irit.fr/ACTIVITES/EQ_ALG/Herzig/molog.html

Références

Documents relatifs

dans la balise du paragraphe (méthode sans fichier css) pour changer la couleur du mot test en rouge… puis affecter la classe soustitrecolor à la balise. &lt;p&gt; en

Concernant le travail sur les volcans en géo que nous avions commencé en classe avant le confinement, il vous a été demandé depuis le 15 avril de terminer l'affiche et la synthèse..

termes sont des polynomes homog~nes, ~ un nombre quelconque de variables, de/init une lonction holomorphe dans le voisinage de l'origine, &amp; condition que

Compact dans ne signifie pas être un intervalle. est continue sur et est bien une partie compacte de mais ce n’est pas un intervalle. Pour obtenir le fait que

Déterminer quelles sont les hypothèses entre lesquelles on ne peut

c'est une relation entre les £/, £y : il existera ainsi entre ces quantités une infinité de relations, mais il est clair qu'elles ne seront pas toutes distinctes.. Dans la pratique,

D'une manière générale, il est recommandé de mettre en oeuvre le moins possible de câbles en parallèle. Dans tous les cas, leur nombre ne doit pas dépasser quatre. Au-delà, il y

Les tarifs annuels suivants pour le service de gestion des matières résiduelles sont imposés et prélevés aux propriétaires de toute unité d’évaluation inscrite au