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.
Prerequisiti: si assume la conoscenza dei contenuti del corso
di "Sistemi Intelligenti" e della programmazione ad oggetti.
Progetti 2003-04
Durante il corso sono state mostrate
diverse implementazioni di strategie di ricerca sia in Prolog che in
CLIPS, usando come esempio di riferimento il mondo dei blocchi. Per l'esame si
richiede di confrontare gli approcci visti, mettendone in evidenza
limiti e vantaggi, facendo riferimento ai seguenti esempi.
I due link
seguenti contengono materiale relativo alle attività di
laboratorio ed ai progetti proposti per l'esame.
Strategie di ricerca e Pianificazione in Prolog (con vincoli)
Programma
A.A. 2003-04
Parte prima
Introduzione alla programmazione logicaParte seconda
Clausole di Horn - Interprete del 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.