标准PSO算法的C语言实现。测试函数为y=x*sin(10*PI*x)+2,x取值范围[-1,2],求最大值。
View Code
1 /* 2 用粒子群算法求函数最值测试 3 测试函数为 y=x*sin(10*pi*x)+2 4 x取值范围[-1, 2] 5 */ 6 #include7 #include 8 #include 9 #include 10 11 #define MAX(a,b) ((a)>(b)?(a):(b))12 #define PI 3.1415926513 14 #define N 3015 #define G 10016 #define c1 217 #define c2 218 #define w1 0.919 #define w2 0.420 #define Vmax 0.0121 22 double x[N],y[N],v[N],pbest[N],gbest;23 24 double randd()25 {26 return (double)rand()/RAND_MAX;27 }28 int randi(int k)29 {30 return (int)(randd()*k+0.5);31 }32 33 void cal_fitness()34 {35 for(int i=0;i Vmax) v[i]=Vmax;64 x[i]+=v[i];65 if(x[i]<-1) x[i]=-1;66 if(x[i]>2) x[i]=2;67 }68 cal_fitness();69 for(i=0;i