01. fromNumPyImportArray02. fromRandomImportRandom03. fromMathImportsin, sqrt04. 05.iter_max = 1000006.pop_size = 10007.dimensions = 208.C1 = 209.C2 = 210.err_crit = 0.0000111. 12.classParticle:13.Pass14. 15.deff6 (param):16." "Schaffer ' s F6 function" "Para = param*1018. Para = Param[0:2] num = (sin (sqrt ((para[0] * para[0) + (para[1] * para[1])))) * \ (Sin (sqrt (para[0] * para[0) + (para[1] * para[1])))-0.521. Denom = (1.0 + 0.001 * ((para[0] * para[0]) + (para[1] * para[1]))) * \ (1.0 + 0.001 * ((para[0] * para[0]) + (para[1] * para[1]))) F6 = 0.5-(num/denom)Errorf6 = 1-f625.returnf6, Errorf6;26. 27.#Initialize the particles28.particles = [] 29. forIinchRange (pop_size):p =particle ()P.params = Array ([Random () forIinchrange (dimensions)]) P.fitness = 0.033. P.V = 0.034. Particles.append (P)35. 36.#Let the first particle is the global Best37.gbest =Particles[0]38.err = 99999999939. whileI <Iter_max:40. forPinchparticles:Fitness,err =f6 (P.params)42.ifFitness >p.fitness:P.fitness =FitnessP.best =P.params45. 46.ifFitness >gbest.fitness:Gbest =PV. V = p.v + C1 * Random () * (P.best-p.params) \+ C2 * Random () * (Gbest.params-p.params)P.params = P.params +v51. i + = 153.ifErr <Err_crit:54. Break55.#progress bar. '. ' = 10%56.ifI% (ITER_MAX/10) = =0:57.Print '.'58. 59.Print '\nparticle Swarm optimisation\n'60.Print 'parameters\n','-'*961.Print 'Population Size:', Pop_size62.Print 'Dimensions:', Dimensions63.Print 'Error Criterion:', Err_crit64.Print 'C1:', C165.Print 'C2:', C266.Print 'Function:f6'67. 68.Print 'results\n','-'*769.Print 'gbest Fitness:', Gbest.fitness70.Print 'gbest Params:', Gbest.params71.Print 'iterations:', i+172.## Uncomment to print particles73.#For p in particles:74.#print ' params:%s, Fitness:%s, best:%s '% (P.params, p.fitness, p.best)
Particle swarm optimization algorithm implemented by Python