Applicazioni di Intelligenza Artificiale LS
Software
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:
- Mike2.5: codice eseguibile con interfaccia per MS-DOS (file .zip)
- Mike2.03: codice sorgente prolog (file .zip)
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
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.