用c语言编写遗传算法程序
时间: 2023-03-14 16:03:35 浏览: 121
遗传算法是一种模拟自然选择和遗传的优化算法,可以用于解决最优化问题。下面是一个简单的C语言代码实现:
```
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#define N 100
#define G 100
#define M 0.8
#define P 0.6
int main()
{
int i,j,k,t;
float x[N][G],y[N];
float f[N],sum,best;
int bestid;
srand(time(0));
for(i=0;i<N;i++)
{
x[i][0]=rand()/(RAND_MAX+1.0)*10;
y[i]=rand()/(RAND_MAX+1.0)*10;
f[i]=0;
}
for(t=0;t<G;t++)
{
for(i=0;i<N;i++)
{
f[i]=x[i][t]+y[i];
}
bestid=0;
best=f[0];
for(i=1;i<N;i++)
{
if(f[i]>best)
{
best=f[i];
bestid=i;
}
}
sum=0;
for(i=0;i<N;i++)
{
sum+=f[i];
}
for(i=0;i<N;i++)
{
x[i][t+1]=x[i][t]+M*(best-x[i][t])+P*(rand()/(RAND_MAX+1.0)*(sum/N-x[i][t]));
}
}
best=f[0];
bestid=0;
for(i=1;i<N;i++)
{
if(f[i]>best)
{
best=f[i];
bestid=i;
}
}
printf("最优解为:%f\n",best);
return 0;
}
```
这段代码实现了遗传算法的基本流程,从随机初始化种群到模拟遗传变异过程,最后得到最优解。
阅读全文