




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
#include#include#include#include#include#define POPSIZE 500#define MAXIMIZATION 1#define MINIMIZATION 2#define random(x) (rand()%(x)#define Cmax 100 /*最大值函数适应度的设置*/#define Cmin 0 /*最小值函数适应度的设置*/#define LENGTH1 10#define LENGTH2 10#define CHROMLENGTH LENGTH1+LENGTH2int FunctionMode=MAXIMIZATION; /*optimization type即函数类型,是求最大值函数还是最小值函数*/int a=100;int PopSize=80;int MaxGeneration=200;double Pc=0.6;double Pm=0.001;struct individualchar chromCHROMLENGTH+1;double value; double fitness;int generation;int best_index;int worst_index;struct individual bestindividual;struct individual worstindividual;struct individual currentbest;struct individual populationPOPSIZE;void GenerateInitialPopulation(void);void GenerateNextPopulation(void);void EvaluatePopulation(void);long DecodeChromosome(char *,int,int);void CaculateObjectValue(void);void CaculateFitnessValue(void);void FindBestAndWorstIndividual(void);void PerformEvolution(void);void SelectionOperator(void);void CrossoverOperator(void);void MutationOperator(void);void OutputTextReport(void);void main() srand(unsigned)time(NULL); /随时间而改变随机数generation=0; GenerateInitialPopulation(); EvaluatePopulation(); while(generationMaxGeneration)generation+; GenerateNextPopulation(); EvaluatePopulation(); PerformEvolution(); OutputTextReport();void GenerateInitialPopulation(void)int i,j;for(i=0;iPopSize;i+)for(j=0;jCHROMLENGTH;j+)populationi.chromj=(random(10)5)?1:0;populationi.chromCHROMLENGTH=0;void GenerateNextPopulation(void)SelectionOperator();CrossoverOperator();MutationOperator();void EvaluatePopulation(void)CaculateObjectValue();CaculateFitnessValue();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+)decimal+=(*pointer-0)(length-1-i);return(decimal);void CaculateObjectValue(void)int i;long temp1,temp2;double x1,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);void CaculateFitnessValue(void)int i;double temp;for(i=0;i0.0)temp=Cmin+populationi.value;else temp=0.0;if(FunctionMode=MINIMIZATION)if(populationi.valueCmax)temp=Cmax-populationi.value;else temp=0.0; populationi.fitness=temp;void FindBestAndWorstIndividual(void)int i;double sum=0.0;bestindividual=population0;worstindividual=population0;for(i=1;ibestindividual.fitness)bestindividual=populationi;best_index=i; if(populationi.fitnesscurrentbest.fitness) currentbest=bestindividual;void PerformEvolution(void)if(bestindividual.fitnesscurrentbest.fitness) currentbest=populationbest_index;else populationworst_index=currentbest;void SelectionOperator(void)int i,index;double p;double 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;for(i=0;icfitnessindex) index+;newpopulationi=populationindex;for(i=0;iPopSize;i+) populationi=newpopulationi;void CrossoverOperator(void)int i,j;int indexPOPSIZE;int point,temp; double p; char ch;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;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;void MutationOperator(void)int i,j; double p;for(i=0;iPopSize;i+) for(j=0;jCHROMLENGTH;j+) p=(rand()/(double)(RAND_MAX);if(pPm)populationi.chromj=(populationi.chromj=0)?1:0;void OutputTextReport(void) int i=0;double average;fstream kan_table; kan_table.open(f:kan_table.txt,ios:app|ios:out);double sum;sum=0.0;for(i=0;iPopSize;i+) sum+=populationi.value;average=sum/PopSize; kan_tablegen=generation,;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 质量管理外审员考试题及答案
- 难点详解人教版八年级上册物理光现象《光的直线传播》专项攻克练习题(含答案详解)
- 高三模考考试题型及答案
- 难点解析-人教版八年级上册物理光现象《光的直线传播》综合练习试题(含答案解析)
- 2025护资考试真题及答案题库
- 乌市道德与法治课标考试题及答案
- 2025年陕西省汉中市招聘政府专职消防员行政职业能力测验练习题及答案
- 多相反应器流场模拟研究-第1篇-洞察与解读
- 2025年《健康管理师》理论考试练习题及答案
- 跨境合作协议履约保证函(8篇)
- 企业内部控制流程培训资料
- 七年级体育与健康全册教案设计
- GB/T 23436-2025汽车风窗玻璃清洗液
- 员工受伤安全认知培训课件
- 经销商保证金管理制度
- 2025年高考物理山东卷试卷评析及备考策略(课件)
- 护理人力资源配置
- 2025年“学宪法、讲宪法”竞赛测试题库及答案
- 十年(2016-2025)高考地理真题分类汇编 专题07 自然灾害与地理信息技术(全国通.用)(原卷版)
- 2025年大队委笔试题目及答案
- 收费站复工复产安全培训课件
评论
0/150
提交评论