Sei sulla pagina 1di 39

KAPPA-PC: Un Tool per lo sviluppo di

Sistemi Esperti

Ing. Sergio Storari


DEIS Università di Bologna
sstorari@ing.unife.it

1 Tools AI
AMBIENTI PER LO SVILUPPO DI SISTEMI ESPERTI:

KAPPA-PC

Kappa-PC Applications Development System.

E' una libreria integrata di diversi strumenti per costruire


applicazioni "intelligenti";

Ambiente Grafico molto ricco (da approfondire


direttamente utilizzando il sistema);

Genera codice C standard ANSI;

Blocchi fondamentali:

- Oggetti;

- Regole;

- Immagini grafiche;

- Interfaccia con C; Databases; Interfacce grafiche.

Tutto e' ben integrato ed usa la stessa sintassi. Le


immagini sono ad esempio speciali tipi di oggetto.

Prototipazione rapida.

Esempi presi dalla Base di Conoscenza Autosim2


(Diagnosi su guasti in automobili).

2 Tools AI
Rappresentazione degli elementi del dominio:

Classi;

Istanze;

Slots;

Ereditarieta'.

TomsCar
Owner Tom Jones
Registered No
ModelYear 1983
Color Black

Se Autos ha uno slot NumberofDoors i discendenti


ereditano tale slot.

3 Tools AI
Gli Oggetti in KAPPA

Il primo passo nello sviluppo di un'applicazione KAPPA e' la


definizione degli oggetti (Classi, Istanze) e delle loro
relazioni.

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)

Se uno slot non ha valori gli viene di default attribuito


NULL.

Le opzioni sono:

Cardinalita' (singola o multipla)


Valori Permessi
Ereditarieta'
Tipo
Monitors: If Needed, WhenAccessed, Before Change,
After Change.

5 Tools AI
Base di Conoscenza

- Metodi;
- Funzioni;
- Regole.

Metodi:

Esprimono in modo procedurale il comportamento degli


oggetti (programmazione ad oggetti).
Sono scritti in KAL ==> Kappa-PC's Application Language.

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:

Librerie di varie funzioni di utilita' quali funzioni aritmetiche


e funzioni complesse (forward chaining).
L'utente puo' costruire le sue funzioni sia usando KAL che
il linguaggio C.

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.

Esistono poi degli editors speciali per Istanze, Goals,


Classi, Slots, Metodi, Funzioni e Regole.

7 Tools AI
Main Window:

Interfaccia principale per ogni applicazione.

Salva e ritrova files ed applicazioni .kal se ascii; .bin se


compilati. Gestisce tutte le finestre Kappa.

Object Browser

Permette di visualizzare (in modo grafico) e modificare gli


oggetti e le loro relazioni.
Sottoclassi==> linee continue.
Istanze==> linee tratteggiate.

Copiare, cancellare, aggiungere istanze,sottoclassi,

8 Tools AI
Session Windows

E' l'interfaccia principale per l'utente finale.

La finestra puo' essere progettata in differenti modi per


facilitare l'interazione con l'utente.

Edit Tools Window

Provvede l'accesso a tutti gli enti di KAPPA: classi,


istanze, funzioni, regole, goals.

Menu:

New
Edit
Delete
Rename

9 Tools AI
EDITORS:

Sono editors specializzati per tutti gli elementi di KAPPA.

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

L'ereditarieta' e' semplice (non multipla).

Slot Editor

Contiene i seguenti campi:

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.

Specificare un prompt line per fare la domanda piu'


opportuna all'utente quando si tratta di riempire lo slot con
un certo valore.

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

Si specificano gli argomenti, ed il body che contiene


un'espressione KAL

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.

When Accessed Method


Si esegue il metodo ogni volta che si accede lo slot (anche
se a questo e' gia' attribuito un valore).

Before Change Method


Si esegue il metodo prima di inserire un nuovo valore per
lo slot. Ha come parametri il nome dello slot ed il suo
nuovo valore e ritorna il valore da inserire nello slot.

After Change Method


Si esegue il metodo subito dopo aver inserito un nuovo
valore per lo slot. Ha come parametri il nome dello slot ed il
suo vecchio valore e puo' eseguire qualunque azione.

13 Tools AI
Function Editor

Analogo al Method 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

E' l'interprete del linguaggio KAL.

Alternativa all'utilizzo dei menu per la creazione degli


oggetti e le istanze.

Definizione di metodi, funzioni, goals.

16 Tools AI
Ad esempio, per creare una classe:

==>MakeClass(Autos,Root);
Autos

Per creare una regola:

==>MakeRule(Rule1, [car | Autos],


car:MaxSpeed >=180,
car:Type=Racing);
Rule1

