2.7 Il funzionamento del FWA
2.7.1 Explosion Strenght
Nellโexplosion strenght il numero di scintille generato da ogni fuoco dโartificio รจ determinato come segue:
๐๐ = ๐ โ ๐๐๐๐ฅโ ๐(๐ฅ๐) + ๐
โ๐๐=1(๐๐๐๐ฅ โ ๐(๐ฅ๐)) + ๐ (2.21)
dove
๐๐ รจ il numero di scintille di ogni fuoco dโartificio;
๐ รจ una costante che controlla il numero totale di scintille;
๐(๐ฅ๐) รจ il valore della funzione obiettivo che assume il fuoco dโartificio ๐ฅ๐;
Si Fine
42
๐๐๐๐ฅ = max(๐(๐ฅ๐)) ๐๐๐ ๐ = 1, . . , ๐ รจ il massimo valore che assume la funzione obiettivo tra gli ๐ fuochi dโartificio (poichรฉ il problema รจ di minimizzazione della funzione obiettivo, ๐๐๐๐ฅ sarร il peggior valore che ๐(๐ฅ๐) puรฒ assumere);
๐ รจ un numero costante di grandezza trascurabile, utilizzato per evitare che il numeratore e il denominatore assumano il valore zero.
Per evitare che le scintille prodotte dai fuochi dโartificio siano generate in numero troppo elevato, sono definiti dei vincoli per ๐๐,
๐ ฬ๐ = { ๐๐๐ข๐๐(๐ โ ๐) ๐ ๐ ๐๐ < ๐๐ ๐๐๐ข๐๐(๐ โ ๐) ๐ ๐ ๐๐ > ๐๐, ๐๐๐ ๐ < ๐ < 1 ๐๐๐ข๐๐(๐ ๐) ๐๐๐ก๐๐๐๐๐๐ก๐ (2.22) dove
๐ ฬ๐ รจ la limitazione al numero di scintille; ๐ e ๐ sono costanti;
๐๐๐ข๐๐() รจ una funzione che permette di arrotondare al numero di cifre specificato, in questo caso allโintero.
Analizzando lโequazione (2.21) si nota che i fuochi dโartificio con una miglior funzione di fitness generano un numero maggiore di scintille e viceversa. Se il denominatore rimane costante, il numeratore sarร maggiore per fuochi dโartificio con una funzione di fitness minore, determinando cosรฌ una generazione maggiore di scintille rispetto agli altri fuochi dโartificio con un valore della funzione di fitness piรน elevato.
2.7.2 Explosion amplitude
Dopo aver calcolato il numero di scintille, lโalgoritmo calcola lโampiezza di ogni esplosione. Lโexplosion amplitude รจ definita come:
๐ด๐ = ๐ดฬ โ
๐(๐ฅ๐) โ ๐๐๐๐+ ๐
43
dove
๐ด๐ รจ lโampiezza di ogni fuoco dโarteficio;
๐ดฬ รจ una costante che indica la somma di tutte le ampiezze;
๐๐๐๐ = min(๐(๐ฅ๐)) ๐๐๐ ๐ = 1, โฆ ๐ รจ il valore minimo che assume la funzione obiettivo, quindi
il valore migliore;
๐(๐ฅ๐) รจ il valore della funzione obiettivo per il fuoco dโartificio ๐ฅ๐;
๐ รจ un numero costante di grandezza trascurabile, utilizzato per evitare che il numeratore e il denominatore assumano il valore zero.
Come si puรฒ vedere dalla formula (2.23) i fuochi dโartificio con una migliore funzione di fitness avranno unโampiezza minore e viceversa. Infatti se il denominatore rimane costante, il numeratore diminuisce al diminuire del valore della funzione di fitness, e quindi di conseguenza lโampiezza sarร minore per fuochi dโartificio con una funzione di fitness migliore.
Si puรฒ quindi concludere che la posizione del fuoco dโartificio determina il numero delle scintille e lโampiezza, identificando cosi due tipologie di fuochi dโartificio:
๏ท fuochi dโartificio di buona qualitร : questi fuochi dโartificio generano una grande popolazione di scintille in unโampiezza ridotta;
๏ท fuochi dโartificio di cattiva qualitร : questi fuochi dโartificio generano invece una piccola popolazione di scintille sparpagliate entro una grande ampiezza.
Figura 2.6: a sinistra รจ rappresentata lโesplosione di un fuoco dโartificio di buona qualitร , mentre a destra uno di scarsa qualitร .
Le due tipologie di fuoco dโartificio servono per due scopi differenti. I fuochi dโartificio con un alto valore della funzione di fitness (cosa non buona poichรฉ il problema di ottimizzazione รจ un
44
problema di minimizzazione), esplorano lo spazio di ricerca, evitando che lโalgoritmo converga troppo velocemente allโottimo, mentre i fuochi dโartificio migliori, producendo molte scintille in una piccola zona, adempiono alla funzione di sfruttamento, ossia ricercano in modo approfondito in una zona promettente dello spazio di ricerca: quindi piรน la posizione del fuoco dโartificio รจ vicina alla soluzione e piรน lโalgoritmo genera scintille in unโampiezza ridotta.
2.7.3 Displacement operation
Lโultima fase dellโesplosione si conclude con il displacement operation, ossia โunโoperazione di spostamentoโ. ร proprio lo spostamento, indicato con lโoperatore h, che permette di generare le posizioni del numero di scintille determinato nella fase dellโexplosion strenght. Tuttavia questo spostamento non รจ applicato a tutte le dimensioni del fuoco dโartificio. Se si considera infatti che la posizione del fuoco dโartificio รจ d-dimensionale, la displacement operation viene applicata solo a z<d dimensioni scelte casualmente tra le d dimensioni. Le z dimensioni sono scelte come segue,
๐ง = ๐๐๐ข๐๐(๐ โ ๐๐๐๐(0,1)) (2.24)
dove
๐ sono le dimensioni della posizione ๐ฅ๐ del fuoco dโartificio ๐๐๐๐(0,1) รจ una distribuzione uniforme nellโintervallo [0,1],
๐๐๐ข๐๐() รจ una funzione che permette di arrotondare al numero di cifre specificato. Lo spostamento h per ogni dimensione z รจ calcolato come segue,
โ = ๐ด๐โ ๐๐๐๐(โ1,1) (2.25)
dove
๐ด๐ รจ lโampiezza dellโesplosione associato alla posizione ๐ฅ๐,
45
Quindi la nuova posizione della j-esima dimensione tra le z selezionate sarร calcolata come:
๐ฅ๐๐+1 = ๐ฅ๐๐+ โ (2.26)
dove
๐ฅ๐๐+1 รจ la nuova posizione della j-esima dimensione, ๐ฅ๐๐ รจ lโattuale posizione della j-esima dimensione,
2.7.4 Mutation Operator
Il secondo building block dellโalgoritmo FWA รจ il mutation operator, che garantisce la diversitร della popolazione attraverso ulteriori esplosioni che generano nuove scintille dagli N fuochi dโartificio. Il mutation operator utilizza il Gaussian operator per generare le nuove scintille; queste sono posizionate tra il miglior fuoco dโartificio e i fuochi dโartificio selezionati. In questo caso lโampiezza e il numero di scintille generate non sono influenzate dalla posizione del fuoco dโartificio. Il numero delle scintille รจ infatti posto pari alla costante ๐ฬ , mentre lโampiezza รจ casuale. Anche in questo caso sono selezionate z dimensioni attraverso la lโequazione (2.24). La nuova posizione della j-esima dimensione sarร calcolata come:
๐ฅ๐๐+1 = ๐ฅ๐๐โ ๐ (2.27)
dove
๐ฅ๐๐+1 รจ la nuova posizione della j-esima dimensione, ๐ฅ๐๐ รจ lโattuale posizione della j-esima dimensione,
๐ รจ un numero casuale estratto dalla distribuzione Gaussiana con media 1 e varianza 1:
46
Lโequazione (2.27) รจ ripetuta per tutte le z dimensioni e per il numero di scintille ๐ฬ .
2.7.5 Mapping Rule
Se la posizione di un fuoco dโartificio รจ vicino al limite dello spazio di ricerca, lโesplosione potrebbe generare scintille che cadono in parte fuori dallo spazio ammesso. Poichรฉ le scintille fuori dalla regione ammissibile sono inutili la mapping rule interviene mappando nuovamente le scintille dentro la spazio di ricerca.
La mapping rule utilizza lโaritmetica modulare e viene indicata come,
๐ฅ๐๐ = ๐๐ฟ๐ต,๐ + ๐ฅ๐๐%(๐๐๐ต,๐ โ ๐๐ฟ๐ต,๐) (2.29)
dove,
๐ฅ๐๐ rappresenta la posizione di ogni scintille che giace fuori dai confini;
๐๐ฟ๐ต,๐ รจ il low boundary, ossia il limite inferiore della posizione di una scintilla;
๐๐๐ต,๐ รจ il upper boundary, ossia il limite superiore della posizione di una scintilla.
% รจ il simbolo dellโaritmetica modulare.
Per comprendere meglio come funziona la mapping rule si propone il seguente esempio: la spazio di ricerca รจ compreso tra -120 e + 120 e lโโampiezza massima รจ impostata a 50. Se due fuochi dโartificio sono posizionati ai due limiti, le scintille potrebbero cadere negli intervalli [- 170, -120] e [+120,+170]. A questo punto la mapping rule mappa le due posizioni nellโintervallo [0,50] per evitare che le scintille ricadino fuori dalla regione amissibile.
47
La Figura (2.7) esemplifica il caso appena illustrato.
Figura 2.7: Funzionamento della mapping rule
2.7.6 Selection strategy
La selection startegy serve per selezionare le scintille che saranno utilizzate per individuare le nuove posizioni dei fuochi dโartificio nella successiva iterazione. Questa fase avviene se la generazione corrente non soddisfa i criteri dโarresto, che possono essere ad esmepio un numero massimo di iterazioni o ad esempio, nel caso specifico di selezione di portafogli di titoli azionari, il raggiungimento di un rendimento atteso prefissato. Quindi se i criteri di arresto non sono soddisfatti, lโalgoritmo seleziona le nuove posizioni utilizzando una strategia di selezione chiamata distance-based strategy. Al fine di selezionare le scintille per la prossima generazione, la scintilla con la migliore posizione, ๐ฅโ, รจ sempre utilizzata nellโiterazione successiva. La
miglior posizione tra tutte quelle individuate รจ quella con la funzione di fitness, ๐(๐ฅโ), piรน bassa. Poichรฉ il numero di fuochi dโartificio rimane costante per ogni iterazione, rimangono (๐ โ 1) posizioni da selezionare attraverso la distance-based strategy. Questa strategia consiste nel selezionare le scintille in base alla distanza tra ogni posizione e le altre. La distanza tra una posizione ๐ฅ๐ e le altre posizioni รจ calcolata come segue:
48 ๐ (๐ฅ๐) = โ ๐(๐ฅ๐, ๐ฅ๐) = โโ๐ฅ๐, ๐ฅ๐โ ๐ ๐=1 ๐ ๐=1 (2.30) dove
๐ (๐ฅ๐) รจ la somma delle distanze tra ๐ฅ๐ e le altre scintille,
๐(๐ฅ๐, ๐ฅ๐) รจ la distanza Euclidea tra le due posizioni ๐ฅ๐ e ๐ฅ๐,
lโindice ๐ โ ๐พ significa che la posizione ๐ appartiene a ๐พ, con ๐พ insieme di tutte le scintille, sia quelle generate dallโexplosion operator e sia quelle generate dal mutation operator. La distanza cosรฌ calcolata viene utilizzata per calcolare una โprobabilitร โ di scegliere la scintilla ๐ฅ๐ รจ definita come,
๐(๐ฅ๐) = ๐ (๐ฅ๐)
โ๐๐๐พ๐ (๐ฅ๐) (2.31)
Dallโequazione (2.31) si puรฒ vedere che le scintille con una maggior distanza hanno piรน probabilitร di essere scelte per la generazione successiva, in modo da garantire la diversitร della popolazione.
2.7.7 Pseudo-codice FWA
In conclusione si riporta uno pseudo-codice del FWA Pseudo-codice FWA
1: Inizializza N posizioni e calcola la funzione di fitness ๐(๐ฅ๐) per ogni fuoco dโartificio; 2: fino a che le condizioni di arresto non sono raggiunte
3: per ogni posizione ๐ฅ๐ = 1: ๐
49
5: Calcola il numero di scintille ๐๐; 6: Calcola lโampiezza dellโesplosione ๐ด๐;
8: Seleziona casualmente z-dimensioni della posizione ๐ฅ๐; %displacement operation
9: per ogni dimensione ๐ฅ๐๐ โ ๐ง ๐๐๐๐๐๐ ๐๐๐๐ ๐๐ ๐ฅ๐
10: Calcola lo spostamento: โ = ๐ด๐ โ ๐๐๐๐(โ1,1); 11: Calcola la nuova posizione ๐ฅ๐๐+1 = ๐ฅ๐๐+ โ ; 12: se ๐ฅ๐๐+1 < ๐ฅ๐๐๐๐ o ๐ฅ๐๐+1 > ๐ฅ๐๐๐๐ฅ allora
13: mappa ๐ฅ๐๐+1 nello spazio potenziale: ๐ฅ๐๐ = ๐๐ฟ๐ต,๐ + ๐ฅ๐๐%(๐๐๐ต,๐โ ๐๐ฟ๐ต,๐) 14: fine ciclo se
15: fine ciclo per %mutation operator 16: per ๐ = 1: ๐ฬ
16: Seleziona casualmente z-dimensioni della posizione ๐ฅ๐; 17: per ogni dimensione ๐ฅ๐๐ โ ๐ง ๐๐๐๐๐๐ ๐๐๐๐ ๐๐ ๐ฅ๐
18: Calcola il coefficiente dellโesplosione Gaussiana: ๐ = ๐บ๐๐ข๐ ๐ ๐๐๐(1,1); 17: Calcola le scintille dellโesplosione Gaussiana: ๐ฅ๐๐+1 = ๐ฅ๐๐ โ ๐;
19: se ๐ฅ๐๐+1 < ๐ฅ๐๐๐๐ o ๐ฅ๐๐+1 > ๐ฅ๐๐๐๐ฅ allora
20: mappa ๐ฅ๐๐+1 nello spazio potenziale: ๐ฅ๐๐ = ๐๐ฟ๐ต,๐ + ๐ฅ๐๐%(๐๐๐ต,๐โ ๐๐ฟ๐ต,๐)
50
22: fine del ciclo per 23: fine ciclo per
24: Seleziona la posizione della scintilla con il piรน basso valore della funzione di fitness e le altre posizioni secondo la probabilitร : ๐(๐ฅ๐) =
๐ (๐ฅ๐)
โ๐๐๐พ๐ (๐ฅ๐)
25: fine del ciclo fino a che