Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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?

share|improve this question

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Browse other questions tagged or ask your own question.