cilib/cilib — pull request #58 by kgeorgieva (2012-07-26 13:05:03+00:00)
Title: Clustering PSOs

This is the code for the Clustering PSOs that were implemented in CILib. This includes:
- Standard Clustering PSO: This is a PSO where particles represent sets of cluster centroids. Fitness is measured using the quantization error, which measures the average distance of data patterns to the centroid to which they belong. Each particle represents set of possible centroid positions and the algorithm attempts to minimize the distance between data patterns belonging to their relevant centroid.

- Reinitializing Clustering PSO: This is the standard PSO adapted to perform better in a dynamic environment. As a change occurs, all or a portion of the total particles in the population are reinitialized.

- A Multi-Swarm Data Clustering PSO: This algorithm is especially designed for dynamic environments. It involves initializing a number of swarms independent from each other. If two swarms are have a global bests which are located near each other, then one of the swarms is re-initialized. This is done in order to avoid convergence around local minima or old values of the global best. If all three swarms converge, the one with the worst fitness is re-initialized in order to inject diversity. It is a set of Clustering PSOs running in parallel and attempting to optimize different parts of the search space. The global best value of the best fit swarm is the one that will be chosen as the algorithm's global best.

- Co-operative PSO: This algorithm involves optimizing each dimension of a problem separately by creating n 1-dimensional swarms (where n is the dimensionality of the problem). A context particle is used in order to calculate fitness (which is dependant on all dimensions). This particle consists of the best solution found for each dimension of the problem, and fitness of a particle is calculated by replacing the dimension being dealt with in the context particle and calculating the fitness.

- Context Reinitializing Cooperative PSO: This is the same as a cooperative PSO, except if a change occurs in the environment, part or the whole population as well as the context particle are reinitialized.

- Co-operative Multi-swarm PSO: This involves a cooperative PSO where each dimension of the Cluster Particle, i.e. each centroid, is a separate swarm. Each swarm is optimized using the multi-swarm algorithm and fitness is calculated using a context particle that contains the best positions of each swarm.