PROGETTO E REALIZZAZIONE DI UN AGENTE INTELLIGENTE IN CLIPS/JESS
Lo scopo finale di questo modulo didattico e' arrivare alla progettazione e alla realizzazione di un agente intelligente che comprenda sia una parte reattiva che una parte deliberativa e che sia in grado di svolgere un compito abbastanza complesso.
Per raggiungere questo obiettivo e' necessaria una certa dose di familiarizzazione con il linguaggio CLIPS, un linguaggio a regole di produzione. Sia l'ambiente CLIPS che i manuali sono disponibili sulle macchine della rete didattica accedendo a D:\CLIPS
La versione piu' stabile del codice e' quella della versione 6.1.
Per avere una prima breve introduzione al linguaggio (con esempi) e' utile dare una occhiata al documento preparato qualche anno fa da Dr. Correndo e reperibile sempre sul sito accedendo al file
D:\CLIPS\clips6.04\Documentazione\ClipsFormat2
A lezione oltre ad esempi di varia natura e complessita', e' stato analizzato il problema di costruire con un linguaggio a regole forward chaining un agente che sia in grado di trovare una soluzione dato un insieme di operatori elementari e un obiettivo. In particolare e' disponibile una versione in CLIPS per la soluzione di problemi nel mondo dei blocchi. La versione fornita Block utilizza una strategia in profondita' con un livello di profondita' prefissato (ma modificabile dall'utente) .
E' disponibile per lo stesso problema dei mondo dei Blocchi anche una versione basata su iterative deepening BlockItDeep.
Sul tema della versione iterative deepening sono state realizzate alcune varianti tra cui quella sviluppata da Mapelli e Cornaz BlockItDeepMC.
Le prove effettuate a lezione hanno confermato empiricamente i risultati teorici di complessita' per cui soluzioni basate su tecniche come iterative deepening risultano molto costose quando il numero di azioni da compiere per raggiungere il goal supera la ventina.
E' stata illustrata una soluzione che cerca di risolvere il problema senza dover ricorrere a backtracking con una attenta analisi delle azioni da eseguire. La soluzione delineata a lezione e' riportata in BlocknoB.
Varianti sul tema sono state sviluppate (tra cui quella di Mapelli e Cornaz BlockDeterMC.
E' stato poi affrontato il tema dell'uso delle strategie sviluppate nella realizzazione di un agente che sappia muoversi in un labirinto di cui si assume abbia piena conoscenza a priori (ipotesi forte che semplifica il problema in modo determinante). Sono state individuate sia soluzioni che utilizzano strategie che garantiscono la completezza (tipo iterative deepening) che soluzioni basate su criteri euristici e locali. nella seconda categoria ricadono le soluzioni LabirintoMC (sviluppata da Mapelli e Cornaz ) che labirintoScalerandi sviluppata da Scalerandi.
La descrizione del progetto finale che prevede lo sviluppo di un agente che combina aspetti deliberativi con aspetti reattivi e' riportato in Ruby.
Per chi intendesse utilizzare l'ambiente JESS per lo sviluppo del progetto e 'bene consultare il documento Lezione su Jess preparato da Dr. Bosio.