




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include#include#include#include#include#definePOPSIZE500#defineMAXIMIZATION1#defineMINIMIZATION2#definerandom(x)(rand()%(x)#defineCmax100/*最大值函数适应度的设置*/#defineCmin0/*最小值函数适应度的设置*/#defineLENGTH110#defineLENGTH210#defineCHROMLENGTHLENGTH1+LENGTH2intFunctionMode=MAXIMIZATION;/optimizationtype即函数类型,是求最
2、大值函数还是最小值函数*/inta=100;intPopSize=80;intMaxGeneration=200;doublePc=0.6;doublePm=0.001;structindividualcharchromCHROMLENGTH+1;doublevalue;doublefitness;intgeneration;intbest_index;intworst_index;structindividualbestindividual;structindividualworstindividual;structindividualcurrentbest;structindividual
3、populationPOPSIZE;voidGenerateInitialPopulation(void);voidGenerateNextPopulation(void);voidEvaluatePopulation(void);longDecodeChromosome(char*,int,int);voidCaculateObjectValue(void);voidCaculateFitnessValue(void);voidFindBestAndWorstIndividual(void);voidPerformEvolution(void);voidSelectionOperator(v
4、oid);voidCrossoverOperator(void);voidMutationOperator(void);voidOutputTextReport(void);voidmain()srand(unsigned)time(NULL);/generation=0;GenerateInitialPopulation();EvaluatePopulation();while(generationMaxGeneration)generation+;GenerateNextPopulation();EvaluatePopulation();PerformEvolution();OutputT
5、extReport();voidGenerateInitialPopulation(void)inti,j;for(i=0;iPopSize;i+)for(j=0;jCHROMLENGTH;j+)populationi.chromj=(random(10)5)?1:0;populationi.chromCHROMLENGTH=0;voidGenerateNextPopulation(void)SelectionOperator();CrossoverOperator();MutationOperator();voidEvaluatePopulation(void)CaculateObjectV
6、alue();CaculateFitnessValue();FindBestAndWorstIndividual();longDecodeChromosome(char*string,intpoint,intlength)inti;longdecimal=0;char*pointer;for(i=0,pointer=string+point;ilength;i+,pointer+)decimal+=(*pointer-0)(length-1-i);return(decimal);voidCaculateObjectValue(void)inti;longtemp1,temp2;doublex1
7、,x2;for(i=0;iPopSize;i+)temp1=DecodeChromosome(populationi.chrom,0,LENGTH1);temp2=DecodeChromosome(populationi.chrom,LENGTH1,LENGTH2);x1=4.096*temp1/1023.0-2.048;x2=4.096*temp2/1023.0-2.048;populationi.value=100*(x1*x1-x2)*(x1*x1-x2)+(1-x1)*(1-x1);voidCaculateFitnessValue(void)inti;doubletemp;for(i=
8、0;i0.0)temp=Cmin+populationi.value;elsetemp=0.0;if(FunctionMode=MINIMIZATION)if(populationi.valueCmax)temp=Cmax-populationi.value;elsetemp=0.0;populationi.fitness=temp;voidFindBestAndWorstIndividual(void)inti;doublesum=0.0;bestindividual=population0;worstindividual=population0;for(i=1;ibestindividua
9、l.fitness)bestindividual=populationi;best_index=i;if(populationi.fitnesscurrentbest.fitness)currentbest=bestindividual;voidPerformEvolution(void)if(bestindividual.fitnesscurrentbest.fitness)currentbest=populationbest_index;elsepopulationworst_index=currentbest;voidSelectionOperator(void)inti,index;d
10、oublep;doublesum=0.0;doublecfitnessPOPSIZE;structindividualnewpopulationPOPSIZE;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;for(i=0;icfitnessindex)index+;newpopulationi=populationindex;for(i=0;
11、iPopSize;i+)populationi=newpopulationi;voidCrossoverOperator(void)inti,j;intindexPOPSIZE;intpoint,temp;doublep;charch;for(i=0;iPopSize;i+)indexi=i;for(i=0;iPopSize;i+)point=random(PopSize-i);/*random(PopSize-1)=rand()%(PopSize-1)*/temp=indexi;indexi=indexpoint+i;indexpoint+i=temp;/*/for(i=0;iPopSize
12、;i+=2)p=(rand()/(double)(RAND_MAX);if(pPc)point=rand()%(CHROMLENGTH-1)+1;/random(CHROMLENGTH-1)+1;for(j=point;jCHROMLENGTH;j+)ch=populationindexi.chromj;populationindexi.chromj=populationindexi+1.chromj;populationindexi+1.chromj=ch;voidMutationOperator(void)inti,j;doublep;for(i=0;iPopSize;i+)for(j=0
13、;jCHROMLENGTH;j+)p=(rand()/(double)(RAND_MAX);if(pPm)populationi.chromj=(populationi.chromj=0)?1:0;voidOutputTextReport(void)inti=0;doubleaverage;fstreamkan_table;kan_table.open(f:kan_table.txt,ios:app|ios:out);doublesum;sum=0.0;for(i=0;iPopSize;i+)sum+=populationi.value;average=sum/PopSize;kan_tablegen=generation,;kan_tablea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO 4892-4:2024 EN Plastics - Methods of exposure to laboratory light sources - Part 4: Open-flame carbon-arc lamps
- 【正版授权】 ISO 21068-4:2024 EN Chemical analysis of raw materials and refractory products containing silicon-carbide,silicon-nitride,silicon-oxynitride and sialon - Part 4: XRD metho
- 【正版授权】 ISO 13506-1:2024 EN Protective clothing against heat and flame - Part 1: Test method for complete garments - Measurement of transferred energy using an instrumented manikin
- 2025年度婴幼儿保育员职业资格认证聘用合同
- 2025年度茶叶出口退税代理服务合同-@-3
- 2025年度防盗门安装工程安全生产责任合同
- 2025年度农村土地征收补偿安置协议
- 2025年度董事任期考核及聘任合同
- 2025年陈设艺术陶瓷制品项目发展计划
- 动手实践小班农业劳动体验计划
- 部编版语文一年级下册第一单元教材解读
- 护士临床护理组长
- 2025保安部年度工作计划
- 土建、装饰、维修改造等零星工程施工组织设计技术标
- 宠物猫护理教学
- 高速公路养护作业安全培训内容
- 2024年江苏经贸职业技术学院单招职业适应性测试题库
- 《大白菜种植栽培技》课件
- 北京工业大学《数据挖掘》2023-2024学年第一学期期末试卷
- 图书借阅登记表
- 标准化机房改造方案
评论
0/150
提交评论