2022年遗传算法C语言源代码 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年遗传算法C语言源代码 .pdf》由会员分享,可在线阅读,更多相关《2022年遗传算法C语言源代码 .pdf(15页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、C语言遗传算法代码以 下 为 遗 传 算 法 的 源 代 码 , 计 算 一 元 代 函 数 的 代 码 和 二 元 函 数 的 代 码 以+ 为分割线分割开来,请自行选择适合的代码,使用时请略看完代码的注释,在需要更改的地方更改为自己需要的代码。+ 一元函数代码+#include #include#include#include#define POPSIZE 1000#define maximization 1#define minimization 2#define cmax 100#define cmin 0#define length1 20#define chromlength le
2、ngth1 / 染色体长度/ 注意,你是求最大值还是求最小值int functionmode=minimization;/ 变量的上下限的修改开始float min_x1=-2;/ 变量的下界float max_x1=-1;/ 变量的上界/ 变量的上下限的修改结束int popsize; / 种群大小int maxgeneration; / 最大世代数double pc; / 交叉率double pm; / 变异率struct individualchar chromchromlength+1;double value; double fitness; / 适应度;int generation
3、; / 世代数int best_index;int worst_index;精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 1 页,共 15 页struct individual bestindividual; / 最正确个体struct individual worstindividual; /最差个体struct individual currentbest;struct individual populationPOPSIZE;/ 函数声明void generateinitialpopulation(); void generatenextp
4、opulation();void evaluatepopulation();long decodechromosome(char *,int,int);void calculateobjectvalue();void calculatefitnessvalue();void findbestandworstindividual();void performevolution();void selectoperator();void crossoveroperator();void mutationoperator();void input();void outputtextreport();v
5、oid generateinitialpopulation( ) / 种群初始化int i,j;for (i=0;ipopsize; i+)for(j=0;jchromlength;j+)populationi.chromj=(rand()%2010)?0:1;populationi.chromchromlength=0;void generatenextpopulation() / 生成下一代selectoperator();crossoveroperator();mutationoperator();void evaluatepopulation() / 评价个体,求最正确个体calcul
6、ateobjectvalue();calculatefitnessvalue();精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 2 页,共 15 页findbestandworstindividual();long decodechromosome(char *string ,int point,int length) /给染色体解码int i;long decimal=0;char*pointer;for(i=0,pointer=string+point;ilength;i+,pointer+)if(*pointer-0)decimal +=(
7、long)pow(2,i);return (decimal);void calculateobjectvalue() / 计算函数值int i;long temp1,temp2;double x1;for (i=0; ipopsize; i+)temp1=decodechromosome(populationi.chrom,0,length1);x1=(max_x1-min_x1)*temp1/(1024*1024-1)+min_x1;/ 目标函数修改开始populationi.value=(pow(x1,5)-3*x1-1)*(pow(x1,5)-3*x1-1);/ 目标函数修改结束void
8、 calculatefitnessvalue()/ 计算适应度int i;double temp;for(i=0;i0.0)temp=cmin+populationi.value;elsetemp=0.0;else if (functionmode=minimization)if(populationi.valuecmax)temp=cmax-populationi.value;else temp=0.0;populationi.fitness=temp;void findbestandworstindividual( ) /求最正确个体和最差个体int i;double sum=0.0;be
9、stindividual=population0;worstindividual=population0;for (i=1;i)bestindividual=populationi;best_index=i;else if (populationi.fitness=)currentbest=bestindividual;精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 4 页,共 15 页void performevolution() /演示评价结果if ()currentbest=populationbest_index;elsepopulatio
10、nworst_index=currentbest;void selectoperator() / 比例选择算法int i,index;double p,sum=0.0;double cfitnessPOPSIZE;struct individual newpopulationPOPSIZE;for(i=0;ipopsize;i+)sum+=populationi.fitness;for(i=0;ipopsize; i+)cfitnessi=populationi.fitness/sum;for(i=1;ipopsize; i+)cfitnessi=cfitnessi-1+cfitnessi;f
11、or (i=0;icfitnessindex)index+;newpopulationi=populationindex;for(i=0;ipopsize; i+)populationi=newpopulationi;void crossoveroperator() / 交叉算法精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 5 页,共 15 页int i,j;int indexPOPSIZE;int point,temp;double p;char ch;for (i=0;ipopsize;i+)indexi=i;for (i=0;ipopsiz
12、e;i+)point=rand()%(popsize-i);temp=indexi;indexi=indexpoint+i;indexpoint+i=temp;for (i=0;ipopsize-1;i+=2)p=rand()%1000/1000.0;if (ppc)point=rand()%(chromlength-1)+1;for (j=point; jchromlength;j+)ch=populationindexi.chromj;populationindexi.chromj=populationindexi+1.chromj;populationindexi+1.chromj=ch
13、;void mutationoperator() /变异操作int i,j;double p;for (i=0;ipopsize;i+)for(j=0;jchromlength;j+)p=rand()%1000/1000.0;if (ppm)populationi.chromj=(populationi.chromj=0)?1:0;精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 6 页,共 15 页void input() / 数据输入 /printf( 初始化全局变量:n);/printf( 种群大小 (50-500):);/scanf(%d,
14、&popsize);popsize=500;if(popsize%2) != 0)/printf( 种群大小已设置为偶数n);popsize+;/printf( 最大世代数 (100-300):);/scanf(%d, &maxgeneration);maxgeneration=200;/printf( 交叉率 (0.2-0.99):);/scanf(%f, &pc);pc=0.95;/printf( 变异率 (0.001-0.1):);/scanf(%f, &pm);pm=0.03;void outputtextreport()/数据输出int i;double sum;double ave
15、rage;sum=0.0;for(i=0;ipopsize;i+)sum+=populationi.value;average=sum/popsize;printf(当 前 世 代 =%dn当 前 世 代 平 均 函 数 值 =%fn当 前 世 代 最 优 函 数 值=%fn,generation,average,populationbest_index.value);void main() / 主函数 int i;long temp1,temp2;double x1,x2;generation=0;input();generateinitialpopulation();evaluatepop
16、ulation();while(generationmaxgeneration)精选学习资料 - - - - - - - - - 名师归纳总结 - - - - - - -第 7 页,共 15 页generation+;generatenextpopulation();evaluatepopulation();performevolution();outputtextreport();printf(n);printf( 统计结果 : );printf(n);/printf( 最大函数值等于:%fn,);printf( 其染色体编码为:);for (i=0;ichromlength;i+)prin
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年遗传算法C语言源代码 2022 遗传 算法 语言 源代码
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内