Applicazioni di Intelligenza Artificiale LS


Software



ECLiPSe

ECLiPSe è un sistema Prolog che contiene una libreria per la gestione dei vincoli su domini finiti. ECLiPSe è installato sulle macchine Sun del Lab2.

Anche per ECLiPSe esistono licenze studenti; chi fosse interessato può farne richiesta ai docenti.

Sono disponibili alcune istruzioni sull'uso di ECLiPSe.


MIKE

MIKE è un ambiente per lo sviluppo di sistemi basati sulla conoscenza basato sul Prolog. Sono disponibili due versioni:

JESS

JESS è un ambiente JAVA free per lo sviluppo di sistemi basati sulla conoscenza..Essendo scritto in JAVA può funzionare, dopo essere stato compilato, in qualsiasi sistema operativo. Il compilatore JAVA può essere trovato al sito oppure in un CD disponibile nel LAB2.

JRULES

JRULES è un ambiente JAVA per lo sviluppo di sistemi basati sulla conoscenza. E' un prodotto commerciale e quinid non può essere liberamente distribuito. Una installazione di tale software si può trovare nel LAB2.


KAPPA-PC

KAPPA-PC è un ambiente per lo sviluppo di sistemi basati sulla conoscenza. E' un prodotto commerciale ma può essere utilizzato liberamente nell'ambito universitario.


 

ALCUNI PIANIFICATORI

TLPlan è un pianificatore lineare forward che sfrutta la conoscenza del dominio per ottimizzare la ricerca. La conoscenza per il controllo della ricerca è definita in modo dichiarativo sfruttando una logica temporale del primo ordine. Queste formule esprimono condizioni sugli stati del mondo e durante la pianificazione vengono confrontate tramite "model checking" con le sequenze di stati generati dal pianificatore per eliminare le sequenze inutili o senza significato. Il pianificatore è stato implementato in C. Il sistema gira sotto Unix e Ms-Windows.

Sono inclusi 30 domini già implementati che descrivono come va definita l'informazione relativa al dominio e come il sistema sfrutta questa informazione durante la sua ricerca.

Per scaricare il software e una guida all'uso del software e un manuale on-line per la definizione di nuovi domini si consulti la TLPlan Home Page


Graph-plan è un pianificatore non lineare "partial order" di ultima generazione. Prima di procedere alla ricerca, esso costruisce il cosiddetto "grafo di pianificazione" (Planning Graph). Il Planning Graph è una descrizione del problema di pianificazione in esame dove sono esplicitati molti vincoli inerenti il problema che aiutano a ridurre notevolmente lo spazio di ricerca. Gli operatori sono definiti con un linguaggio molto simile a Strips. GraphPlan è stato implementato in C.

È messo a disposizione un eseguibile con un esempio applicativo comprensivo di un file di operatori (blocks_ops) e uno di descrizione degli stati iniziale e finale (blocks_facts.suss): graphplan.tar.Z

Per sperimentare Graph-plan seguire le istruzioni alla pagina http://www.isi.edu/~ariadne/cs541/graphplan.html

Istruzioni per l'utilizzo alla pagina http://www-2.cs.cmu.edu/afs/cs.cmu.edu/usr/avrim/Planning/Graphplan/README


O-Plan (Open Planning Architecture) è una complessa architettura di pianificazione, sviluppata presso l'Università di Edimburgo, che unisce diverse tecniche che lo rendono particolarmente interessante. Nasce come pianificatore gerarchico non lineare indipendente dal dominio di applicazione, che riesce a controllare in modo drastico lo spazio di ricerca grazie all'utilizzo di euristiche. Queste euristiche sfruttano vincoli temporali sul tempo, sulle risorse e sul dominio di applicazione. L'ultima versione alterna pianificazione ad esecuzione per affrontare i problemi della dinamicità del dominio applicativo. L'implementazione è stata fatta in Common Lisp.

Alcune dimostrazioni si possono trovare presso il sito http://www.aiai.ed.ac.uk/~oplan/web-demo/index.html


PlanNet (Planner fot the Network) è un'architettura di pianificazione sviluppata presso l'Università di Bologna. Il pianificatore è un algoritmo di partial order planning che utilizza vincoli sulle risorse per ridurre lo spazio di ricerca e per acquisire a tempo di pianificazione eventuali nuove risorse disponibili. è stata quindi definita una nuova tipologia di vincoli, in grado di trattare variabili con domini parialmente noti e acquisire nuova informazione sui domini in fase di propagazione. Questi vincoli sono detti vincoli interattivi. PlanNet è stato implementato in Eclipse in modo tale da poter sfruttare la libreria per la gestione dei vincoli sui domini finiti. In particolare è stata sviluppata una libreria per la gestione dei vincoli sui domini parzialmente noti. Infine è stata progettata e realizzata una interfaccia grafica per l'utilizzo del pianificatore e la definizione di nuovi domini.

Maggiori dettagli e un esempio descrittivo del funzionamento di PlanNet si possono trovare al sito http://www-lia.deis.unibo.it/Software/PlanNet/


APPRENDIMENTO AUTOMATICO

Sistemi di apprendimento automatico per l'apprendimento di concetti:

Apprendimento da dati in forma attributo valore:

C4.5: sistema in grado di apprendere sia alberi di decisione che regole di produzione. C4.5 versione 8 può essere scaricato da qui. È disponibile un tutorial in pdf sull'impiego di C4.5. È inoltre disponibile un tutorial in html.

Sistemi di programmazione logica induttiva

Foil: svolge una ricerca top down e greedy nello spazio delle clausole e utilizza una euristica simile a quella di C4.5. Parte solamente da background in forma estesionale (ovvero in forma di insieme di fatti). Può essere scaricato da qui.

Progol: svolge una ricerca di tipo A* top down nello spazio delle clausole utilizzando una funzione euristica che prende il nome di compressione. Utilizza un operatore di raffinamento particolare che aggiunge alla clausola correnti letterali presi da un insieme (bottom clause) che viene generato a partire da un singolo esempio. Per maggiori dettagli si veda questa pagina. Il codice sorgente C di Progol può essere scaricato da qui.

P-Progol: versione di Progol scritta in YAP Prolog. E' disponibile anche una versione per Sicstus.

Aleph è un sistema che estende Progol. E' scritto in YAP Prolog. Aleph scaricabile qui.

Golem: apprende clausole bottom up utilizzando l'operatore di relative least general generalization.Golem può essere scaricato da qui.

ACL: apprende programmi logici abduttivi partendo da una background anch'essa in forma abduttiva. Può essere scaricato da qui.

Suites di strumenti di data mining:

WEKA: contiene una versione java dei più diffusi algoritmi per il machine learning e il data minining. È dotata di una semplice interfaccia grafica. È scaricabile da qua. È disponibile anche un tutorial sul suo utilizzo.


È disponibile sul web un corso di Prolog (basato su SICStus) fornito dall'Università di Birmingham, United Kingdom.