欢迎来到天天文库
浏览记录
ID:33702552
大小:54.80 KB
页数:17页
时间:2019-02-28
《标准遗传算法-c++源程序(二进制)》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、#include#include#include#include#include#definePOPSIZE500#defineMAXIMIZATION1#defineMINIMIZATION2#definerandom(x)(rand()%(x))#defineCmax100/*最大值函数适应度的设置*/#defineCmin0/*最小值函数适应度的设置*/#defineLENGTH110#defineLENGTH210#defineCHROMLE
2、NGTHLENGTH1+LENGTH2intFunctionMode二MAXIMIZATION;/*optimizationtype即函数类型,是求最大值函数还是最小值函数*/inta=100;intPopSize=80;intMaxGeneration=200;doublePc=0.6;doublePm=0.001;structindividual{charchrom[CHROMLENGTH+1];doublevalue;doublefitness;};intgeneration;intbest_index;intworst_index;str
3、uctindividualbestindividual;structindividualworstindividual;structindividualcurrentbest;structindividualpopulation[POPSIZE];voidGeneratelnitialPopulation(void);voidGenerateNextPopulation(void);voidEvaluatePopulation(void);longDecodeChromosome(char*,int,int);voidCaculateObject
4、Value(void);voidCaculateFitnessValue(void);voidFindBestAndWorstlndividual(void);voidPerformEvolution(void);voidSelectionOperator(void);voidCrossoverOperator(void);voidMutationOperator(void);voidOutputTextReport(void);voidmain()srand((unsigned)time(NULL));〃随时间而改变随机数generation=
5、0;GenerateInitialPopulation();EvaluatePopulation();while(generation6、lation[i].chrom[j]=(random(10)<5)?T:O;population[i].chrom[CHROMLENGTH]=, ,;}voidGenerateNextPopulation(void){SelectionOperator();CrossoverOperator();MutationOperator();voidEvaluatePopulation(void){CaculateObjectValue();CaculateFitnessValue();FindBestAndWorstIndividual();long7、DecodeChromosome(char*string,intpoint,intlength){inti;longdecimal二0;char^pointer;for(i=0,pointer=string+point;i8、=DecodeChromosome(population[i].chrom,0,LENGTH1);temp2=DecodeChromos
6、lation[i].chrom[j]=(random(10)<5)?T:O;population[i].chrom[CHROMLENGTH]=, ,;}voidGenerateNextPopulation(void){SelectionOperator();CrossoverOperator();MutationOperator();voidEvaluatePopulation(void){CaculateObjectValue();CaculateFitnessValue();FindBestAndWorstIndividual();long
7、DecodeChromosome(char*string,intpoint,intlength){inti;longdecimal二0;char^pointer;for(i=0,pointer=string+point;i8、=DecodeChromosome(population[i].chrom,0,LENGTH1);temp2=DecodeChromos
8、=DecodeChromosome(population[i].chrom,0,LENGTH1);temp2=DecodeChromos
此文档下载收益归作者所有