Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Sistemi Esperti
1 Tools AI
AMBIENTI PER LO SVILUPPO DI SISTEMI ESPERTI:
KAPPA-PC
Blocchi fondamentali:
- Oggetti;
- Regole;
- Immagini grafiche;
Prototipazione rapida.
2 Tools AI
Rappresentazione degli elementi del dominio:
Classi;
Istanze;
Slots;
Ereditarieta'.
TomsCar
Owner Tom Jones
Registered No
ModelYear 1983
Color Black
3 Tools AI
Gli Oggetti in KAPPA
Esempio:
MarysCar
*Colors Red
*NumberOfDoors *4
Sedans *Owner Mary
Colors
NumberOfDoors 4
Owner
TomsCar
*Colors Black
*NumberOfDoors *4
*Owner Tom
Uno slot puo' essere reso locale. In questo caso gli si puo'
assegnare un valore che verra' poi ereditato dalle
sottoclassi ed istanze discendenti.
4 Tools AI
Opzioni per gli slots:
(facets)
Le opzioni sono:
5 Tools AI
Base di Conoscenza
- Metodi;
- Funzioni;
- Regole.
Metodi:
Esempio:
computeMPG metodo associato alla classe Autos per
calcolare i chilometri per litro dati i chilometri percorsi e la
benzina consumata.
Funziona recuperando dagli slots Distance e Gallons
distanza percorsa e benzina consumata.
Funzioni:
Regole:
Relazioni di causa-effetto.
IF
the ignition is on,
and the electrical system is good,
and the condition of
the spark plugs is good,
THEN
the spark plugs spark.
6 Tools AI
Gli strumenti di sviluppo:
Ambiente a finestre.
Finestre principali:
Main Window;
Object Browser;
Session Windows;
Edit Tools Window;
KAL Interpreter;
KALView Debugger;
Find and Replace Windows;
Rule Relations Window;
Rule Trace Window;
Inference Browser.
7 Tools AI
Main Window:
Object Browser
8 Tools AI
Session Windows
Menu:
New
Edit
Delete
Rename
9 Tools AI
EDITORS:
Class Editor
Lo '*' che precede slots e metodi indica che non sono stati
definiti li', ma ereditati da qualche superclasse.
10 Tools AI
Instance Editor
Slot Editor
Valore
Contiene il valore od una lista di valori associati con lo
slot.
Cardinalita'
Singola;
Multipla.
Tipo
- Text (default)
- Numero (intero o floating point)
- Booleano (TRUE o FALSE)
- Oggetto (Classe od Istanza)
11 Tools AI
Valori limite:
Ad esempio per i valori numerici si puo' specificare un
valore minimo o massimo permesso. Per Testo solo un
certo insieme di nomi. Ad esempio per colori potrei
indicare come Allowable Values solo red, white,
blue.
Analogamente se il valore di uno slot e' un oggetto potrei
specificare che deve essere istanza di una certa classe.
Default:
Please enter the value of
ObjName:SlotName?
Slot Inheritance
Puo' essere inibita rendendo lo slot locale.
Ask Value
Per stabilire se e' askable durante il backward chaining.
Method Editor
12 Tools AI
Monitors:
If Needed Method
Contiene il nome di un metodo specificato nell'oggetto od
in uno dei suoi predecessori. Se si chiede il valore dello
slot e lo slot non ha un valore assegnato si attiva il
metodo che riceve come argomento il nome dello slot e
ritorna il suo valore.
13 Tools AI
Function Editor
Goal Editor
Body
Contiene una Espressione KAL che il motore d'inferenza
utilizza come Goal da dimostrare.
14 Tools AI
Rule Editor
Patterns
Contiene una lista di oggetti che devono fare match dentro
la regola.
Il formato di ogni pattern e':
DummyName | Classname
Il DummyName serve per riferire tutte le istanze di una
determinata classe.
Priority
Assegna una priorita' alla regola per risolvere conflitti fra
regole (piu' alto e' il numero, maggiore e' la priorita', default
0).
If
Espressione KAL
Then
Espressione KAL
15 Tools AI
L'INTERPRETE KAL
16 Tools AI
Ad esempio, per creare una classe:
==>MakeClass(Autos,Root);
Autos
==>MyCar:MaxSpeed;
200
La sessione di spiegazione
Explain(MyCar,SuspectedProblem).
17 Tools AI
KALView Debugger
Debugger per il linguaggio KAL con le tipiche istruzioni di
un debugger:
Break,
Watch,
Step,
Trace ecc
KAL
Sintassi:
Atomi
Una parola, od un insieme di parole fra doppi apici.
Esempio:
MarysCar o "red white blue"
Coppie
Un nome di un oggetto seguito da ": " ed il nome di uno
slot.
Esempi:
MarysCar:Color
Autos:NumberOfDoors
18 Tools AI
Espressioni infisse
Assegnamento: =, +=
MarysCar:Speed = 55
TomsCar:Speed += 5;
(lo aggiunge a quello precedente)
Operatori Logici: And, Or, Xor, Not (in realta' e' una
funziona da usare in forma prefissa).
Espressioni speciali
Tipicamente funzioni di controllo quali:
While, For, ForAll, If, e Let.
19 Tools AI
Esempio:
For counter From 1 To 10 By 0.5 Do
{
MakeInstance (Obj#10*counter,Root);
MakeSlot (Obj#10*counter,Size);
SetValue(Obj#10*counter,Size,counter)
;
};
Esempio:
ForAll [x | People]
EnumList (x:Friends,y,
PostMessage(x # " has a friend "y)));
Esempio:
while (Car:Fuel > 0)
SendMessage(Car,Drive,1);
Esempio:
Let [text From_Car:Origin]
PostMessage(text);
if
if (testExpression)
Then thenExpression
Else elseExpression
20 Tools AI
Se thenExpression non e' un atomo o una coppia va
inclusa in parentesi. La parte else puo' essere omessa.
Esempio:
Blocchi
Espressioni multiple in parentesi graffe separate da ";".
Sono utilizzate in metodi, funzioni e regole.
21 Tools AI
Chiamate di funzioni
FunctionName(argument1,....,argumentN);
Esempi:
MakeInstance(Used,Autos);
22 Tools AI
Funzioni per la Base di Conoscenza
Esempi:
MakeClass(Unrepairable,Sedans);
SetValue(MarysCar:Colors,Red);
GetParent(MarysCar);
Esempio:
LenghtList(MarysCar:Colors);
1
trova quanti colori sono assegnati allo slot Colors di
MarysCar.
AppendToList(MarysCar:Colors,green);
red green
Appende alle lista dei colori assegnati allo slot Colors di
MarysCar green.
Member?(MarysCar:Colors,blue)
FALSE
Chiede se blue fa parte dei colori di MarysCar.
23 Tools AI
Funzioni che lavorano su files
Esempio:
1) OpenWriteFile("rules.kal");
2) WriteAllRules();
3) CloseWriteFile();
Funzioni di Controllo
Esempio:
MakeFunction(Square,[x],(x*x));
24 Tools AI
Programmazione ad Oggetti
Oggetti in KAPPA:
Metodi:
Descrivono le azioni che l'oggetto puo' compiere.
Sono procedure rappresentate come attributi dell'oggetto.
Per attivare un metodo in un oggetto si deve spedire un
messaggio.
I metodi si ereditano in modo simile agli slots.
Vantaggi:
Modularita'
Ri-usablita'
Polimorfismo.
Creazione di un metodo
Puo' avvenire direttamente usando l'interprete KAL oppure,
in modo piu' semplice, mediante il Method Editor.
25 Tools AI
Esempio:
MakeMethod(MarysCar,CheckFuel,
[ ], GetValue(Self:Tank))
MakeMethod(Autos,INIT, [ ],
{GetSlotList(Self,Global:TempList);
EnumList(Global:TempList,SlotName,
ResetValue(Self:SlotName));
PostMessage
("Initialization is Complete);});
Spedizione di messaggi:
SendMessage(MarysCar,INIT);
Ereditarieta':
26 Tools AI
Monitors:
Esempio:
Vogliamo creare un monitor che manda un segnale di
allarme all'utente quando nello slot Passengers di
MarysCar sono inseriti troppi passeggeri.
{
if (newvalue > 5)
Then
PostMessage("This car cannot hold
more than 5 five passengers.")
Else
PostMessage ("You have setted” #
newvalue # “passengers in MarysCar");
};
AskValue(MarysCar,Passengers);
27 Tools AI
Ragionamento Basato su Regole in KAPPA
IF
the condition of the spark plug is bad
or the timing is out of synch
or the battery is low
THEN
the electrical system is bad
28 Tools AI
Gli Strumenti offerti da KAPPA per le Regole
Rule Editor
==>MakeRule
(GoodElecSys, [car | Autos],
car: SparkPlugCondition#=Good And
car: Timing #= InSynch And
car:Battery #= Charged,
car: ElectricalSystem = Good);
Variabili o Patterns:
[car | Autos]
29 Tools AI
Rule Trace Window
Inference Browser
Goal Editor
30 Tools AI
Scrivere regole in KAPPA
Agenda:
Rule List:
31 Tools AI
Insiemi di regole:
ForwardChain(NULL, Global:CarRules)
32 Tools AI
Risoluzione dei Conflitti in Forward Chaining
Esistono 4 differenti strategie
SELECTIVE:
Si seleziona la regola piu' prioritaria fra quelle applicabili.
Le altre vengono eliminate. I nuovi elementi dell'agenda
vengono aggiunti in fondo.
DEPTHFIRST:
Questa modalita` e' esaustiva. Non cancella quindi tutte le
regole applicabili una volta che ne seleziona una, ma le
inserisce nella lista in testa dopo averle ordinate in ordine
di priorita'. Se vengono aggiunti nuovi elementi questi
vengono aggiunti in testa all'agenda. Nel caso ci siano
nuovi elementi da aggiungere e ancora regole da applicare
nella agenda si da priorita` ai nuovi elementi dell'agenda.
BREADTHFIRST:
Anche questa modalita` e' esaustiva. Le nuove regole
rese attive dall'aggiunta di qualche elemeno nell'agenda
vengono ordinate per priorita' e poi inserite in fondo alla
lista. Nel caso ci siano nuovi elementi da aggiungere e
ancora regole da applicare nella agenda si da priorita` alle
regole, ovvero si vuota la lista delle regole da applicare
prima di processare un nuovo item.
BESTFIRST:
E' simile alla strategia Depth-first. E' esaustiva. Non
cancella quindi tutte le regole applicabili una volta che ne
seleziona una, ma le inserisce nella lista in ordine di
priorita', mischiate a quelle gia` presenti. Per il resto e`
analoga alla Depth-first.
33 Tools AI
Forward Chaining
34 Tools AI
Come si attiva il Forward Chaining
ObjName:SlotName = NewValue;
Assert(ObjName:SlotName);
ForwardChain(GoalName, RuleSet);
Esempio1:
Regola (BadElecSys):
=> Assert(MarysCar,Battery);
TRUE
=>ForwardChain(NULL,GoodElecSys,BadElecSys
);
FALSE
=>
36 Tools AI
Backward Chaining
Esempio1
Regole usate:
BriskTurnover:
[car:Autos]
IF car:IgnitionKey #= ON And
car: ElectricalSystem #= Good;
THEN car:EngineTurnover = Brisk;
SluggishTurnover:
[car:Autos]
IF car:IgnitionKey #= ON And
car: ElectricalSystem #= Bad;
THEN car:EngineTurnover = Sluggish;
NoTurnover:
[car:Autos]
IF car:IgnitionKey #= OFF;
THEN car:EngineTurnover = Absent;
CalculateAge:
[person:People]
IF person:Age #= 21;
THEN person:licensed=yes;
37 Tools AI
Slots utilizzati:
MarysCar: IgnitionKey
Allowable Values: ON OFF
MarysCar: ElectricalSystem
Allowable Values: Good Bad
MarysCar: EngineTurnover
Allowable Values: Brisk Sluggish Absent
Name:
Turnover?
Body:
(nell'interprete KAL)
MakeSlot(Global,
EngRules,BriskTurnover,NoTurnover,
SluggishTurnover,CalculateAge);
38 Tools AI
Visualizzazione del processo di Backward Chaining
Turnover?, Global:EngRules
BriskTurnover:
MarysCar: IgnitionKey
(risposta ON)
MarysCar: ElectricalSystem
(risposta GOOD)
Risposta: TRUE
La variabile [NOASK]
[NOASK],Turnover?, Global:Eng
39 Tools AI