Valutazione di espressioni aritmetiche:

==> MyCar:MaxSpeed > 180;


TRUE

Trovare il valore di uno slot:

==>MyCar:MaxSpeed;
200

Esiste un help in linea (Function Reference Menu) e


facilitazioni per scrivere le funzioni ed i nomi degli elemeni
della base di conoscenza correttamente.

La sessione di spiegazione

Si puo' invocare dal Rule Trace o direttamente invocando


la funzione Explain nell'interprete KAL.

Ad esempio, si puo' chiedere perche' un certo slot


(SuspectedProblem in MyCar) abbia un certo valore.

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

Linguaggio semplice (funzionale) per:

- Aggiungere nuove informazioni alla base di


conoscenza;
- Rimuovere informazioni dalla base di conoscenza;
- Interrogare la base di conoscenza;
- Esprimere espressioni.

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

Possono essere utilizzate in espressioni.


Possono essere anche innestate.
Ad esempio:
TomsCar:Owner:Age;
Da' come risultato 45;

18 Tools AI
Espressioni infisse

Assegnamento: =, +=

MarysCar:Speed = 55
TomsCar:Speed += 5;
(lo aggiunge a quello precedente)

Espressioni aritmetiche: +,-,*,/,^,<,>,<=,>=,==,!=

Operazioni con Testi: # (appende) #= (uguaglianza fra


stringhe)

Operatori Logici: And, Or, Xor, Not (in realta' e' una
funziona da usare in forma prefissa).

Si possono utilizzare parentesi.

Espressioni speciali
Tipicamente funzioni di controllo quali:
While, For, ForAll, If, e Let.

For counter [start end interval]


expression;

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)
;
};

ForAll e' una funzione che esegue un'iterazione per ogni


istanza di una certa classe.

ForAll [x | className] expression;

Esempio:
ForAll [x | People]
EnumList (x:Friends,y,
PostMessage(x # " has a friend "y)));

While (testExpression) expression;

Esempio:
while (Car:Fuel > 0)
SendMessage(Car,Drive,1);

Let [x xExpression] expression;


x deve essere un atomo

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:

If (Car:Fuel / Car:MaxFuel < 0.25)


Then PostMessage ("Car has less than 1/4
of tank")
Else PostMessage ("Car has lots of fuel");

Blocchi
Espressioni multiple in parentesi graffe separate da ";".
Sono utilizzate in metodi, funzioni e regole.

21 Tools AI
Chiamate di funzioni

KAL ha una ricchissima libreria di circa 300 funzioni.


inoltre si possono scrivere funzioni C (e di ogni altro
linguaggio supportato dalla Microsoft) e utilizzarle all'interno
di Kappa.

Si possono cosi' eseguire le seguenti operazioni:


- creare accedere e modificare elementi della KB;
- valutare espressioni logiche, matematiche e fra
stringhe;
- Controllare blocchi di espressioni;
- Manipolare liste, files, databases;
- Controllare le inferenze;
- Controllare l'interfaccia grafica.

Sintassi per la chiamata di una funzione:

FunctionName(argument1,....,argumentN);

Esempi:

MakeInstance(Used,Autos);

Crea l'istanza Used della classe Autos.

PostInputForm("What are the colors",


TomsCar, Colors, "Choose One");

Genera una finestra di input in cui l'utente puo' scegliere il


colore fra quelli permessi per lo slot Colors dell'istanza
TomsCar.

E' possibile avere direttamente in linea tutte le funzioni


KAL e selezionarle direttamente (Paste All). In questo
modo gli argomenti appariranno preceduti da @ ed
andranno opportunamente modificati.

22 Tools AI
Funzioni per la Base di Conoscenza

Esempi:

MakeClass(Unrepairable,Sedans);

Unrepairable viene creata come sottoclasse di


Sedans.

SetValue(MarysCar:Colors,Red);

GetParent(MarysCar);

Trova la classe genitrice di MarysCar.

Funzioni che operano su liste

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:

Scrivere tutte le regole in un file

1) OpenWriteFile("rules.kal");
2) WriteAllRules();
3) CloseWriteFile();

Funzioni di Controllo

Controllo del tempo, esecuzione di programmi MS-DOS


ecc.

Funzioni di Manipolazione delle Finestre

Funzioni Definite dall'Utente

Si possono creare usando il Function Editor oppure


dall'interprete KAL usando MakeFunction.

Esempio:

MakeFunction(Square,[x],(x*x));

Nota: consultare il manuale per la lista completa delle


funzioni KAL.

24 Tools AI
Programmazione ad Oggetti

Oggetti in KAPPA:

- Una parte descrittiva (Slots);


