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.