I am wondering how to interpret the velocity update in a Binary Particle Swarm Optimization (PSO). To recap the velocity update :V(t+1) = V(t) + c1 * r1 * (XlocalBest  - X(t))                + c2 * r2 * (XglobalBest - X(t))I understand that the binary position vector maps to values in the discrete domain. However, the binary vector contains only 0 and 1s, where the length of this vector is n-dimensional. What I don't get is that the n real valued velocity vector takes the n binary vector (position), and takes e.g the difference between the local best position at a given index and the current position.Is it correct that there's only 0,1 values that are subtracted for each X value in the update ? (So that e.g c1 * r1 is only multiplied either with 0, 1 or -1)?How can I use this information in relation to the sigmoid function that is often used in these PSOs? Should I update the velocities, and for example take a particles velocity vector where each element is in the domain [0,1), and put this into the sigmoid function, and turn the corresponding bit positions on or off in the particle's binary vector such as r < sigmoid(velocity value), where r is random in [0,1)? Does this sound about right, or did I get it wrong?
Understanding velocity update in Binary Particle Swarm Optimization
optimization;artificial intelligence