Laboratorio di Sistemi Intelligenti

Anno Accademico 2003/04

 

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)

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




 
 

Programma
A.A. 2003-04

Parte prima
 

 Introduzione alla programmazione logica
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 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.