永发信息网

求粒子群算法C#版?

答案:2  悬赏:60  手机版
解决时间 2021-02-11 12:35
求粒子群算法C#版?
最佳答案
static void Main(string[] args)
{
PSO p = new PSO();
p.mains();
System.Console.ReadLine();
}
class PSO
{
const int S = 20;
const int G = 2000;
const int P = 40;
//#define c1 2.0
//#define c2 2.0
const int V = 30;
const double MAX = 5.12;
const double MIN = -5.12;
double D = MAX;
int i1, i2, i3, i4;
int try_number = 0;
int try_max = 5;
double R;//0-1之间的随机数,精度为1/10000
double Wmax = 0.9;
double Wmin = 0.4;
double PI = 3.14159265;
double W = 0.9;
double c1 = 2.0;
double c2 = 2.0;
double Vpso = 0.0;
double Tolerance = 0.0000001;//收敛精度
double c3 = 0.03;//扰动幅度
double e = 2.718281828459;//自然对数底数
int sm = 3;
int bz = 0;//扰动因子标志
public class Individal
{
public double[] d = new double[V];
public double fitness;
}
public class psom
{
public double[] sd = new double[V];
} public psom[] pso = new psom[P];
public Individal px;
public Individal[] individual = new Individal[P];
public Individal[] individuala = new Individal[P];
public Individal tem; public PSO()
{
for (int i = 0; i < P; i++)
{
pso[i] = new psom();
individual[i] = new Individal();
individuala[i] = new Individal();
}
}


public double fitness(double[] a)
{
int i;
double sum = 0.0;
double sum1 = 0.0;
double s1 = 0.0, h1 = 0.0;
double[] x1 = new double[V + 1];
for (i = 0; i < V; i++) x1[i] = a[i];
for (i = 0; i < V; i++)
for (i = 0; i < V; i++)
sum = sum + (x1[i] * x1[i] - 10 * Math.Cos(2 * PI * x1[i]) + 10); return sum;
}
public void init()
{
Random ran = new Random();
//R = ran.NextDouble(); int i, j, pmin = 0;
//srand((unsigned)time(NULL));
for (i = 0; i < P; i++)
{
for (j = 0; j < V; j++)
{
R = ran.NextDouble();
individual[i].d[j] = R * (MAX - MIN) + MIN;
}
individual[i].fitness = fitness(individual[i].d);//计算初始适应值
individuala[i] = individual[i];//将个体复制给另一个序列
}
for (i = 0; i < P - 1; i++)
{
if (individual[pmin].fitness > individual[i + 1].fitness)
pmin = i + 1;//适应值小者最优
}
px = individual[pmin];//最优者为小
}

public void update()
{
int i, j, k, l, n;
double a;
double b;
W = Wmax - (double)(i2) * (Wmax - Wmin) / (double)(G);
for (i = 0; i < P; i++)
{ for (j = 0; j < V; j++)//更新粒子速度、位置
{//更新速度
pso[i].sd[j] = W * pso[i].sd[j] + c1 * R * (individuala[i].d[j] - individual[i].d[j]) + c2 * R * (px.d[j] - individual[i].d[j]);
if (pso[i].sd[j] > D) pso[i].sd[j] = D; //D 最大速度
if (pso[i].sd[j] < -D) pso[i].sd[j] = -D;
individual[i].d[j] = individual[i].d[j] + pso[i].sd[j];//更新位置
}
a = fitness(individual[i].d);//计算本次迭代的粒子适应值
// printf("old是%.16f",individual[i].fitness);
individual[i].fitness = a;
// printf("new是%.16f",individual[i].fitness);
// getchar();
if (a < individuala[i].fitness)
{
individuala[i] = individual[i];
if (individuala[i].fitness < px.fitness)
px = individuala[i];
}//比较粒子与前一次迭代的适应值 寻求最优者
}
}
public void report()
{
int i;
System.Console.WriteLine(px.fitness);

for (i = 0; i < P; i++)
{
// printf("%.16f\n",individual[i].fitness);
// printf("%.16f\n",individuala[i].fitness);
}
}
public void mains()
{
// int i1,i2;
//clock_t start, end;
double ave;
//FILE* f = fopen("result(SFLA).txt", "w");
//for(i4=0;i4 //{
ave = 0.0;
//start = clock();
for (int i1 = 0; i1 < S; i1++)
{ init();
for (int i2 = 0; i2 < G; i2++)
{
update();
// report();
// getchar();
}
//
//
report();
ave = ave + px.fitness;
}
//end = clock();
ave = ave / S;
System.Console.WriteLine("平均极值为:");
System.Console.WriteLine(ave);
//System.Console.WriteLine("Interval=%.2fseconds\n", (double)(end - start) / ((double)CLOCKS_PER_SEC));
//printf("%d代为平均极值为%.16f\n",i4,ave);
//fprintf(f,"%d代为平均极值为%.16f\n",i4,ave);
// getchar();
//getchar();
}
}
全部回答
你说呢...
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
硅藻纯什么牌好呢?那么多品牌,谁能说一下。
92毕业论文网 是真的代做设计吗 有人让他代做
/这瓶就多少钱
AMDE1-2500APU是什么处理器
王者荣耀宫本的弱点是什么?
佳兴便利超市这个地址在什么地方,我要处理点
护理本科的可以跨专业考取心理医师资格证吗?
随州的秋天作文儿600字以上,
初五行属什么
为什么他们老说看一路向西?? 为什么? 主要
阔依普拉提在哪里啊,我有事要去这个地方
展开想象,描述一下“腊子口上降神兵,百丈悬崖
缝纫店地址在什么地方,想过去办事
怎样才能知道自己变声期过了没有
下列各款项的结算,可以采用托收承付结算方式
推荐资讯
久量夹式双模台风为什莫红灯一直亮
男友非常大男子主义 刚认识的时候就挑我毛病
多么和那么的区别
羊能吃向日葵叶子吗
胡寨村我想知道这个在什么地方
鎏金能和狮子头金鱼混养吗
小夫子之奇域大冒险主题曲?????
佛山顺德威灵厂待遇怎样?
饥荒龙蛋孵化要多少天
济南索菲特银座大饭店怎么去啊,有知道地址的
舒祥家纺怎么去啊,我要去那办事
皖北led灯具采购中心地址好找么,我有些事要
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?