Intelligenza Artificiale: Linguaggi ed Ambienti (Sperimentazioni)

 
 

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 basati su conoscenza.
Nella prima parte del corso viene illustrato 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.
Nella seconda parte del corso vengono illustrati e sperimentati ambienti per lo sviluppo di sistemi basati su conoscenza. In particolare sono presi in considerazione ambienti ibridi che permettono di utilizzare sia regole di produzione che rappresentazioni strutturate (a frame ed a oggetti) al fine di modellare e risolvere specifiche classi di problemi.
 

Modalità d'esame: l'esame consisterà in una discussione individuale degli argomenti trattati nel corso e degli esercizi (sviluppati anche in gruppo) proposti e concordati durante lo svolgimento del corso.
 

Prerequisiti: si assume la conoscenza dei contenuti del corso di "Linguaggi di Programmazione: Paradigmi di Programmazione" e di "Intelligenza Artificiale: Risoluzione di Problemi".
 

Avviso: gli studenti che avessero il corso nel loro piano di studio e non avessero avuto la possibilità di seguire (neppure in parte) il corso, sono pregati di contattare i docenti per l'individuazione di esercizi da svolgere utilizzando linguaggi ed ambienti software previsti per il corso.
 

Progetto 2001-02
Implementare un agente che agisca e ragioni nel mondo del Wumpus (Russell e Norvig, Cap. 6 e 7)
 

Prolog

CLIPS
readme
codice




 
 

Programma
A.A. 2001-02

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: accesso alle clausole, modifiche del database
 Meta-interpreti
 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 e formalismi a frame

 L'ambiente CLIPS:

  fatti ordinati e non ordinati
  formalismo a regole
  pattern matching
  strategie di controllo
 Interpreti forward chaining e backward chaining
 Conoscenza sul dominio e conoscenza di controllo in sistemi basati su conoscenza
 Risoluzione di problemi e tasks
Sviluppo e verifica di una base di conoscenza


 

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)

Per saperne di più sui vincoli:
K. Marriott e P. J. Stuckey, Programming with Constraints: An Introduction, MIT Press, 1998
P. van Hentenryck, Constraint Satisfaction in Logic Programming, MIT Press, 1989.

Parte seconda:
oltre al materiale indicato per il corso di Intelligenza Artificiale: Risoluzione dei problemi guardare:

P. Jackson: "Introduction to Expert Systems", 2nd edition, Addison Wesley. Cap 13.1 , 13.2, cap. 14, cap. 16.1, cap. 17 e cap. 21.

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.