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?