Soft Computing
docente: Leonardo Vanneschi
Dipartimento di Informatica,
Sistemistica e Comunicazione (D.I.S.Co.)
Università di Milano-Bicocca
Il corso ha come obiettivo principale quello di introdurre alla conoscenza di metodologie per la risoluzione di problemi complessi, note con il nome di Soft Computing. Tradizionalmente, queste metodologie si dividono in Algoritmi Evolutivi, Reti Neurali e Sistemi Fuzzy e sono accomunate dalla capacità di restituire soluzioni approssimate (nell'eventualità in cui non siano in grado di determinare una soluzione perfetta) e dalla peculiarità di saper trattare concetti quali imperfezione, imprecisione o incompletezza dell'informazione. In questo corso verranno anche trattate alcune tecniche non tradizionalmente riconducibili al settore del Soft Computing, ma ad esso strettamente correlate, come il Simulated Annealing, il Tabu Search, vari tipi di classificatori, alcuni algoritmi appartenenti al settore della Swarm Intelligence (come il Particle Swarm Optimization), ecc. Tutte queste metodologie vengono anche tradizionalmente inserite nel più ampio settore del Machine Learning (o Apprendimento Artificiale) e quindi una parte consistente di questo corso verrà dedicata alla trattazione dei concetti fondamentali dell'apprendimento artificiale. Tutte le metodologie verranno trattate da diversi punti di vista: nel momento in cui esse verranno introdotte, esse verranno trattate con un taglio volutamente semplice (nessuna particolare competenza è propedeutica a questo corso, se non una conoscenza generale dei concetti fondamentali dell'Informatica e della Matematica di base, con particolare riferimento alle basi della Statistica). In un secondo tempo, verranno fornite le basi teoriche di ognuna di queste metodologie e si discuteranno varie strategie applicative. Le tecniche di Soft Computing vengono ormai da diversi anni utilizzate in numerosissimi settori applicativi, sia a livello accademico che industriale. Tra questi settori (elenco ben lontano dall'essere esaustivo), particolare interesse negli ultimi anni hanno assunto quelli della Biologia e della Bionformatica, della Robotica, dell'Ingegneria elettronica e meccanica, della Chimica, della Medicina, dell'Economia, del Marketing, della Sicurezza, ecc. La sola idea di coprire in maniera esauriente tutti questi settori applicativi in un solo corso sarebbe presuntuoso, prima ancora che irrealizzabile. Lo scopo del corso non è, quindi, quello di trattare in dettaglio particolari applicazioni, ma piuttosto quello di trasferire conoscenze sulle metodologie computazionali, in modo da fornire gli strumenti per affrontare applicazioni in futuro. Le esercitazioni del corso si tengono in laboratorio informatico e prevedono l'applicazione delle metodologie viste a lezione a semplici problemi pratici. Per poter frequentare le esercitazioni, è indispensabile saper scrivere semplici programmi in un linguaggio di programmazione ad alto livello (preferibilmente C o Java, ma viene lasciata allo studente la scelta del linguaggio da utilizzare) ed avere un account funzionante nelle strutture LIB.
Per altri dettagli sul corso, vi visitino le seguenti pagine:
Molte comunicazioni pratiche (come eventuali spostamenti di orari o di aule, le date degli esami, ecc.), oltre che essere inserite in questa pagina web alla voce "Ultime Notizie", verranno anche comunicate via email. Tutti gli studenti sono dunque invitati (possibilmente in corrispondenza delle prime lezioni) ad inviare una email al docente all'indirizzo vanneschi<AT>disco.unimib.it in cui richiedono di essere inseriti nella mailing list.