Mi sto chiedendo come interpretare l'aggiornamento della velocità in un binario Particle Swarm Optimization ( PSO). Per ricapitolare l'aggiornamento di velocità:
V(t+1) = V(t) + c1 * r1 * (XlocalBest - X(t))
+ c2 * r2 * (XglobalBest - X(t))
Capisco che il vettore di posizione binaria si rapporta ai valori nel dominio discreto. Tuttavia, il vettore binario contiene solo 0
e 1
s, dove la lunghezza di questo vettore è n
-dimensionale. Quello che non ottengo è che il vettore di velocità con valore reale n
prende il vettore binario% (%) di posizione e prende per esempio la differenza tra la migliore posizione locale a un dato indice e la posizione corrente.
È corretto che ci siano solo n
, 0
valori che vengono sottratti per ogni valore di 1
nell'aggiornamento? (Quindi, ad esempio, X
viene solo moltiplicato con c1 * r1
, 0
o 1
)?
Come posso utilizzare queste informazioni in relazione alla funzione sigmoid che viene spesso utilizzata in questi OSP? Dovrei aggiornare le velocità, e per esempio prendere un vettore di velocità delle particelle in cui ogni elemento è nel dominio -1
, e inserirlo nella funzione sigmoide, e attivare o disattivare le posizioni bit corrispondenti nel vettore binario della particella come [0,1)
, dove r < sigmoid(velocity value)
è casuale in r
? Questo suona giusto, o ho capito male?