• Non ci sono risultati.

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

Documenti correlati