一.算法流程
Step1:初始化一群粒子(粒子个数为50个),包括随即位置和速度;
Step2:计算每个粒子的适应度fitness;
Step3:对每个粒子,将其适应度与其进过的最好位置(局部)pbest做比较,如果较好,则将其作为当前的最好位置pbest;
Step4:对每个粒子,将其将其适应值与群体所经过的最好位置gbest做比较,如果较好,则将其作为当前最好位置gbest;
Step5:更新所有粒子位置和速度;
Step6:未达到结束条件则转Step2。
二.实验设置
(1) 粒子数particle_num=20;
(2) 迭代次数N=50;
(3) 惯性因子w=1.4;
(4) c1=c2=2;
(5) 最大速度Vmax=2。
三.实验说明
目标函数:https://en.wikipedia.org/wiki/Test_functions_for_optimization 中的Ackley's function、Sphere function、和Rosenbrock function(都是求最小值)
四.java代码
1.particle类
packagenju.iip;importjava.util.Random;/*** 粒子类
*@authormrpod2g
**/
public classParticle {//维数
public int dimension = 2;//粒子的位置