Thursday, September 4, 2008

ACO Vs. PSO. What to use when?

Lot of literature is available introducing ACO and PSO. At very first time when I read them, I thought that they are different ways of solving same problems. I mean I was thinking that, they can be applied on same set of problems. Then I ran into another thought, "Then why do we need both of them?". For getting answer of this question, I read their introductions again. I got my answer. The answer is:

ACO is mostly used for discrete optimization problems.
PSO is mostly used for continuous optimization problems.

Reason behind this is:
ACO is driven by two parameters : heuristic value and pheromone value. Mostly these values are derived from parameters having discrete values.
PSO is driven by neighbor's velocity. Velocity is continuous parameter. As one of the parameters used for deriving velocity is time and time is continuous.

ACO fits better at graph searching problems while PSO fits better at ANN learning as well as pattern recognition. Reason behind this is, parameters used for graph searching are mostly discrete parameters while parameters used for learning/recognition are continuous parameters.

1 comment:

Nick Lefkaditis said...

I suspect the same thing, however there are ways to use PSO to solve graph problems and in fact I have done so in order to optimize the construction cost of broadband networks. I used Network Random Keys to encode the trees to genotypes and normalized the position and velocity vectors of every particle after each iteration. I found that NetKeys generally function correctly but are inefficient because you need a N(N-1)/2 vector to store the genotype, which raises dramatically when the problem size gets larger. Prufer numbers need a (N-1) size genotype vector, but lack locality, which makes the method run incorrectly.