• Non ci sono risultati.

Negli anni, la PSO ha subito molti cambiamenti dalla sua introduzione, soprattutto per quanto riguarda lโ€™equazione della velocitร  ๐‘‰๐‘—๐‘˜

, compresi i relativi metodi di controllo di essa, e la topologia considerata nella connessione sociale. Di seguito si proporranno la versione originale di Kennedy e Eberhart della PSO, e alcune successive modifiche.

Algoritmo originale

Lโ€™algoritmo originale della PSO prevede i seguenti passi:

1) Inizializzazione della popolazione, tramite una matrice di particelle con posizioni e velocitร  casuali nello spazio di ricerca di dimensioni d.

2) ciclo che continua fino a quando il criterio di arresto scelto non รจ soddisfatto: a. impostare ๐‘˜ = 1 e valutare la funzione obiettivo ๐‘“(๐‘‹๐‘—๐‘˜) per ๐‘— = 1, โ€ฆ , ๐‘€; b. se ๐‘“(๐‘‹๐‘—๐‘˜) โ‰ค ๐‘ƒ๐‘— allora impostare ๐‘ƒ๐‘— = ๐‘‹๐‘—๐‘˜. In questo punto il valore della

funzione di fitness alla k-esima iterazione viene valutato con il valore della funzione finora migliore. Se il valore corrente della funzione รจ migliore, allora la posizione della particella associata a tale valore viene settata come la nuova migliore posizione della j-esima particella;

c. identificare la particella nel vicinato con la migliore posizione e assegnarle lโ€™indice ๐‘”, ossia ๐‘ƒ๐‘”(๐‘—).

