Gruppo di lavoro su Python e algoritmi genetici
Programma:
Gli algoritmi genetici permettono di affrontare problemi di ottimizzazione di alta complessità, tipicamente non lineare o polinomiale,
utilizzando il principio di "selezione del più adatto", ispirato alla teoria evoluzionistica di Darwin.
In questo moulo discuteremo le basi degli algoritmi genetici affrontando alcuni esempi specifici, di complessità via via crescente. Nello stesso tempo, introdurremo
alcuni moduli utili di Python, che sarà il linguaggio di programmazione utilizzato nel corso. Gli studenti dovranno poi cimentarsi in un caso
realistico, che verrà assegnato loro durante il corso, e portarne una presentazione/relazione individuale all'esame.
Orari secondo semestre 2021:
- Giovedì 15 Aprile, 9.30-11.30, Aula (virtuale) D: introduzione agli algoritmi genetici, loro funzionamento e basi. Teorema degli algoritmi genetici (referenze: Goldberg, Genetic algorithms in search, optimization and machine learning; Mitchell, An introduction to genetic algorithms).
Generazione numeri random e modulo random di Python.
- Giovedì 22 Aprile, 9.30-11.30, Aula (virtuale) D: Esempio di codice per un algoritmo genetico.
Introduzione ad alcuni moduli/funzioni di Python utili per il corso: sys.argv,
argparse,
gestione errori del codice, in particolare try / except.
Buone pratiche di programmazione: documentazione Doxygen e
unit testing.
- Giovedì 29 Aprile, 9.30-11.30, Aula (virtuale) D: multithreading in Python: modulo
multiprocessing / pool.
Debugging del codice con
pdb (riassunto dei comandi utili).
Panoramica sui diversi tipi di crossover e loro applicazioni (alcuni appunti).
- Lunedì 3 Maggio, 9.30-12.30, Aula (virtuale) E: Il problema del venditore itinerante (travelling-salesman problem, TSP). Risoluzione tramite algoritmi genetici a cura degli studenti.
- Lunedì 10 Maggio, 9.30-12.30, Aula (virtuale) E: Basi di crittografia per testi mono- e poli-alfabetica
(presentazione).
Implementazione di un modulo Python per la codifica e decodifica di testi usando i metodi presentati.
- Lunedì 17 Maggio, 9.30-12.30, Aula (virtuale) E: Assegnazione del tema d'esame. Inizio dello svolgimento da parte degli studenti.
- Lunedì 24 Maggio, 9.30-12.30, Aula (virtuale) E: Svolgimento del tema d'esame da parte degli studenti.
Marco Zaro's homepage