Introduzione a Clips (C Language Integrated Production System) Università degli Studi di Brescia Facoltà di Ingegneria Elettronica Dipartimento di Elettronica.

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

Programmazione ad oggetti
Interazione Uomo - Macchina
Recupero debito quarto anno Primo incontro
Procedure e funzioni A. Ferrari.
PHP.
I linguaggi di programmazione
Linguaggi di programmazione
Ogni PC, per iniziare a lavorare, ha bisogno di un sistema operativo. Infatti questo è il primo programma che viene eseguito e che permette all'utente.
CONOSCIAMO IL WINDOWS '95.
Type Checking (1° parte)
Differenze nei vari linguaggi di Elisa Trifirò e Barbara Tacchino
1 Il punto di vista Un sistema è una parte del mondo che una persona o un gruppo di persone, durante un certo intervallo di tempo, sceglie di considerare.
Generazione di Piani attraverso Grafi di Pianificazione
Time Sharing Il termine “Time Sharing” proviene dall'inglese e significa letteralmente “partizione di tempo”. Questa è una tecnica sviluppatasi negli.
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Il Software: Obiettivi Programmare direttamente la macchina hardware è molto difficile: lutente dovrebbe conoscere lorganizzazione fisica del computer.
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
eliana minicozzi linguaggi1a.a lezione2
Ricerca della Legge di Controllo
Gestione di Progetti Software 2 (A.A. 2004/2005) - Lezione 2 1 JAVA: obiettivi di progetto del linguaggio Nota storica: Il linguaggio JAVA (inizialmente.
Struttura dei sistemi operativi (panoramica)
La Riflessione computazione Elisa Ferrando. Cos è la Riflessione La Riflessione Sistema riflessivo Sistema computazionale.
CAPITOLO 2 INTRODUZIONE AL LINGUAGGIO JAVA E ALL'AMBIENTE HOTJAVA.
nome: sequenza di caratteri usata per denotare un oggetto
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Windows Sistema operativo con interfaccia grafica per PC IBM compatibili (varie versioni dal 95) La gestione dei file viene fatta secondo le modalità.
A.Natali DL Maggio1999 Oggetti Concetti fondamentali.
Corso di PHP.
DBMS ( Database Management System)
Per costruire unapplicazione occorre compilare il file (o i file se più duno) che contengono il testo del programma (file sorgente) Il risultato sono uno.
Sistemi a Regole Ettore Colombo 13 Dicembre 2006 Ingegneria della Conoscenza e Sistemi Esperti.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Modulo 7 – reti informatiche u.d. 3 (syllabus – )
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
Università degli Studi di Bari Laurea in Chimica Di spense di Informatica - Dott. F. Mavelli Programmare in Matlab Funzioni di Libreria Funzioni definite.
PROGRAMMARE IN C Un ambiente di sviluppo `e un software che serve per scrivere ed eseguire programmi. Generalmente integra almeno 3 funzionalita’: Editor:
Un esempio: Calcolo della potenza n-esima di un numero reale
Il Sistema Operativo (1)
Di Luca Santucci 5° Programmatori
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
File e Funzioni Si possono distinguere tre tipi di file che vengono utilizzati in MATLAB: M-file: hanno estensione .m e in essi vengono memorizzati i.
I processi.
Lezione 1 Panoramica sui paradigmi di programmazione
Microsoft Access Maschere (II).
Introduzione a Javascript
Indice argomenti Installazione e configurazione
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
TW Asp - Active Server Pages Nicola Gessa. TW Nicola Gessa Introduzione n Con l’acronimo ASP (Active Server Pages) si identifica NON un linguaggio di.
Microsoft Access Chiavi, struttura delle tabelle.
Concetti Fondamentali sulla Programmazione
AOT Lab Dipartimento di Ingegneria dell’Informazione Università degli Studi di Parma Intelligenza Artificiale Rappresentazione della Conoscenza e Ragionamento.
1 Macchine astratte, linguaggi, interpretazione, compilazione.
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
Internetworking V anno.
Esercitazione no. 4 EXCEL II Laboratorio di Informatica AA 2009/2010.
Informatica e Informatica di Base
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
Eprogram informatica V anno.
Cloud Tecno V. Percorso didattico per l’apprendimento di Microsoft Access 4 - Le maschere.
Microsoft Access Filtri, query. Filtri Un filtro è una funzione che provoca la visualizzazione dei soli record contenenti dati che rispondono a un certo.
Programmazione orientata agli Oggetti Introduzione a Java.
Introduzione alle Classi e agli Oggetti in Java 1.
I L SO MS DOS … una breve guida…. C OS ’ È UN S ISTEMA OPERATIVO Un sistema operativo (SO) è un insieme di programmi che agisce come intermediario tra.
Transcript della presentazione:

Introduzione a Clips (C Language Integrated Production System) Università degli Studi di Brescia Facoltà di Ingegneria Elettronica Dipartimento di Elettronica per l’Automazione

Che cosa è Clips?  Clips è un expert system tool sviluppato dal Software Technology Branch (STB), NASA / Lyndon B. Johnson Space Center. Fin dalla sua prima release del 1986,Clips è stato sottoposto continuamente a raffinamenti e miglioramenti. Attualmente è usato da migliaia di utenti in tutto il mondo.

Clips è un tool per lo sviluppo e la distribuzione di sistemi esperti che fornisce un ambiente completo per la costruzione di sistemi esperti basati su regole e/o oggetti. Più precisamente, è un linguaggio per la costruzione di sistemi di produzione. Clips è un tool per lo sviluppo e la distribuzione di sistemi esperti che fornisce un ambiente completo per la costruzione di sistemi esperti basati su regole e/o oggetti. Più precisamente, è un linguaggio per la costruzione di sistemi di produzione. E’ Sistema di Produzione di tipo Forward Chainer E’ Sistema di Produzione di tipo Forward Chainer Portabile dal Cray al Pc Portabile dal Cray al Pc Integrabile a basso costo dall’esterno con nuove funzionalità Integrabile a basso costo dall’esterno con nuove funzionalità Scritto in C(C Language Integrated Production System) Scritto in C(C Language Integrated Production System) Sintassi LISP-like Sintassi LISP-like

Caratteristiche principali è Rappresentazione della conoscenza è Portabilità è Integrazione con altri ambienti ed Estensibilità è Sviluppo interattivo è Verifica e Validazione è Documentazione estesa

Rappresentazione della conoscenza  Clips fornisce un tool integrato per la gestione di un’ampia varietà di tipi di conoscenza mediante il supporto di tre differenti paradigmi di programmazione: . programmazione basata su regole . programmazione orientata agli oggetti . programmazione procedurale

1.Programmazione basata su regole  La programmazione basata su regole consente di rappresentare la conoscenza in modo euristico (basata sull’esperienza). Le regole specificano un insieme di azioni da eseguire in una determinata situazione.

2.Programmazione orientata agli oggetti  La programmazione orientata agli oggetti permette di modellare sistemi complessi sotto forma di componenti modulari che possono essere facilmente riutilizzati in altre applicazioni o per creare ulteriori nuovi componenti. Sono supportate: classi, message handlers, astrazione, incapsulamento, eredità multipla, polimorfismo. Le regole possono fare pattern-matching sia su oggetti che su fatti.

3.Programmazione procedurale  Le possibilità di programmazione procedurale erogate da Clips sono simili a quelle fornite dal C, Pascal, Ada e Lisp.  E’ possibile sviluppare software usando solo regole, solo oggetti od una miscela di entrambe le cose.In tal senso Clips è un ottimo tool per la programmazione dei metodi di ricerca classici dell’intelligenza artificiale (sistemi di produzione, alberi di decisione, grafi and/or).

Portabilità  Clips è scritto in C. Questo fatto consente portabilità ed efficienza. Clips è stato installato su molte differenti piattaforme senza che sia stato necessario intervenire sul codice!(PC,Mac,Sun…).Di Clips esistono i sorgenti, pubblici, che possono venire modificati e/o adattati per venire incontro a specifiche necessità.

Integrazione con altri ambienti ed Estensibilità (1)  Clips può venire incorporato in altri programmi scritti in modo procedurale; può cioè venire invocato come se fosse una subroutine. Quindi, oltre ad essere usato come ambiente stand-alone, Clips può essere chiamato da un linguaggio procedurale, eseguire le sue funzioni, e poi ritornare il controllo al programma chiamante.

Integrazione con altri ambienti ed Estensibilità (2)  Viceversa, codice procedurale può essere definito sotto forma di funzioni esterne chiamabili da Clips. Quando il codice esterno completa l’esecuzione, il controllo ritorna a Clips.

Sviluppo interattivo(1)  La versione standard di Clips fornisce un ambiente di sviluppo interattivo, orientato al testo; sono inclusi:  supporto al debugging  help on line  un editor integrato

Sviluppo interattivo(2)  In particolare è stato sviluppato un ambiente fornito di menu pull-down,editor integrato e supporto per le finestre multiple per i seguenti ambienti:  Apple Macintosh  Microsoft Windows  X Window (ambiente Unix)

Verifica e Validazione(1)  Clips incorpora un certo numero di caratteristiche adatte a supportare la verifica e la validazione di sistemi esperti; in particolare:  supporto per la progettazione modulare e per il partizionamento di basi di conoscenza

Verifica e Validazione(2)  controllo statico e dinamico sui vincoli ai quali sono sottoposti i valori degli argomenti di funzione e degli slots di un template  analisi semantica dei patterns delle regole per determinare se delle inconsistenze potrebbero impedire ad una data regola di scattare oppure di generare un errore.

Documentazione estesa  Clips è dotato di un tutorial (User’s Guide), di un manuale di riferimento (Basic Prog. Vol.I),di un manuale per la programmazione avanzata (Advanced Prog. Vol.II), di un manuale all’uso delle interfacce utente per vari ambienti (Interfaces Vol.III). Tutti i manuali sono scritti in inglese.

Storia di Clips(1)  Le origini di Clips risalgono al 1984 presso il centro spaziale statunitense Lyndon B. Johnson della NASA.In quel momento, la Sezione Intelligenza Artificiale AIS aveva sviluppato una dozzina di prototipi di applicazioni per la produzione di sistemi esperti, impiegando lo stato dell’arte sia hardware che software.

Storia di Clips(2)  Comunque, nonostante fosse ormai ampiamente stata dimostrata l’utilità dei sistemi esperti, poche di queste applicazioni furono impiegate in pratica. Questo fallimento nel produrre tecnologia basata su sistemi esperti compatibile con le specifiche della NASA fu attribuito all’uso del lisp come linguaggio base per quasi tutti i tools di sviluppo prodotti fino a quell’epoca.

Storia di Clips(3)  Tre problemi ostacolarono l’impiego di sistemi per la produzione di sistemi esperti basati sul lisp alla NASA:  la scarsa disponibilità del lisp su un’ampia varietà di computers convenzionali;  l’alto costo di tools lisp e dell’hardware;   la scarsa integrazione del lisp con altri linguaggi rendendo difficile l’incorporazione in applicazioni convenzionali.

Storia di Clips(4)  L’ AIS capì che l’uso di un linguaggio tradizionale come il C avrebbe eliminato o fortemente ridotto questi problemi. Peraltro in quell’epoca alcune software house stavano iniziando a convertire i propri tools di sviluppo in linguaggio C, ma il prezzo di tali strumenti era veramente alto. Così si decise di sviluppare in proprio un ambiente adatto.

Storia di Clips(5)  La versione prototipale di Clips è stata sviluppata nella primavera del 1985 in due mesi. Un anno di sviluppo e un sistematico uso all’interno del gruppo hanno portato alla prima versione rilasciata all’esterno della NASA, la versione 3.0, nell’estate del 1986.

Storia di Clips(6)  Originariamente, l’unico paradigma per la rappresentazione della conoscenza era basato su regole ed un motore di inferenza forward chainer. L’algoritmo centrale era ed è ancora il RETE.E’ dalla versione 5.0 che disponiamo di due nuovi paradigmi aggiuntivi:

Storia di Clips(7)  programmazione procedurale (come in C)  programmazione orientata agli oggetti (come in Smalltalk)  L’estensione del linguaggio fornita per la programmazione orientata agli oggetti viene detta Clips Object Oriented Language (COOL).

Storia di Clips(8)  Clips (oggi alla versione 6.1) è attualmente impiegato con successo da molte organizzazioni, in particolare presso tutti i dipartimenti della NASA, in alcuni settori militari, in molti uffici federali, università, compagnie private. Ufficialmente rilasciato a più di utenti al giugno del 1993, deve avere conosciuto una diffusione notevole in tempi recenti grazie ad Internet

Regole di produzione(1)  Clips è un sistema di produzione. Le regole sono ampiamente utilizzate nei sistemi esperti. Esprimono la conoscenza euristica che l’ingegnere della conoscenza è riuscito a catturare dall’esperto di dominio.

Regole di produzione(2)  (defrule il-motore-va-bene  (stato-di-funzionamento motore normale)  =>  (assert (azioni-da-intraprendere non- servono-riparazioni))  Alcune parti della regola sono a scelta del progettista.

Regole di produzione(3)  Le regole solitamente inducono un tipo di inferenza diretto dai patterns.Un pattern è un insieme di condizioni contemporaneamente vere. Una miscela di presenze e/o assenze.  Rilevata la presenza di un qualche pattern nell’informazione disponibile, le regole usano quell’informazione per cercare di risolvere il problema; propagano le conclusioni di ogni regola, ritrattano le conclusioni, fanno insomma del ragionamento.

Architettura di un sistema di produzione  Alla base di un sistema di produzione basato su regole vi sono:  la base delle regole, detta anche rules-list  un interprete, in grado di applicare le regole producendo azioni  gli specifici fatti attuali (dati dinamici, o run-time data, o dynamic-facts), detta anche facts-list

La base delle regole(1)  Contiene la conoscenza permanente sotto forma di regole di produzione.  if condizione_1 Antecedente  and condizione_2 Left-Hand Side  and.... (LHS)  and condizione_m  then azione_1 Conseguente  and azione_2 Right-Hand Side  and.... (RHS)  and azione_n

La base delle regole(2)  Le azioni contenute nell’RHS solitamente implicano cambiamenti alla memoria dinamica, ad esempio aggiungendo, cancellando o modificando elementi in essa contenuti.  Antecedente e conseguente possono condividere delle variabili.

Memoria dinamica(1)  Contiene pezzi di conoscenza temporanea (problem-dependent), detti dati dinamici.  In generale, la memoria dinamica contiene informazioni derivate dall’applicazione  delle regole di produzione e/o informazioni introdotte dall’utente al momento  dell’esecuzione.

Memoria dinamica(2)  Le informazioni sono di solito memorizzate sotto forma di:  coppie attributo - valore  Es:Capacità Respiratoria litri  triple oggetto - attributo - valore  Es:Paziente X - Capacità Respiratoria litri  un oggetto con un numero di coppie attributo - valore  Paziente Y - Peso - 72 chilogrammi  Altezza centimetri  Capacità Respiratoria litri

L’interprete(1)  L’interprete decide se una regola è applicabile o meno tentando di trovare una compatibilità (match) tra i suoi antecedenti ed i fatti contenuti nella memoria dinamica.  Se tutte le condizioni contenute nell’LHS incontrano lo stato dei fatti attuali, allora la regola è applicabile.

L’interprete(2)  A volte, più di una regola è applicabile nel medesimo momento. Allora l’interprete  attiva la risoluzione del conflitto per scegliere quale regola eseguire di volta in volta.  L’ordine col quale vengono impiegate le regole può essere fondamentalmente di due tipi:   propagazione in avanti (Forward chaining)   propagazione all’indietro (Backward chaining)

Forward Chaining(1)  Il forward chainer propaga le conseguenze della base dei fatti attuali  Le regole sono usate in modo if => then (procediamo dall’antecedente al conseguente)  Il matching avviene sull’LHS  Compie una sintesi  Io descrivo una situazione, una premessa (reagenti) lui sintetizza le conseguenze (prodotto della reazione)

Forward Chaining(2)  E’ fact-driven  Le regole si comportano come operatori di implicazione  Genera gli effetti, date le cause (esamina una situazione)  Adatto alla simulazione (problemi di planning, evoluzione di un sistema)  Adatto al controllo (sorveglianza di un processo)

Backward Chaining(1)  Il backward chainer insegue una ipotesi  E’ goal driven  E’ deduttivo  Le regole sono usate in modo then = >if (procediamo dal conseguente all’antecedente)  Il matching avviene sull’RHS  Compie una analisi

Backward Chaining(2)  Io indico un risultato (prodotto della reazione) lui cerca di determinare le cause (reagenti)  Le regole si comportano come operatori di riduzione di un problema in sottoproblemi  I fatti della base dei fatti sono visti come i problemi primitivi  E’adatto alla diagnosi (ricerca di un guasto, approfondimento di una ipotesi,identificazione di qualcosa)

Esempio: Diagnosi medica (1) deffacts fatti( febbre nausea nausea occhi.gialli occhi.gialli bevuta.acqua.di.pozzo.in.paese.tropicale bevuta.acqua.di.pozzo.in.paese.tropicale ) defrules regole( if occhi.gialli nausea nausea then fegato.sospettato then fegato.sospettato

Esempio: Diagnosi medica (2) if fegato.sospettato if fegato.sospettato bevuta.acqua.di.pozzo.in.paese.tropicale bevuta.acqua.di.pozzo.in.paese.tropicale then epatite.probabile then epatite.probabile if epatite.probabile if epatite.probabile febbre febbre transaminasi.alta transaminasi.alta then epatite.certa then epatite.certa if febbre if febbre catarro catarro then bronchite.probabile ) then bronchite.probabile )

Esempio: Diagnosi medica (3) il medico chiede di esaminare la situazione: il medico chiede di esaminare la situazione: forward(fatti,regole) forward(fatti,regole) e ricava: e ricava: epatite.probabile epatite.probabile il medico propone la seguente interrogazione: il medico propone la seguente interrogazione: backward(epatite.probabile,regole) backward(epatite.probabile,regole) e riceve l’istruzione: chiedi all'utente l'esame delle transaminasi chiedi all'utente l'esame delle transaminasi

Evoluzione Sistema (1) Una volta scatenata, l’evoluzione del sistema si muove da uno stato iniziale verso uno stato stabile finale. La rappresentazione di un S. può essere data da:  R(t) -> insieme di regole visibili all’istante t  F(t) -> insieme di fatti visibili all’istante t Ad ogni istante la coppia [ R(t), F(t) ] è univocamente definita. All’istante 0 il sistema si trova nello stato iniziale S[i].

Evoluzione Sistema (2) La dinamica di un S. può essere così rappresentata:  All’istante t < 0 il sistema è in uno stato quiescente, SQ(0), stabile  All’istante t = 0 il sistema riceve in ingresso uno stimolo che può essere:  un comando di esecuzione  un nuovo fatto (risposta ad una domanda;  la variazione di un parametro esterno oggetto di misura)

Evoluzione Sistema (3) lo stimolo da origine ad un nuovo stato, S, instabile  All’istante t > 0 il sistema evolve verso il prossimo stato di quiescenza L’evoluzione può essere di tipo: - forward - backward - backward  All’istante T > t > 0 il sistema è in uno stato quiescente, SQ(T), stabile

Evoluzione Sistema (4) Definiamo stato finale S[f] uno stato che: contiene, sotto forma di fatti, informazioni ritenute complessivamente la soluzione di un problema contiene, sotto forma di fatti, informazioni ritenute complessivamente la soluzione di un problema l’ultimo stato raggiungibile (esaurimento degli stimoli) l’ultimo stato raggiungibile (esaurimento degli stimoli)

Evoluzione Sistema (5)  Quindi: dato uno stato iniziale, S[i], il sistema evolve, pilotato da eventuali stimoli oltre quello di avvio, verso uno stato finale, S[f], attraversando stati instabili.

Risoluzione conflitti(1) Definiamo conflict set l’insieme di regole (almeno due) che possono essere applicate contemporaneamente. Definiamo conflict set l’insieme di regole (almeno due) che possono essere applicate contemporaneamente. Come decidiamo quale regola eseguire: Come decidiamo quale regola eseguire:  ordinality applicare la prima regola che si incontra nella base delle regole applicare la prima regola che si incontra nella base delle regole

Risoluzione conflitti(2)  refractoriness non applicare la stessa regola sugli stessi dati (il meccanismo default di Clips; modificabile) non applicare la stessa regola sugli stessi dati (il meccanismo default di Clips; modificabile)  recency applicare la regola che soddisfa i fatti entrati più recenti applicare la regola che soddisfa i fatti entrati più recenti  specificity applicare la regola più specifica (ad es. quella con più condizioni, etc.) applicare la regola più specifica (ad es. quella con più condizioni, etc.)

L’ambiente Clips  Clips è disponibile su Internet già compilato per vari ambienti.  Dopo l’avvio appare il command prompt: Clips (V /01/98) Clips (V /01/98) Clips> Clips>  Una volta in Clips, i comandi possono essere inseriti direttamente dopo il command prompt  In Clips, ogni comando, regola, fatto, etc. deve possedere un numero di parentesi sinistre e destre correttamente bilanciate!

Finestre(1)  In Clips, si possono richiamare svariate finestre.  Dialog window  E’la finestra principale; in essa vengono inseriti i comandi, come (clear) o (run).  Questa finestra può essere impiegata anche per inserire vari costrutti come fatti e regole che danno vita ad un sistema di produzione.  Ma nel caso di estese basi di regole, conviene memorizzare tutti i fatti necessari e tutte le regole in un file che può essere salvato e poi caricato in ogni momento.

Finestre(2)  Facts window  elenca i fatti attivi nella facts-list. Ogni fatto è preceduto da una etichetta numerica, che lo identifica univocamente. E’ possibile rimuovere un fatto mediante la sua etichetta.  Agenda  contiene l’elenco delle regole che sono pronte a scattare, regole cioè che trovano nella facts-list i fatti necessari e sufficienti a soddisfare i patterns espressi nei loro LHS.

Finestre(3)  altre finestre  sono disponibili per visionare le istanze di classi (oggetti), i dati globali, etc.  Quando un programma viene eseguito, le regole e i fatti contenuti in esso vengono caricati e memorizzati nell’ambiente Clips. Se si desidera eseguire un nuovo programma, le regole ed i fatti precedentemente resi attivi possono interferire col nuovo programma!  Prima di caricare un nuovo eseguibile è quindi ogni volta necessario dare il comando (clear).

Esecuzione programma(1)  Per caricare un eseguibile, rendere attiva la finestra Dialog; quindi utilizzando il menu pull-down sotto la voce File, selezionare l’opzione Load...  Il contenuto del file verrà caricato in Clips e quindi verrà presentata la Dialog window con un elenco delle regole (defrules) e dei fatti (deffacts) che sono stati definiti (Clips fa questo per evidenziare eventuali errori che potrebbe incontrare).

Esecuzione programma(2)  Se Clips carica con successo il programma, alla fine emette un TRUE,altrimenti un FALSE.  Per eseguire il programma, al prompt battere (reset) e, quindi battere (run) e ; per rieseguire il programma, ridare prima il comando (reset).  Prima di caricare un nuovo programma, ridare un (clear). Per interrompere un programma in corso di esecuzione, dare un command.

Fatti (assert ( ))  Per vedere i fatti, dare il comando: (facts)  Il comando (reset) pone automaticamente nella facts-list il fatto (initial-fact). Può essere usato come fatto per l’innesco delle regole che devono agire per prime (ad esempio per compiere le inizializzazioni, per presentare il programma all’operatore, etc.)

Regole(1) ( defrule [ ] [proprietà-della-regola] [proprietà-della-regola] * * => => * * ) Gli elementi (se più di uno) contenuti nel LHS sono legati da impliciti and logici. Gli elementi (se più di uno) contenuti nel LHS sono legati da impliciti and logici.

Regole(2) Es: (defrule trattamento_infarto "trattamento basato sull’esperienza" (declare (salience 99)) (declare (salience 99)) (Rossi rischio_di_infarto si) (Rossi rischio_di_infarto si) (Rossi già_infartato si) (Rossi già_infartato si) => => (assert (Rossi dare trinitrina))) (assert (Rossi dare trinitrina)))  Le proprietà della regola servono ad esempio a fissarne la priorità(salience)

Pattern Matching Il pattern che fa attivare la regola è dato dalla compresenza di K fatti con K=1..n La regola sintetizza un nuovo fatto, inserendolo nei fatti Nel pattern, Una variabile inizia con un ? Si noti che le variabili non possono mai essere il primo campo di un fatto. Clips cerca di legare (bind) le variabili ai corrispettivi campi dei fatti.

Comandi fondamentali(1) (watch) (watch) Il suo formato generale è: (watch ) Serve a monitorare il comportamento in fase di esecuzione. Es: (watch compilations | rules | facts) E’ anche reperibile come voce sotto il menu Commands La sua inversa è (unwatch ) Es: (unwatch all)

Comandi fondamentali(2) (reset) (reset)  Funzione senza valore di ritorno. Rimuove tutte le attivazioni dall’agenda, tutti i fatti dalla lista dei fatti, tutte le istanze delle classi definite dall’utente, assegna alle variabili globali i loro valori iniziali, inserisce nella base dei fatti tutti i fatti elencati nei costrutti deffacts, crea tutte le istanze elencate nei costrutti definstances, pone a MAIN il modulo attivo e focalizza sul medesimo modulo.

Comandi fondamentali(3) (clear) (clear)  Funzione senza valore di ritorno. Rimuove tutti i costrutti e tutte le strutture dati (come i fatti e le istanze di classi). Alcuni costrutti, comunque, non possono essere rimossi mentre sono in uso; ad esempio non è possibile rimuovere un deffacts dopo un (reset).

Comandi fondamentali(4) (run) (run)  Il suo formato generale è: (run [intero- opzionale])  Se il numero opzionale è positivo allora specifica che l’esecuzione deve cessare dopo che quel numero di regole è scattato (se l’agenda delle attivazioni non si è già svuotata); quindi (run 1) esegue una sola regola.  Se il numero è negativo o non specificato allora l’esecuzione termina quando l’agenda è vuota.

Lo stack  Clips cicla attraverso tutte le regole nell’ ordine con cui sono state introdotte nella base delle regole; ogni volta che incontra una regola che è soddisfatta la pone in cima allo stack.Le ultime regole entrate sono quelle in cima allo stack. Quindi, l’ordine di attivazione è di tipo LIFO.Quando Clips raggiunge la fine dell’elenco di tutte le possibili regole, allora la regola in cima allo stack viene estratta (pop) ed eseguita, e le sue conseguenze inserite nella memoria dinamica.

Fatti complessi(1) Si possono creare fatti più complessi in Clips utilizzando il costrutto deftemplate: Si possono creare fatti più complessi in Clips utilizzando il costrutto deftemplate:  ( deftemplate [ ]  *  )  ::= (slot ) | (multislot )

Fatti complessi(2) (deftemplate paziente (multislot generalità) (slot età) (slot sesso) (slot volume-respiratorio)) (assert (paziente (generalità Daniele Raimondi) (età 25) (sesso maschio) (volume-respiratorio 5.2)))

La priorità  Clips possiede la keyword salience per fissare la priorità relativa, con un range compreso tra  e (valore default = 0).  Le regole con salience maggiore scattano prima di quelle con salience inferiore.  La salience modifica l’ordine di estrazione dallo stack delle regole pronte a scattare.

Fasi e fatti controllanti(1)  Il controllo di un programma può essere gestito mediante fatti che segnalano quale parte (fase) del programma dovrebbe essere eseguita.  Questi fatti permettono di pilotare la struttura di controllo del programma,mediante informazione opportunamente incorporata dentro le regole del dominio di conoscenza.

Fasi e fatti controllanti(2)  Tutto questo si ottiene incorporando nel LHS di ogni regola una condizione che indica la sua applicabilità in una determinata fase.  Quindi si scrivono opportune regole per trasferire al momento opportuno il controllo tra differenti fasi.  In questo modo le regole scattano solo se la propria fase è quella attiva (ogni regola  possiede una condizione che specifica la propria fase di appartenenza).

Moduli(1)  La conoscenza, in Clips, può venire partizionata in moduli mediante il costrutto  defmodule  (defmodule [ ])  Di default, Clips definisce un modulo MAIN  I costrutti nuovi vengono sempre piazzati nel modulo corrente.

Moduli(2)  All’avvio di Clips il modulo corrente è MAIN.  Ogni volta che si definisce un nuovo modulo esso diviene il modulo corrente (modulo attivo).  Il modulo nel quale si vuole porre un costrutto può anche essere specificato nel nome del costrutto, rendendo di fatto quel modulo il modulo attivo.

Incertezza(1) L'incertezza si verifica quando non si è assolutamente certi riguardo un pezzo di informazione.Il grado di certezza è rappresentato da un valore numerico float su una scala tra 0 e 1(1 rappresenta la certezza che quel fatto è vero). Un fatto in FuzzyClips ha la seguente forma : L'incertezza si verifica quando non si è assolutamente certi riguardo un pezzo di informazione.Il grado di certezza è rappresentato da un valore numerico float su una scala tra 0 e 1(1 rappresenta la certezza che quel fatto è vero). Un fatto in FuzzyClips ha la seguente forma : ((fact) [CF Certainty Factor]) ((fact) [CF Certainty Factor]) Se il CF è omesso si assume che sia 1. Se il CF è omesso si assume che sia 1.

Incertezza(2) Il fattore di certezza può essere associato anche ad intere regole. Il fattore di certezza può essere associato anche ad intere regole. (defrule rule_name (defrule rule_name (declare (CF x.x)) (declare (CF x.x)) (fact) (fact) => => (assert (fact)) (assert (fact)) ) La valutazione di una regola dipende da molti fattori differenti. La valutazione di una regola dipende da molti fattori differenti.

Incertezza(3) Nel caso più semplice Nel caso più semplice If A then C CF(i)=fattore di certezza della regola If A then C CF(i)=fattore di certezza della regola A' CF(f)=fattore di certezza del fatto A' CF(f)=fattore di certezza del fatto A'=il matching fact nel database A'=il matching fact nel database C’ CF(c)=fattore di certezza della C’ CF(c)=fattore di certezza della conclusione conclusione C'=l'attuale conseguente calcolato C'=l'attuale conseguente calcolato

Incertezza(4) Se C' è uguale a C allora CF(c)=CF(i)*CF(f) Se C' è uguale a C allora CF(c)=CF(i)*CF(f) Se la regola ha conseguenti multipli,si può immaginare la regola suddivisa in tante sottoregole quanti sono i conseguenti e ogni conseguente ha lo stesso fattore di certezza CF(c)=CF(i)*CF(f). Se la regola ha conseguenti multipli,si può immaginare la regola suddivisa in tante sottoregole quanti sono i conseguenti e ogni conseguente ha lo stesso fattore di certezza CF(c)=CF(i)*CF(f). Se la regola ha antecedenti multipli, il/i conseguente/i ha/hanno un fattore di certezza CF(c)=(min(CF(f1),CF(f2),.....,CF(fn))*CF(i) Se la regola ha antecedenti multipli, il/i conseguente/i ha/hanno un fattore di certezza CF(c)=(min(CF(f1),CF(f2),.....,CF(fn))*CF(i)

Dove trovarlo? Gli eseguibili,la documentazione e il codice sorgente di Clips sono disponibili per il download alla pagina: Gli eseguibili,la documentazione e il codice sorgente di Clips sono disponibili per il download alla pagina: Altro materiale riguardante Clips lo si può trovare alla pagina: 4 repository/ai/areas 4 repository/ai/areas/expert/systems/clips/