欢迎来到天天文库
浏览记录
ID:26486046
大小:50.50 KB
页数:12页
时间:2018-11-27
《遗传算法-源程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、遗传算法话题700893的标题是:遗传算法(100分)分类:数据结构savenight(2001-11-0117:52:00)遗传算法(最好也有模拟退火,禁忌搜索算法)的delphi实现,实在不行c的也可以。急,今晚就要!!!!分不够,以后补上卷起千堆雪tyn(2001-11-0118:31:00)给你看一篇:/************************************************************************ * 简单遗传算法(SGA) ** 主要
2、算法模块有:选择交叉变异(三个遗传操作)和群体更新 ** 以及随即数发生器输入输出译码适应度计算 ** 选择机制为比例选择交叉采用单点交叉变异采用简单的位点变异方式 ** 多变量编码采用把各个变量染色体基因交替相连的方式,体现在译码模块中 *************************************************************************//*1999.10.20增添编码函数,方便输入初值*/// ----------------------------
3、--------------------------// ASimpleGeneticAlgorithm-SGA // (c)DingZhenYu1998 // ------------------------------------------------------// AllRightsReserved // ------------------------------------------------------ #include#include4、dio.h>#include //#defineNeedInputInitialChrom //如果需要输入初始值,一般是因为上次没有 //计算完成,可以接着再算 //#defineNeedInputData//输入种群中第一个的大小(0~1.0之间)#undefNeedInputInitialChrom /*NOTICE:modifyvarnumberandperchromforeachproblem.*/#definevarnumber 32 /*变量个数*/#defineperchr5、om 5 /*单变量染色体长度*/#definepopsize20 /*群体规模(应为偶数)*/#definemaxgen5000 /*遗传世代数*/#definemaxstringvarnumber*perchrom /*多变量总的染色体长度*/#definepcross0.80 /*交叉概率[0.00,1.00]*/#definepmutation0.001 /*变异概率[0.00,1.00]*/ externdoubleObj_func(double*x); structpp{ unsignedintchrom[m6、axstring]; doublex[varnumber],fitness; unsignedintparent1,parent2,xsite; }; structppoldpop[popsize],newpop[popsize],p1[popsize]; unsignedintlchrom,gen,nmutation,ncross,jcross,maxpp,minpp;doublesumfitness,avg,max,min;doublecoef;longseedl[1];doubleobjfunc(double*);/*目7、标函数,应该是正的,最小问题要化为最大问题*/voidstatistics(); /*群体适应度统计*/intrselect(); /*赌轮选择*/intflip(double); /*贝努利测试*/intcrossover(); /*一点交叉操作*/intmutation(unsignedint); /*变异操作*/voidgeneration(); /*世代更新*/voidinitialize(); /*初始化*/voidinitpop(); voidreport(); 8、 voidinitdata();voidinitreport();voiddecode(unsignedint*,double*);/*解码,变量取值在0到1之间*/
4、dio.h>#include //#defineNeedInputInitialChrom //如果需要输入初始值,一般是因为上次没有 //计算完成,可以接着再算 //#defineNeedInputData//输入种群中第一个的大小(0~1.0之间)#undefNeedInputInitialChrom /*NOTICE:modifyvarnumberandperchromforeachproblem.*/#definevarnumber 32 /*变量个数*/#defineperchr
5、om 5 /*单变量染色体长度*/#definepopsize20 /*群体规模(应为偶数)*/#definemaxgen5000 /*遗传世代数*/#definemaxstringvarnumber*perchrom /*多变量总的染色体长度*/#definepcross0.80 /*交叉概率[0.00,1.00]*/#definepmutation0.001 /*变异概率[0.00,1.00]*/ externdoubleObj_func(double*x); structpp{ unsignedintchrom[m
6、axstring]; doublex[varnumber],fitness; unsignedintparent1,parent2,xsite; }; structppoldpop[popsize],newpop[popsize],p1[popsize]; unsignedintlchrom,gen,nmutation,ncross,jcross,maxpp,minpp;doublesumfitness,avg,max,min;doublecoef;longseedl[1];doubleobjfunc(double*);/*目
7、标函数,应该是正的,最小问题要化为最大问题*/voidstatistics(); /*群体适应度统计*/intrselect(); /*赌轮选择*/intflip(double); /*贝努利测试*/intcrossover(); /*一点交叉操作*/intmutation(unsignedint); /*变异操作*/voidgeneration(); /*世代更新*/voidinitialize(); /*初始化*/voidinitpop(); voidreport();
8、 voidinitdata();voidinitreport();voiddecode(unsignedint*,double*);/*解码,变量取值在0到1之间*/
此文档下载收益归作者所有