遗传算法源代码

上传人:kms****20 文档编号:40892749 上传时间:2018-05-27 格式:DOC 页数:11 大小:30.50KB
返回 下载 相关 举报
遗传算法源代码_第1页
第1页 / 共11页
遗传算法源代码_第2页
第2页 / 共11页
遗传算法源代码_第3页
第3页 / 共11页
遗传算法源代码_第4页
第4页 / 共11页
遗传算法源代码_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《遗传算法源代码》由会员分享,可在线阅读,更多相关《遗传算法源代码(11页珍藏版)》请在金锄头文库上搜索。

1、遗传算法源代码遗传算法源代码#include #include#include#define POPSIZE 500#define MAXIMIZATION 1 #define MINIMIZATION 2#define Cmax 100#define Cmin 0#define LENGTH1 10#define LENGTH2 10 #define CHROMLENGTH LENGTH1+LENGTH2int FunctionMode=MAXIMIZATION;int PopSize =80;int MaxGeneration =200;double Pc = 0.6;double Pm

2、= 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 Ge

3、nerateNextPopulation(void);void EvaluatePopulation(void);void CalculateObjectValue(void); long DecodeChromosome(char *,int,int);void CalculateFitnessValue(void); void FindBestAndWorstIndividual(void); void PerformEvolution(void);void SelectionOperator(void);void CrossoverOperator(void); void Mutatio

4、nOperator(void);void OutputTextReport(void);void main(void)generation=0; GenerateInitialPopulation();EvaluatePopulation(); while(generation0.0)temp=Cmin+populationi.value;elsetemp=0.0;else if(FunctionMode=MINIMIZATION)if(populationi.valuebestindividual.fitness) bestindividual=populationi;best_index=

5、i;else if (populationi.fitness=currentbest.fitness) currentbest=bestindividual;void PerformEvolution(void) if (bestindividual.fitnesscurrentbest.fitness)currentbest=populationbest_index;elsepopulationworst_index=currentbest;void SelectionOperator(void) int i,index;double p,sum=0.0; double cfitnessPO

6、PSIZE; struct individual newpopulationPOPSIZE; 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+) p

7、oint=rand()%(PopSize-i); temp=indexi;indexi=indexpoint+i;indexpoint+i=temp;for (i=0;iPopSize-1;i+=2)p=rand()%1000/1000.0;if (pPc)point=rand()%(CHROMLENGTH-1)+1;for (j=point; jCHROMLENGTH;j+)ch=populationindexi.chromj;populationindexi.chromj=populationindexi+1.chromj;populationindexi+1.chromj=ch;void

8、 MutationOperator(void) int i,j;double p;for (i=0;iPopSize;i+)for(j=0;jCHROMLENGTH;j+)p=rand()%1001/1000.0;if (pPm)populationi.chromj=(populationi.chromj=0)?1:0;void OutputTextReport(void)int i;double sum;double average;sum=0.0;for(i=0;iPopSize;i+)sum+=populationi.value;average=sum/PopSize;printf(“gen=%d,avg=%f,best=%f,“,generation,average,currentbest.value);printf(“chromosome=“);for (i=0;iCHROMLENGTH;i+)printf(“%c“,currentbest.chromi);printf(“n“);

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号