Particle Swarm Optimization: Applied to Registration Preliminary Understanding GENERAL POINTS: - - - - Given a swarm (population size, N), N-number of particles (solutions) are composed of random combinations of rotation, translation, and scale (RTS) values. The values of the random particles are restricted by ranges for each solution parameter Optimization is initiated with a group of random particles Each initial particle has 5 parameters (tx, ty, sx, sy, ) A new generation of a solution is born with each iteration Every solution is re-calculated at every iteration until the maximum number of iterations (generations) have been performed or a solution has produced a fitness function that generates an error metric at a designated minimum Calculate f(x) for solution xi until K iterations have been calculated Calculate f(x) for xi until resulting solution has minimum error (maximum mutual information between 2 images using associated RTS values for given particle) The fitness function [f(x)] for the given problem would be the quality of the registration when the solution values for a given particle are used to register 2 images. Quality would be judged using mutual information metric. EX/ f(x) = x1 +x22+x33 xi=[x1, x2, x3] f(x) = fitness function With the creation of each new generation, each particle is moved closer to the optimal solution based on a velocity vector. The velocity vector for a given particle is calculated based on the best solution it has achieved so far (pbest = particle best) and the best solution achieved by a particle in the population (gbest = global best) MATH: (a) vi (k 1) (k)vi (k) 1 1i ( pi xi (k)) 2 2i (G xi (k)) the velocity of a given solution @ the next iteration = (the inertial weight)*(current velocity of solution)+ (acceleration constant 1)*[(random num 1)*(pbest-current solution parameters)]+ (acceleration constant 2)*[(random num 2)*(gbest-current solution parameters)] (b) xi (k 1) xi (k) vi (k 1) the solution @ the next iteration = the solution @ current iteration + the velocity of the given solution @ next iteration min max K (c) (k 1) (k) the inertial weight @ next iteration = the inertial weight @ current location + [(max wgt. – min wgt.)/number of iterations] - Set acceleration constants equal to 2 Random numbers 1 & 2 are values [0, 1] Inertial weights are monotonically decreasing with iterations PSEUDO CODE: For each particle Initialize particle [Initialize N number of particles with random values for all RTS parameters within designated range] END Do For each particle Calculate fitness value [Using initial RTS values, perform N transforms and calculated N mutual information values (fitness values)] If the fitness value is better than the best fitness value (pBest) in history set current value as the new pBest [If generated MI value is better than any recorded MI value for that particle, save those RTS vales as the particle’s best solution (pbest) End Choose the particle with the best fitness value of all the particles as the gBest [Choose the particle whose RTS values produced the highest MI value] For each particle Calculate particle velocity according equation (a) Update particle position according equation (b) End While maximum iterations or minimum error criteria is not attained QUESTIONS: 1) In equation (a), is the subtraction of (pbest –current) and (gbest – current) a subtraction of the actual RTS values or the fitness values produced by the respective RTS values? 2) What are good values for initial velocities and inertial weights? Zero?