- Una parte procedurale che ne descrive il
comportamento (Metodi).

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.

Un metodo puo' essere una qualunque funzione KAL od


una sequenza di funzioni KAL.
Esistono due argomenti di default:
Self e TheParent.

Self e' essenziale per accedere ai valori locali anche se


il metodo e' stato ereditato.

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);});

Come si utilizzano i metodi:

Spedizione di messaggi:

Ad esempio per attivare il metodo INIT nell'oggetto


(istanza) MarysCar:

SendMessage(MarysCar,INIT);

Ereditarieta':

Come per gli slots (attenzione alla variabile self).


Si possono sovrascrivere definendoli localmente.

26 Tools AI
Monitors:

Sono metodi legati agli slots.

Esempio:
Vogliamo creare un monitor che manda un segnale di
allarme all'utente quando nello slot Passengers di
MarysCar sono inseriti troppi passeggeri.

Usiamo l'interfaccia offerta da KAPPA.

1. Dall'Instance Editor selezionamo MarysCar;


2. selezioniamo Methods e New;
3. Diamo al Metodo nome OverPass;
4. Nella parte arguments indichiamo slot newvalue;
5. Nella parte body scriviamo:

{
if (newvalue > 5)
Then
PostMessage("This car cannot hold
more than 5 five passengers.")
Else
PostMessage ("You have setted” #
newvalue # “passengers in MarysCar");
};

7. Seleziona Close del Edit menu;


8. Entra nel Passengers slot;
9. Nel campo Before Change inserisci OverPass;
10. Salva.

Per utilizzare questo metodo:

AskValue(MarysCar,Passengers);

Il sistema mi chiede un valore.

27 Tools AI
Ragionamento Basato su Regole in KAPPA

Un esempio di regola (presente nella Demo AutoSim2)


scritta in linguaggio naturale:

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

I fatti coinvolti sia nelle premesse che nelle conclusioni


della regola devono riferirsi a valori di slot di qualche
oggetto.

Metodi di inferenza supportati:


forward chaining
backward chaining

Forward chaining si attiva asserendo un nuovo fatto.


Backward chaining con una query.

28 Tools AI
Gli Strumenti offerti da KAPPA per le Regole

Rule Editor

Per creare le regole.


Esse seguono la sintassi di KAL.

==>MakeRule
(GoodElecSys, [car | Autos],
car: SparkPlugCondition#=Good And
car: Timing #= InSynch And
car:Battery #= Charged,
car: ElectricalSystem = Good);

Nota: le premesse contengono tests mentre le conclusioni


assegnamenti.

Variabili o Patterns:
[car | Autos]

car e' un nome di una variabile che verra' utilizzata nella


regola, mentre Autos indica la classe a cui la variabile
car deve appartenere.

Rule Relations Window

Consente di visualizzare le relazioni fra regole.


Data una regola R, con If Dependencies mostra le regole
che hanno una conclusione che fa match con le premesse
di R; mentre con Then Dependencies mostra le regole che
hanno premesse che fanno match con le conclusioni di R.

29 Tools AI
Rule Trace Window

Permette di visualizzare il procedimento di ragionamento


(sia backward che forward), le nuove conclusioni che il
sistema genera e la variazione di alcuni slots.

Consente di inserire anche dei breakpoint in certi slots e


regole o di fare il trace in modo selettivo.

Mostra anche il contenuto dell'agenda e le regole attive.

E' possibile anche seguire l'esecuzione step-by-step.

Inference Browser

Consente di visualizzare le regole che il motore di


inferenza invoca in forma grafica (rete).

Goal Editor

Il goal e' un'espressione KAL che rappresenta la query,


ovvero il risultato che si vuole raggiungere.

Si usano sia nel forward che nel backward chaining (anche


se maggiormente in quest'ultimo).

Deve avere un nome ed associata un'espressione KAL


che e' un test che ritornera` true se il Goal e` dimostrato.

30 Tools AI
Scrivere regole in KAPPA

Agenda:

Lista di coppie Oggetto:Slot che sono processate dal


motore di inferenza forward.

Ogni volta che il valore di uno slot cambia come risultato


dell'applicazione di una regola, la coppia corrispondente
viene aggiunta all'agenda.

Si puo' utilizzare anche la funzione Assert (nella parte


THEN di una regola od in KAL) per aggiungere una coppia
all'agenda.

Il meccanismo di forward chainig termina quando non ci


sono piu' coppie nell'agenda oppure l'insieme di regole
applicabili (rule list) e` vuoto.

Rule List:

Insieme di regole applicabili in un certo stato dell'Agenda,


cioe' che hanno una premessa che fa match con un
elemento dell'agenda.

Rilevanza di una Regola:

Una regola e` applicabile se:


1. Una coppia Oggetto:Slot dell'agenda fa match con una
delle premesse;
2. Tutte le altre premesse della regola sono verificate.

31 Tools AI
Insiemi di regole:

Default: si utilizzano tutte le regole.


Puo' pero' essere utile in alcuni casi partizionare le regole
in insiemi diversi per meglio controllare il processo di
ragionamento.

Se ho un certo insieme di regole da utilizzare posso


elencarle come parametri nel modo seguente:

ForwardChain(NULL, Rule1, Rule4, etc.)


oppure
BackwardChain(Elec,GoodElecSys,
BadElecSys, etc.)

Un modo piu' rapido per fare una cosa analoga e`


raggruppare tutte le regole rilevanti in uno slot nell'istanza
Global.

Ad esempio si puo' creare uno slot con valori multipli


(CarRules) ed inserirci i nomi delle regole che si vogliono
raggruppare con questo nome come valori dello slot.

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.

Possono essere selezionate dall'interprete KAL


(SetForwardChainingMode) oppure selezionate dall
Rule Trace window.

33 Tools AI
Forward Chaining

Il ciclo comincia ogni volta che si estrae una coppia


Oggetto:Slot.

La coppia viene controllata con ogni premessa delle regole


presenti nel rule set.

Si controllano le regole che menzionano tale coppia e si


valutano le loro premesse. Se la valutazione
dell'espressione risulta vera, la regola viene considerata
applicabile (ed inserita nella Rule List).

Poi si rimuove una regola applicabile dalla Rule List e si


esegue valutando le sue conclusioni (che creeranno
eventualmente nuove coppie).

Se le nuove coppie sono soluzione per il Goal, il ciclo


forward termina, altrimenti nuove coppie Oggetto:Slot sono
inserite nell'agenda in base ai cambiamenti espressi nel
conseguente.

Poi si ricomincia un nuovo ciclo.

34 Tools AI
Come si attiva il Forward Chaining

1) Si cambia il valore di uno slot.

ObjName:SlotName = NewValue;

2) Si notifica al motore di inferenza che uno slot e' stato


