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.