Docenti: Alberto
Martelli e Pietro Torasso
Scopo: Lo scopo del corso è di sperimentare come linguaggi
logici e ambienti per intelligenza artificiale permettano la soluzione
di particolari classi di problemi e lo sviluppo di sistemi intelligenti.
Una parte del corso illustra come la programmazione logica possa essere
utilizzata per formulare e risolvere problemi di intelligenza artificiale,
basandosi su tecniche classiche di risoluzione di problemi e sull'uso della
programmazione logica con vincoli.
Una seconda parte presenta ambienti per lo sviluppo di sistemi intelligenti.
In particolare sono presi in considerazione ambienti che attraverso l'uso
di regole di produzione permettono di realizzare agenti intelligenti che
combinano aspetti deliberativi e reattivi.
Modalità d'esame: l'esame consisterà in una discussione
individuale degli argomenti trattati nel corso e dei progetti (sviluppati
anche in gruppo) proposti durante lo svolgimento del corso. L'esame prevede
anche la dimostrazione su macchine del laboratorio dei sistemi sviluppati.
Data la natura del laboratorio è prevista una certa flessibilità
nel concordare con i docenti la data dell'esame. Per quanto riguarda gli
appelli di luglio le date previste sono giovedì 17 luglio e mercoledì
30 luglio. Gli studenti interessati sono pregati di segnalare tramite e-mail
ai docenti la loro intenzione di sostenere l'esame con almeno una settimana
di anticipo. Almeno quattro giorni prima dell'esame è necessario consegnare
la relazione scritta relativa al progetto in CLIPS. Per la parte in Prolog
non è richiesta una relazione.
Prerequisiti: si assume la conoscenza dei contenuti del corso di
"Sistemi Intelligenti" e della programmazione ad oggetti.
Progetti 2002-03
Uso del Prolog e del Prolog con vincoli per lo sviluppo di un pianificatore
Programma
A.A. 2002-03
Parte prima
Richiami sulla programmazione logicaParte seconda
Dalla programmazione logica al Prolog
L'aritmetica in Prolog
Controllo: cut, negazione, setof, ...
Strutture dati: termini, operazioni
Meta-predicati: modifiche del database
Rappresentazione di problemi di intelligenza artificiale:spazio degli statiVincoli
ricerca in profondita' - iterative deepening
euristica - Algoritmo IDA*soddisfacimento di vincoli: propagazione, consistenza
Constraint logic programming
Richiami su formalismi a regoleL'ambiente CLIPS:
fatti ordinati e non ordinatiInterpreti forward chaining e backward chaining - Metainterpreti
formalismo a regole
pattern matching
strategie di controllo
Richiami sulla organizzazione di un agente
Realizzazione di aspetti reattivi e deliberativi
Cenni su JESS
Materiale bibliografico e di documentazione:
Parte prima:
L. Console, E. Lamma, P. Mello, M. Milano: "Programmazione logica
e Prolog" (nuova edizione), UTET 1997
Lucidi su Problemi di soddisfacimento di vincoli (PDF) e su Programmazione Logica con Vincoli (PDF)
Esercizi proposti sui vincoli (PDF)
Parte seconda:
S. J. Russell e P. Norvig, Intelligenza Artificiale: un approccio moderno,
Prentice Hall, UTET
Documentazione a diverso livello di dettaglio su CLIPS (manuali, esempi,
un rapporto introduttivo) è disponibile nella directory CLIPS
su disco D del server NT della rete didattica.