cambiato.

Assert(ObjName:SlotName);

3) Si inizia il forward chaining.

ForwardChain(GoalName, RuleSet);

Se non si vogliono specificare goal si usa NULL al posto di


GoalName.

Esempio1:
Regola (BadElecSys):

Per attivare il forward chaining (nell'interprete KAL):


35 Tools AI
=> MarysCar: Battery=Low;
Low

=> Assert(MarysCar,Battery);
TRUE

=>ForwardChain(NULL,GoodElecSys,BadElecSys
);
FALSE

=>

Dopo questo comando si ottiene:

MarysCar:Battery ==> valore Low


MarysCar:ElectricalSystem ==> valore Bad

Utilizzare dei Goals

I goals devono esprimere un test che ritornera` come


valore TRUE se il goal ha successo.

I goals possono contenere esplicite coppie Oggetto: Slot


ed operatori di confronto quali:

#= per confronto di stringhe;


per confronto numerico:
==
<=
>=.

36 Tools AI
Backward Chaining

Richiede sempre la definizione di un goal da cui partire.

Si puo' attivare o dal KAL interprete (funzione


BackwardChain), dal Rule Trace (Control menu), o dal
Inference Browser (Step Mode Option).

L'inference browser mostra graficamente il processo di


ragionamento sia in backward che in forward chaining
(settaggio di dimensioni e colori).

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

Definizione del goal:

Name:

Turnover?

Body:

MarysCar: EngineTurnover #= Brisk;

Definizione del Rule Set

(nell'interprete KAL)

MakeSlot(Global,
EngRules,BriskTurnover,NoTurnover,
SluggishTurnover,CalculateAge);

38 Tools AI
Visualizzazione del processo di Backward Chaining

Si puo' attivare e visualizzare il procedimento mediante


l'Inference Browser, scegliendo l'opzione Step mode
(oppure si puo` attivare dal Rule Trace Window).

Nel campo Arguments si inserisce:

Turnover?, Global:EngRules

Prima prova con la regola (BreadthFirst search):

BriskTurnover:

Deve chiedere i valori delle premesse perche' non sono


conseguenze di alcuna regola che puo' diventare vera e
non sono ancora determinati nella base di conoscenza.

MarysCar: IgnitionKey

(risposta ON)

MarysCar: ElectricalSystem

(risposta GOOD)

Risposta: TRUE

La variabile [NOASK]

Si deve inserire in Arguments:

[NOASK],Turnover?, Global:Eng

Risultato NULL perche` si e` inibita la richiesta di valori


all'utente.

39 Tools AI

Potrebbero piacerti anche