CLIPS: Un Sistema Esperto per la Simulazione ed il Design

Transcript

CLIPS: Un Sistema Esperto per la Simulazione ed il Design
CLIPS: Un Sistema Esperto a supporto della Simulazione e della Progettazione
di
Giovanni Adami
Software Engineer
Società Italiana Avionica (SIA)
[email protected]
Introduzione
Le aree dove oggi l’Intelligenza Artificiale (IA) ha più successo come disciplina applicata, sono
quelle che richiedono solo conoscenza specialistica senza l’ausilio di buon senso. Migliaia di
programmi chiamati sistemi esperti, sono oggi di uso quotidiano in tutti i campi dell’industria e
dell’amministrazione. Ciascuno di questi sistemi cerca di risolvere in parte, o a volte integralmente,
un problema pratico e importante che in precedenza necessitava solo di una conoscenza umana
limitata e specialistica.
Affinché tali sistemi possano trovare una soluzione a questo tipo di problemi, hanno bisogno di
accedere ad una notevole base di conoscenza sul dominio, che deve essere costruita nel modo più
efficiente possibile. I linguaggi convenzionali di programmazione come il C, il Fortran ed altri
ancora, sono stati progettati e ottimizzati per l’elaborazione procedurale dei dati. Poichè gli esseri
umani spesso risolvono problemi complessi usando verbi astratti e approcci simbolici, generalmente
i linguaggi convenzionali non rappresentano lo strumento più consono per risolvere questo tipo di
problematiche. Infatti, i tentativi di modellare queste informazioni astratte con i linguaggi
convenzionali richiedono normalmente uno sforzo di programmazione notevole per la
trasformazione dell’informazione in un formato utilizzabile con i paradigmi della programmazione
procedurale.
Un importante risultato raggiunto dalla ricerca nel campo dell’IA, è stato lo sviluppo di tecniche che
permettono di modellare l’informazione con un alto livello di astrazione. Queste tecniche sono
racchiuse in alcuni tipi di linguaggi o di strumenti, che consentono ai programmi prodotti mediante
il loro utilizzo, di essere molto vicini a rappresentare la logica umana e di essere facilmente
sviluppati e manutenuti. La disponibilità di uno strumento per lo sviluppo di sistemi esperti come il
CLIPS, ha notevolmente ridotto lo sforzo e i costi richiesti per il loro sviluppo1.
Cosa è CLIPS
Il C Language Integrated Production System (CLIPS) è sostanzialmente uno strumento per lo
sviluppo di “Sistemi Esperti” e fornisce un ambiente completo per la costruzione di regole e/o
oggetti sui quali si basano i sistemi esperti. La prima versione prototipo di CLIPS è stata sviluppata
nel 1985 nei laboratori del NASA’s Johnson Space Center. Le sue caratteristiche sono:
1. Motore Inferenziale: CLIPS è dotato di un motore inferenziale che utilizza lo standard
forward-chaining2. Inoltre supporta l’aggiunta dinamica di regole, il controllo di vincoli
statici e dinamici e la personalizzazione di strategie di risoluzione dei conflitti;
1
Intelligenza Artificiale Seconda Edizione, E. Rich, K.Knight, McGraw-Hill, 1992.
Lo scopo di una procedura di ricerca è determinare, all’interno dello spazio del problema, un cammino da una
configurazione iniziale ad uno stato obiettivo. Ci sono in realtà due direzioni in cui tale ricerca può procedere: in avanti
(forward-chaining), partendo dagli stati iniziali, e all’indietro (backward-chaining), partendo dagli stati obiettivo. Il
CLIPS standard supporta solo quello in avanti.
2
2. Rappresentazione della Conoscenza: CLIPS fornisce un largo numero di strumenti per
rappresentare una larga varietà di conoscenza con il supporto di tre differenti paradigmi di
programmazione: Basata su Regole, Object-Oriented e Procedurale;
3. Portabilità: CLIPS è stato scritto interamente in ANSI C per la portabilità e la velocità di
esecuzione; è stato testato su diverse piattaforme ed inoltre è fornito del codice sorgente e
quindi può essere modificato e adattato alle varie esigenze;
4. Integrazione: CLIPS può essere racchiuso all’interno di codice procedurale, può essere
richiamato come una subroutine e integrato con linguaggi come il C, Java, Fortran e Ada e
puó anche richiamare delle funzioni in C;
5. Estensibilità: CLIPS può inoltre facilmente essere esteso ed esistono già numerose
estensioni:
a. FuzzyCLIPS: è un clone di CLIPS che supporta la logica Fuzzy;
b. wxCLIPS: è un CLIPS con una libreria portabile integrata in wxWindows;
c. JESS (Java Expert System Shell): è sostanzialmente CLIPS compatibile con un
sistema basato su regole e codificato in Java;
d. CLIPS/R2: è CLIPS riscritto in C++ e totalmente compatibile con lo standard
CLIPS 6.x. Esso presenta in aggiunta l’implementazione del più veloce algoritmo di
matching (Rete II) che consente di migliorare notevolmente le performance, il
completo supporto del backward e forward chaining pattern matching (lo standard
CLIPS supporta solo il forward chaining pattern matching) ed un nuovo e più
potente ambiente integrato di sviluppo3.
6. Sviluppo Interattivo: CLIPS fornisce un ambiente di sviluppo interattivo e uno a linea di
comando, includendo anche gli aiuti di debugging, help in linea ed un editor integrato;
7. Validazione e Verifica: CLIPS include alcune caratteristiche di supporto per la verifica e la
validazione dei sistemi esperti, inoltre supporta la progettazione modulare, il
partizionamento della base di conoscenza, vincoli statici e dinamici e l’analisi semantica dei
pattern di regole. Quest’ultima è utile al fine di determinare se esistono delle inconsistenze
alla base di conoscenza in modo tale da impedire ad una regola di essere applicata o di
generare un errore;
8. Basso Costo: CLIPS è un software di pubblico dominio e pertanto è possibile copiarlo,
modificarlo, pubblicarlo, distribuirlo liberamente senza nessuna restrizione.
Il CLIPS presenta anche una serie di limitazioni che sono state elencate qui di seguito:
1. non supporta il backward chaining pattern matching. Questa caratteristica è utile per
procedure diagnostiche profonde e normalmente non dovrebbe essere necessaria per le
prime fasi di sviluppo di un sistema;
2. non è stato scritto in C++, anche se ciò non pone delle limitazioni di integrazione di CLIPS
in applicazioni sviluppate in C++;
3. non è dotato di librerie predefinite di classi e regole;
4. CLIPS non è ancora uno strumento di massa, perciò potrebbe essere non ancora
perfettamente stabile e non privo di bachi.
Molti di questi svantaggi sono stati eliminati in alcune versioni commerciali di shell di sistemi
esperti basate su CLIPS (per esempio, CLIPS/R2 di Production Systems Tech) che risultano essere
anche 50 volte più veloci di quelle sviluppate con la versione standard.
Per ulteriori informazioni su CLIPS è possibile consultare la documentazione sul sito web:
http://www.ghg.net/clips/CLIPS.html
3
Per maggiori informazioni si visiti il sito: http://www.pst.com/clips_r2.htm
L’Utilizzo di CLIPS nelle applicazioni reali
CLIPS è molto utilizzato nel settore dell’Industria e dalle organizzazioni accademiche e
governative. Esistono circa 5000 utenti registrati che fanno uso di CLIPS. La NASA, in particolare,
ha utilizzato CLIPS in un numero di progetti che spaziano nei seguenti domini:
- training di equipaggi supportato da sistemi intelligenti;
- sistemi diagnostici dello Shuttle;
- pianificazione di missione dello Shuttle;
- assistenza e controllo del volo;
- centri di controllo delle missioni – telemetria, analisi dei dati e diagnostica;
- previsioni meteorologiche;
Anche altre grosse compagnie hanno utilizzato con successo CLIPS:
- MCI Telecommunications;
- Cray research;
- Fujitsu Network Communications (software di simulazione);
- Mannesmann Mobilfunk, Germany (mobile communication).
Prenderemo ora in esame una applicazione reale in cui è stato realizzato un sistema esperto
utilizzando CLIPS.
Per facilitare la progettazione di un nuovo Jet Engine è stato sviluppato e realizzato dalla NASA
Lewis Research Center un sistema di simulazione di un propulsore chiamato Numerical Propulsion
System Simulation (NPSS)4.
Nella costruzione dell’NPSS si è tenuto conto delle diverse problematiche note in questo tipo di
progettazione e le relative soluzioni individuate sono state successivamente applicate alla
simulazione. In particolare i punti chiave esaminati sono: lo zooming, il monitoring e controllo, ed
infine il supporto all’eterogeneità.
La strategia di zooming permette l’integrazione del codice delle simulazioni ottenuto ai differenti
livelli di fedeltà. Un “Low-fidelity modelling”, cioè una modellazione con pochi dettagli, richiede
dei dati empirici che molto spesso non sono disponibili in una fase preliminare della progettazione.
Dall’altra parte un “High-fidelity modelling”, cioè una modellazione con molti dettagli, consente di
superare queste limitazioni, ma con un sostanziale aumento del costo computazionale. Lo zooming
in definitiva, permette ai componenti selezionati di essere modellati in dettaglio e integrati in una
“low-fidelity engine simulation”. Inoltre durante la simulazione low-fidelity, lo zooming fornisce un
mezzo di selettiva analisi di dettaglio del processo fisico all’interno dei componenti dell’engine.
Il prototipo del sistema di zooming è composto da tre sottosistemi: i primi due sottosistemi sono
Turbofan Engine System Simulator (TESS) e l’Application Visualization System (AVS) e sono in
esecuzione su una workstation. In particolare TESS è un simulatore del sistema di propulsione che
gira con AVS il quale fornisce un’interfaccia visuale per creare il diagramma di flusso. Il terzo
sottosistema è l’Advanced Ducted Propfan Analysis Code (ADPAC) che è un package capace di
fornire una dettagliata analisi del flusso del componente fan in un turbofan engine.
Lo strumento di monitoring permette all’utente di osservare l’avanzamento della simulazione
attraverso la visualizzazione dei parametri chiave. Un Sistema Esperto può migliorare la
simulazione monitorandola continuamente e guidandola nel momento necessario. Per la
realizzazione di un Sistema Esperto è indispensabile un insieme di conoscenza nel dominio di
applicazione del sistema stesso e un insieme di regole che guideranno la progettazione ed il
funzionamento del Jet Engine; successivamente sarà necessario integrare nella simulazione il
software che implementa il sistema esperto e che assisterà l’utente durante l’esecuzione della
simulazione.
4
Development of an Intelligent Monitoring and Control System for a Heterogeneous Numerical Propulsion System
Simulation, Abdollah A. Afjeh, Patrick T. Homer, Henry Lewandowski, John A. Reed, Richard D. Schlichting,
Cleveland State University, University of Arizona, University of Toledo, 1995.
Nella simulazione, inoltre, il codice dei componenti dell’engine ed il sistema esperto si
avvantaggiano dell’uso di una larga varietà di piattaforme parallele ed impiegano una varietà di
modelli e linguaggi. Un sistema di interconnessione permette ai vari componenti di essere eseguiti
sulla piattaforma più appropriata con il minimo sforzo da parte dell’utente e del progettista.
L’utente non deve vedere le simulazioni individuali dei vari componenti, bensì una simulazione
integrata degli stessi: ciò viene assicurato dal componente di eterogeneità.
Il sistema di Monitoring e Control, sul quale sarà posto particolare attenzione, è composto dai
sottosistemi Transportable Application Environment (TAE), un package che permette rapidamente
di passare dal prototipo dell’interfaccia grafica del Tool di monitoring alla realizzazione di
quest’ultima, dal Sistema Esperto realizzato utilizzando il linguaggio CLIPS ed infine dal sistema di
interconnessioni Schooner.
La simulazione usa il tool di monitoring per fornire all’utente ed al sistema esperto le informazioni
del simulatore del componente di high-fidelity. Basandosi su queste informazioni, il sistema esperto
fornisce all’utente dei warnings e degli errori rilevati durante la simulazione. In questa maniera il
sistema esperto sarà in grado di guidare attivamente la simulazione dell’engine.
Il sistema di Monitoring e Control fornirà all’utente le informazioni riguardo l’avanzamento della
simulazione e permetterà di introdurre delle regole per guidare il funzionamento di ADPAC e di
determinare quando sono necessarie delle nuove curve di performance.
La simulazione in esecuzione usa il tool di monitoring per fornire all’utente ed al sistema esperto le
informazioni che vengono passate dal simulatore del componente di high-fidelity. Basandosi su
queste informazioni, il sistema esperto mostra all’utente warnings ed errori ed è in grado di guidare
attivamente il simulatore di engine.
Un sistema di monitoring intelligente e controllo in questo tipo di simulazione è assolutamente
necessario in virtù della sua complessità. Un grande numero di variabili può influire sull’esito della
simulazione, e, monitorando queste variabili manualmente, l’utente sarebbe sottoposto ad un
complesso carico di lavoro ed inoltre sarebbe costretto ad un’analisi manuale dello stato del sistema
nel momento in cui tali parametri risultassero incoerenti. Tale carico di lavoro è demandato al
Sistema Esperto.
Due tipici problemi che possono derivare in una simulazione di questo tipo e che possono essere
verificati da un sistema esperto sono fisicamente delle condizioni limite non realistiche imposte su
un componente e una instabilità numerica all’interno del componente. Ad esempio un aumento della
quantità di carburante iniettato nel componente combustore dovrebbe produrre come conseguenza
un aumento di temperatura e come altro esempio il componente fan dovrebbe produrre in uscita un
aumento della pressione. Entrambi questi semplici esempi possono essere controllati da un sistema
esperto attraverso le regole che gli sono state fornite. Un esempio più complicato potrebbe essere
quello di una instabilità numerica nel componente fan. Questo può determinare la produzione di
vortici di natura numerica all'interno del flusso d'aria simulato; la loro presenza determinerebbe una
riduzione (numerica, non fisica) della massa d'aria trattata dal fan e ciò implicherebbe una
interruzione del flusso d'aria ammesso in camera di combustione prematura rispetto alla realtà; la
simulazione non sarebbe così affidabile e verrebbe previsto uno stallo anticipato.
Anche in questo caso, un sistema esperto arricchito di regole più complesse, potrebbe individuarlo
come un problema e implementare una serie di passi correttivi necessari.
Quello presentato è solo un esempio di un’applicazione reale che utilizza un sistema esperto. Molte
altre interessanti applicazioni sono state realizzate5, altre sono in fase di sviluppo ed altre sono
ancora in fase di studio. Tra i sistemi più interessanti, vanno citati sicuramente quelli realizzati per
risolvere il problema del calcolo della giusta traiettoria di un veicolo spaziale6; come sistema
5
Si
consulti
il
CLIPS
Application
Abstracts
prelevabile
al
seguente
indirizzo:
http://www.ghg.net/clips/download/documentation/abstract.pdf
6
AIAA 99-0110 Demonstration of CLIPS as an Intelligent Front-End for POST, I.A. Budianto, J.R. Olds, N.C. Baker,
Georgia institute of Technology, Atlanta, GA, 1999.
diagnostico di un engine7; per la progettazione del cockpit di un velivolo che assista il pilota nel
gestire le informazioni e lo aiuti a prendere delle decisioni8; per lo sviluppo di un sistema integrato
intelligente che supporti la progettazione di un cambio di trasmissione della potenza9; per l’analisi
delle operazioni e assistenza nelle decisione in una simulazione di pianificazione di missione per un
gruppo di velivoli10.
Sono stati presi in considerazione soltanto i casi di utilizzo di un Sistema Esperto come supporto
alla simulazione ed alla progettazione. Molteplici altri usi si potrebbero fare con tali sistemi grazie
proprio alla loro versatilità. In fondo un sistema esperto potrebbe essere visto come un “essere”
dotato di una particolare esperienza nel dominio e se vogliamo di una sua “intelligenza”.
Quest’ultima considerazione ci induce a pensare agli innumerevoli scenari di implementazioni che
sarebbero possibili con un tale sistema. Se considerassimo inoltre di incrementare la base di
conoscenza attraverso l’utilizzo ad esempio delle Reti Neurali, ciò consentirebbe al nostro Sistema
di essere dotato anche di un meccanismo di apprendimento automatico che contribuirebbe ad
aumentare la base di conoscenza e di conseguenza l’esperienza del Sistema Esperto rendendolo così
sempre più “esperto”.
Quali vantaggi si avrebbero dalla progettazione di un Flight Control System realizzato ad esempio
con l’ausilio di un Sistema Esperto e di un modello di apprendimento capace di controllare
automaticamente un velivolo in alcuni casi particolari, come ad esempio in situazioni di emergenza,
in caso di avarie, oppure in molteplici altri casi?
Ringraziamenti
Un particolare ringraziamento all’Ing. Carlo Necci e all’Ing. Carlo Alberto Pellacani per il loro
supporto tecnico aeronautico. Ringrazio inoltre la Dott.sa Caterina Marini, l’Ing. Monica Durante e
l’Ing. Marco Fabbri per gli ottimi suggerimenti nella revisione dell’articolo ed il Dott. Fabio Bello
per il suo giudizio.
7
CLIPS expert system tool: a candidate for the Diagnostic Systems engine, A. Kazarov, Yu. Ryabov, 1998. Reference:
http://atddoc.cern.ch/Atlas/Notes/108/Note108-1.html
8
Cockpit System Design for General Aviation Free Flight Using a Cognitive Engineering Approach, J. Rong, Y. Ding,
J. Valasek, Texas A&M University College Station, TX, 2003.
9
Application of artificial intelligence methods in Gear Trasmitters conceptual design, Dragan Milčić, Vojislav
Miltenović, University of Niš, 2000.
10
Eagle View: A simulation tool for wing operations, Eric A. Zahn, Kerris J.Renken, TASC University Blvd, Fairborn,
OH U.S.A., 1997.