Laboratorio di Sistemi Intelligenti

Anno Accademico 2002/03

 

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

Uso di CLIPS/JESS per lo sviluppo di un agente intelligente




 
 

Programma
A.A. 2002-03

Parte prima
 

 Richiami sulla programmazione logica
 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 stati
  ricerca in profondita' - iterative deepening
  euristica - Algoritmo IDA*
 Vincoli
  soddisfacimento di vincoli: propagazione, consistenza
  Constraint logic programming
Parte seconda
 
 Richiami su formalismi a regole

 L'ambiente CLIPS:

  fatti ordinati e non ordinati
  formalismo a regole
  pattern matching
  strategie di controllo
 Interpreti forward chaining e backward chaining - Metainterpreti
 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.