• Non ci sono risultati.

6.2 Configurazione dei nodi della procedura

6.2.1 Nodo Scheduler

Attraverso il nodo Scheduler è possibile definire sia la popolazione di partenza (design che saranno oggetto di valutazione), sia il tipo di algoritmo utilizzato per portare a termine l’ottimizzazione. La definizione della popolazione iniziale avviene mediante l’integrazione con il nodo DoE (Design of Experiment), il quale permette la selezione di un numero limitato di design di partenza all’interno del vasto spazio di ricerca (design space) definito dalle variabili di input e dai loro intervalli di variazione. L’algoritmo di ottimizzazione provvederà in seguito alla creazione di nuovi design, a partire dalla selezione iniziale, che vadano ad infittire le zone non coperte solo laddove forniscano risultati migliori in termini di funzione obiettivo.

6.2.1.1

Sequenza DoE

All’interno del nodo DOE è possibile scegliere tra sequenze di selezione Random, Sobol, Full Factorial o altre sequenze definite direttamente dall’utente.Nelle ottimizzazioni condotte nel presente lavoro si è fatto ricorso ad una DoE Sequence di tipo Sobol, selezionando un numero di design pari a 50. Si tratta di un algoritmo di tipo deterministico che simula il comportamento della sequenza Random, ma rispetto a quest’ultima permette una maggiore uniformità nel campionamento del design space. Quest’aspetto risulta fondamentale, in quanto limita il rischio di escludere dal patrimonio genetico delle generazioni successive individui appartenenti a zone inesplorate del design space.

In figura 6.3 è riportato un confronto tra la distribuzione degli individui di una popolazione iniziale scelta dalla sequenza Random e una scelta dalla sequenza Sobol.

63

6.2.1.2

Algoritmo di ottimizzazione

L’ottimizzazione viene condotta facendo uso di un algoritmo genetico, il quale riproduce sostanzialmente il processo evolutivo della specie umana. Partendo da una popolazione iniziale, infatti, l’algoritmo produce nuove generazioni contenenti gli individui migliori della generazione precedente, evolvendo così verso l’ottimo globale. Anche se non è garantita l’individuazione della soluzione di ottimo globale, l’algoritmo consente comunque l’individuazione di configurazioni molto buone in tempi ragionevoli. La capacità di adattamento di un individuo della popolazione, e quindi la probabilità di riprodursi e trasmettere i propri geni alle generazioni successive, è definita tramite la funzione fitness, identificabile, in un problema di ottimizzazione, con la funzione obiettivo. L’algoritmo ha dunque il compito di ottimizzare tale funzione, facendo uso di operatori di ricerca quali il cross-over (che combina i geni di due individui) e la mutazione (che reintroduce nella popolazione materiale genetico perduto).

L’algoritmo genetico deve procedere mediante un compromesso tra ricerca locale, che tenderebbe alla convergenza su un ottimo locale non accettabile, e ricerca globale, che, se eccessiva, può non sfruttare adeguatamente la conoscenza acquisita, rallentando il processo di ricerca.

6.2.1.3

Algoritmo genetico MOGA-II

L’algoritmo genetico selezionato è il MOGA-II (Multi-Objective Genetic Algorithm), il quale fa uso di un avanzato elitismo multi-ricerca che preserva le soluzioni migliori, senza portare ad una convergenza prematura sull’ottimo locale. Per semplicità, MOGA-II richiede all’utente il settaggio manuale di un numero ristretto di parametri, configurandone internamente molti altri al fine di garantire stabilità ed efficienza all’ottimizzatore.

L’algoritmo sottopone a valutazione un numero di design che è pari al numero di individui della popolazione iniziale moltiplicato per il numero di generazioni impostate dall’utente.

Vediamo nel dettaglio i parametri configurabili dall’utente: Number of Generations

A partire dal numero di individui della popolazione di partenza, l’algoritmo va a creare per ogni generazione un identico numero di individui. Mediante questo parametro, dunque, si definisce la dimensione complessiva dell’ottimizzazione.

64 Probability of Directional Cross-Over

Il compito dell’operatore Cross-Over è quello di ottenere, tramite ricombinazione, individui con migliori caratteristiche dei genitori, pur mantenendo l’eterogeneità della popolazione precedente. In questo modo è possibile dare maggiore efficienza all’algoritmo. È possibile determinare la probabilità che tale operatore entri in azione, settando questo parametro su un valore compreso tra 0 e 1, dove 1 significa che viene utilizzato solo questo operatore. La ricerca è di conseguenza efficiente, ma può portare a convergenza prematura su ottimi locali in caso di problemi fortemente non lineari. Di contro, un valore troppo basso comporterebbe elevati tempi di convergenza.

Valore fissato: 0.5 (valore di default)

Probability of Selection

Definisce la probabilità che gli individui mantengano integralmente il proprio patrimonio genetico durante l’evoluzione. Se il valore è 1, la popolazione iniziale si ripeterà identica a sé stessa nelle future generazioni. Per mantenere una buona diversità è necessario che questo parametro sia mantenuto basso.

Valore fissato: 0.05 (valore di default)

Probability of Mutation

Definisce la probabilità che il patrimonio genetico di un individuo venga mutato in maniera casuale. Se il valore è 1, la mutazione è completamente casuale.

Valore fissato: 0.1 (valore di default)

DNA String Mutation Ratio

Il DNA di ogni individuo è codificato tramite una stringa binaria. Questo parametro definisce la percentuale di bit della stringa che viene modificata durante la mutazione. Valore fissato: 0.05 (5%, valore di default)

Elitism

Se attivato, assicura che gli individui migliori (di ciascun obiettivo) siano preservati durante l’evoluzione.

65 Treat Constraints

Definisce il trattamento dei vincoli. Si può scegliere tra Penalising Objectives che esclude le soluzioni che non rispettano i vincoli imposti e As One Extra Object che aggiunge al problema una funzione obiettivo che tenga in conto i vincoli non rispettati. Quest’ultima scelta è necessaria solo in caso di problemi estremamente vincolati, in cui non esiste una soluzione in grado di rispettare tutte le limitazioni imposte.

Algorithm Type

È possibile scegliere fra tre tipi di algoritmi.

Generational Evolution (opzione scelta): lavora su un set di configurazioni che vengono periodicamente aggiornate quando una generazione viene completata.

Steady Evolution: usa tutte le configurazioni calcolate, non appena sono disponibili.

Adaptive Evolution: la percentuale di utilizzo degli operatori di ricerca viene fissato automaticamente ad inizio processo e viene cambiata dall’algoritmo stesso durante l’evoluzione, in base ai risultati valutati ad ogni generazione.

66

Documenti correlati