Progetto del corso di Sistemi Intelligenti

(linee guida)

 

Scopo del Progetto

Approfondire temi di interesse individuale, includendo attività "pratiche", all'interno delle seguenti aree:

  • Teoria dei Giochi
  • Rappresentazione della conoscenza ed inferenza in FOL
  • Planning
  • Trattamento dell'incertezza tramite l'uso di  probabilità: inferenza ed apprendimento

 

 

 

 

 

Forme di Progetto

Lo studente può scegliere tra le seguenti forme di progetto:

  • Proattivo

 

Su proposta dello studente, previa discussione con il docente. Sono incoraggiate attività relative all'introduzione di tecniche dell'Intelligenza Artificiale all'interno di sistemi sviluppati per i corsi di Ingegneria del Software della Laurea Triennale.

 

  • "Contributivo"
 

Alcuni degli algoritmi presentati nel libro di testo sono stati implemetati e resi disponibili in un "Online Code Repository". Gli algoritmi sono implementati nei seguenti linguaggi:

  • Python
  • Java
  • Lisp

Diversi algoritmi non sono ancora implementati (in alcun linguaggio, o per alcuni linguaggi, ad esempio Java) e possono quindi costituire oggetto del progetto.

Il codice prodotto sarà inviato al gestore del repository per un eventuale inserimento nello stesso.

 

  • Conoscitivo/Comparativo
 

Lo studente "sperimenta" vari sistemi esistenti e reperibili in rete e li compara con spirito critico rispetto a varie dimensioni, fra cui:

  • Facilità di uso
  • Facilità di comprensione/modificabilità del codice sorgente
  • Prestazioni rispetto al dominio applicativo

La relazione finale del progetto assume in questo caso ruolo preminente.

 

  • Esplorativo
 

Lo studente elabora e sperimenta idee proprie, come ad esempio euristiche relative ad un particolare dominio applicativo, o algoritmi di apprendimento (SVM, apprendimento probabilistico,...) per apprendere euristiche.

 

 

Gruppi di lavoro

Sono ammessi gruppi di lavoro non superiori a 3 studenti (preferibilmente 2 studenti).

 

Prodotti del progetto

 

Strumenti

I seguenti strumenti di sviluppo sono fortemente consigliati:

  • Teoria dei Giochi
Sarebbe preferibile usare Java ed in particolare sviluppare applet per visualizzare la dinamica del gioco e delle corrispondenti strategie.
  • FOL
Per la programmazione logica: GNU Prolog
  • Planning
Come linguaggio di specifica del dominio si consiglia di usare PDDL  (qualunque versione) e di fare riferimento al sito della International Planning Competition 2004
  • Incertezza e probabilità
Per lo sviluppo di codice: Probabilistic Network Library (C++), della intel

Qualunque altro strumento/linguaggio che ritenete a voi utile può essere utilizzato se discusso preventivamente con il docente e con la sua approvazione.

 

Raccomandazioni

Prima di iniziare a sviluppare del codice, cercate su Internet! Partite da codica Open-Source e/o disponibile al pubblico, avendo l'accortezza di: