欢迎来到天天文库
浏览记录
ID:14280048
大小:53.50 KB
页数:18页
时间:2018-07-27
《并行遗传算法源程序(主从式)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、并行遗传算法源程序(主从式)并行遗传算法源程序(主从式)最新修改2009-02-2511:06//这是一个简单的并行遗传算法源代码,由DenisCormier(NorthCarolinaStateUniversity)的//串行程序修改得到的#defineWIN32_LEAN_AND_MEAN//从Windows头中排除极少使用的资料#include#include#include#include#include#include#in
2、clude#include#pragmacomment(lib,"Wininet.lib")#pragmacomment(lib,"mpi.lib")#pragmacomment(lib,"cxx.lib")#definePOPSIZE6/*群体大小,其实就是基因总数*/#defineMAXGENS10/*进化代数*/#defineNVARS3/*问题变量数,即基因的长度*/#definePXOVER0.8/*交叉概率*/#definePMUTATION0.15/*变异概率*/#defineTRUE1#def
3、ineFALSE0intgeneration;/*记录当前已经进化的代数*/intcur_best;/*最优个体*/FILE*galog;/*日志文件*/structgenotype/*基因类型*/{doublegene[NVARS];/*染色体字符串*/doubleupper[NVARS];/*每个基于的上界*/doublelower[NVARS];/*每个基因的下界*/doublefitness;/*个体适应度*/doublerfitness;/*相对适应度*/doublecfitness;/*累积适应度*/};structgenotype
4、population[POPSIZE+1];/*种群*/structgenotypenewpopulation[POPSIZE+1];/*新种群*/voidinitialize(void);/*种群初始化函数*/doublerandval(double,double);/*随机函数*/voidkeep_the_best(void);/*寻找最优个体*/voidelitist(void);/*保持最优*/voidselect(void);/*选择算子*/voidcrossover(void);/*交叉算子*/voidXover(int,int);
5、/*交叉操作*/voidswap(double*,double*);/*交换*/voidevaluate(void);/*个体适应度评价*/voidworker(genotype*,int)/*从处理器操作,突变和适应度评价*/voidreport(void);/*记录*//**************************************************************初始化基因值,适应值。从gadata.txt中读入每个变量的上下限,然后随机产生。**********************************
6、****************************/voidinitialize(void){FILE*infile;inti,j;doublelbound,ubound;if((infile=fopen("gadata.txt","r"))==NULL){fprintf(galog,"Cannotopeninputfile!");exit(1);}for(i=0;i7、d);for(j=0;j8、********************************************//*在上下界间产生一个数*//***************
7、d);for(j=0;j8、********************************************//*在上下界间产生一个数*//***************
8、********************************************//*在上下界间产生一个数*//***************
此文档下载收益归作者所有