d. Aggiornare la posizione e la velocitร  della particella secondo la seguente equazione: {๐‘‰๐‘— ๐‘˜+1= ๐‘‰ ๐‘—๐‘˜+ ๐‘ˆ(0, ๐œ™1) โŠ— (๐‘ƒ๐‘—โˆ’ ๐‘‹๐‘—๐‘˜) + ๐‘ˆ(0, ๐œ™2) โŠ— (๐‘ƒ๐‘”(๐‘—)โˆ’ ๐‘‹๐‘—๐‘˜) ๐‘‹๐‘—๐‘˜+1= ๐‘‹๐‘—๐‘˜+ ๐‘‰๐‘—๐‘˜ (2.8) (2.9)

e. Se si soddisfa uno dei criteri, come ad esempio una funzione di fitness sufficientemente buona o un numero massimo di iterazioni, uscire dal ciclo continuo, altrimenti rintonare al punto b.

Lโ€™equazione (2.8) si puรฒ vedere come la velocitร  dellโ€™iterazione successiva, ๐‘‰๐‘—๐‘˜+1, รจ calcolata

33

๏‚ท ๐‘‰๐‘—๐‘˜ รจ la velocitร  corrente della j-esima particella;

๏‚ท ๐‘ˆ(0, ๐œ™1) โŠ— (๐‘ƒ๐‘— โˆ’ ๐‘‹๐‘—๐‘˜) รจ la differenza tra la migliore posizione della j-esima particella

e la posizione corrente. Il tutto รจ moltiplicato per un vettore di numeri casuali estratti da una distribuzione uniforme [0, ๐œ™1] a ogni iterazione e per ogni particella. Quindi la particella รจ attratta nella direzione della sua miglior posizione;

๏‚ท ๐‘ˆ(0, ๐œ™2) โŠ— (๐‘ƒ๐‘”(๐‘—)โˆ’ ๐‘‹๐‘—๐‘˜) รจ la differenza tra la posizione migliore del vicinato11, trovata

finora, e la posizione corrente della particella, moltiplicata per un vettore di numeri casuali estratti da una distribuzione uniforme [0, ๐œ™2] a ogni iterazione e per ogni

particella. Questa componente della velocitร  fa sรฌ che la particella sia attratta verso la migliore posizione del vicinato trovata finora.

Lโ€™algoritmo appena descritto puรฒ essere rappresentato in un diagramma di flusso come segue:

11 il vicinato puรฒ variare a seconda della topologia scelta. Questo argomento verrร  trattato nel paragrafo 2.5. Inizio

Selezione di M particelle e settaggio dei parametri costanti

Calcolo funzione di fitness per ogni particella

Aggiornamento della velocitร  di ogni particella

Condizioni dโ€™arresto verificate? No

Valutazione della miglior posizione di ogni particella e di quella globale

Aggiornamento della posizione di ogni particella

34

Figura 2.1: diagramma di flusso della PSO

Per quanto riguarda il controllo della velocitร  e il settaggio dei parametri nella prima versione dellโ€™algoritmo si รจ proposto innanzitutto di individuare la dimensione della popolazione in un range compreso tra 20 e 50 particelle.

I parametri ๐œ™1 e ๐œ™2, detti coefficienti di accelerazione, rappresentano la โ€˜forza casualeโ€™ nella direzione rispettivamente della miglior posizione personale della particella e della miglior posizione del vicinato. Il settaggio sbagliato di questi due parametri puรฒ portare ad una instabilitร  della stessa PSO e a una velocitร  che aumenta senza alcun controllo. Nei primi studi fu utilizzato il valore ๐œ™1 = ๐œ™2 = 2 che rendeva instabile la PSO. Per controllare la velocitร  fu quindi posto un range [โˆ’๐‘‰๐‘š๐‘Ž๐‘ฅ, +๐‘‰๐‘š๐‘Ž๐‘ฅ] per ogni velocitร  ๐‘‰๐‘—๐‘˜. Questa soluzione sebbene da un

lato controlla la velocitร , dallโ€™altro la stessa scelta di ๐‘‰๐‘š๐‘Ž๐‘ฅ รจ complessa in quanto questo

parametro influenza lโ€™equilibro tra sfruttamento e esplorazione. Inoltre non esiste alcuna regola da seguire per settare in modo corretto la velocitร  massima. Per ovviare al problema sono state proposte altre soluzioni per controllare la velocitร .

Modifica 1: peso dโ€™inerzia

Questa prima modifica fu proposta da Shi e Eberhart nel 1998:

{๐‘‰๐‘— ๐‘˜+1= ๐œ”๐‘‰ ๐‘—๐‘˜+ ๐‘ˆ(0, ๐œ™1) โŠ— (๐‘ƒ๐‘— โˆ’ ๐‘‹๐‘—๐‘˜) + ๐‘ˆ(0, ๐œ™2) โŠ— (๐‘ƒ๐‘”(๐‘—)โˆ’ ๐‘‹๐‘—๐‘˜) ๐‘‹๐‘—๐‘˜+1 = ๐‘‹๐‘—๐‘˜+ ๐‘‰๐‘—๐‘˜ (2.10) (2.11)

dove ๐œ” รจ il peso dโ€™inerzia.

Mentre le due ultime componenti della velocitร  rappresentano le forze di attrazione esterne, quindi lo sfruttamento verso la miglior posizione personale della particella e verso la miglior posizione del vicinato, la componente ๐œ”๐‘‰๐‘—๐‘˜ rappresenta invece lโ€™esplorazione della particella.

Si Fine

35

Piรน alto รจ il valore assegnato al peso dโ€™inerzia e piรน la velocitร  dellโ€™iterazione successiva dipende dalla velocitร  attuale ๐‘‰๐‘—๐‘˜ della particella. Viceversa se il valore assegnato al peso dโ€™inerzia รจ basso, allora la velocitร  ๐‘‰๐‘—๐‘˜+1 sarร  influenzata piรน dalle due componenti di

sfruttamento che dalla velocitร  corrente della particella. Una delle possibili soluzioni per quanto riguarda il valore del peso dโ€™inerzia potrebbe essere settare inizialmente un valore elevato di ๐œ” in modo da privilegiare lโ€™esplorazione allo sfruttamento, e in seguito assegnare valori decrescenti al peso dโ€™inerzia, preferendo lo sfruttamento, quindi lโ€™attrazione verso lโ€™ottimo locale, rispetto allโ€™esplorazione. Una delle formule proposte prevede appunto che il parametro ๐œ” diminuisca con lโ€™aumentare delle iterazioni.

๐œ”๐‘˜= ๐œ”๐‘š๐‘Ž๐‘ฅ +๐œ”๐‘š๐‘–๐‘›โˆ’ ๐œ”๐‘š๐‘Ž๐‘ฅ

๐พ ๐‘˜,

(2.12)

dove

๐œ”๐‘š๐‘Ž๐‘ฅ e ๐œ”๐‘š๐‘–๐‘› sono comunemente settati rispettivamente a 0,9 e 0,4;

๐พ รจ il numero massimo di iterazioni consentite; ๐‘˜ รจ il numero dellโ€™iterazione corrente.

Unโ€™altra soluzione proposta prevede lโ€™uso del peso dโ€™inerzia con una componente casuale, che decresce con il tempo. Ad esempio Eberhart e Shi nel 2001 hanno utilizzato ๐œ” = ๐‘ˆ(0.5,1). Il corretto settaggio del peso dโ€™inerzia e dei coefficienti di accelerazione rendono quindi la PSO piรน stabile rispetto al primo modello, al punto da poter assegnare un valore alto al parametro ๐‘‰๐‘š๐‘Ž๐‘ฅ, o addirittura non settarlo.

Modifica 2: limitazione dei coefficienti

Il metodo della limitazione dei coefficienti fu introdotto da Clerc e Kennedy nel 2002. La limitazione dei coefficienti assicura la convergenza, e previene da un incremento non controllato della velocitร . La nuova equazione per la velocitร  รจ cosรฌ composta,

36 {๐‘‰๐‘— ๐‘˜+1 = ๐œ’ (๐‘‰ ๐‘—๐‘˜+ ๐‘ˆ(0, ๐œ™1) โŠ— (๐‘ƒ๐‘— โˆ’ ๐‘‹๐‘—๐‘˜) + ๐‘ˆ(0, ๐œ™2) โŠ— (๐‘ƒ๐‘”(๐‘—) โˆ’ ๐‘‹๐‘—๐‘˜)) ๐‘‹๐‘—๐‘˜+1 = ๐‘‹๐‘—๐‘˜+ ๐‘‰๐‘—๐‘˜ (2.13) (2.14) dove, ๐œ’ = 2 ๐œ™โˆ’2+โˆš๐œ™2โˆ’4๐œ™ con ๐œ™ = ๐œ™1+ ๐œ™2 > 4 (2.15)

In Clerk e Kennedy il valore di ๐œ™ รจ posto pari a 4.1, con ๐œ™1 = ๐œ™2; sostituendo nella (2.16) si

ottiene che il moltiplicatore costante ๐œ’ รจ approssimativamente 0.7298. Quindi, tornando allโ€™equazione (2.13), si puรฒ affermare che la velocitร  corrente รจ moltiplicata per 0.7298, mentre le due componenti associate allo sfruttamento sono moltiplicare per un numero casuale compreso nellโ€™intervallo [0, 1.496118]; infatti poichรฉ ๐œ™1 = ๐œ™2 = 2.05 , allora 0.7298 ร— 2.05~1.49618.

Si puรฒ notare come la PSO con il peso dโ€™inerzia puรฒ essere equivalente alla PSO con la limitazione dei coefficienti se si pone ๐œ” = ๐œ’ e ๐œ™๐‘– = ๐œ’๐œ™๐‘–. In questo modo i valori nella PSO

con il peso dโ€™inerzia saranno ๐œ” = 0.7298 e ๐œ™1 = ๐œ™2 = 1.49618.

Modifica 3: Fully Informed Particle Swarm (FIPS)

Kennedy e Mendes nel 2002 hanno rivisto come la particella interagisce con il vicinato. Mentre nella versione originale della PSO la particella mantiene solo due informazioni, ossia la sua miglior posizione e la migliore posizione del vicinato, nella versione di Kennedy e Mendes la particella mantiene tutta lโ€™informazione, ossia le posizioni di tutti i suoi vicini. Il metodo FIPS รจ cosรฌ sviluppato: { ๐‘‰๐‘—๐‘˜+1= ๐œ’ (๐‘‰๐‘—๐‘˜+ 1 ๐พ๐‘—โˆ‘ ๐‘ˆ(0, ๐œ™) ๐พ๐‘— ๐‘›=1 โŠ— (๐‘ƒ๐‘›๐‘๐‘Ÿ ๐‘›๐‘— โˆ’ ๐‘‹๐‘— ๐‘˜)) ๐‘‹๐‘—๐‘˜+1 = ๐‘‹๐‘—๐‘˜+ ๐‘‰๐‘—๐‘˜ (2.17) (2.18) dove

37

๐พ๐‘— รจ il numero dei vicini della particella j-esima; ๐‘›๐‘๐‘Ÿ๐‘›๐‘— รจ lโ€™ennesimo vicino della particella j-esima.

Si nota che se il numero dei vicini della particella j-esima viene posto uguale a 2, ๐พ๐‘— = 2, allora il modello risulta uguale alla PSO tradizionale. Dai risultati di Kennedy e Mendes si evince che questa versione della PSO trova una migliore soluzione in meno iterazioni rispetto allโ€™algoritmo tradizionale, tuttavia dipende in maniera pesante dalla topologia della popolazione.

Documenti correlati