1 / 9
文档名称:

遗传-算法.docx

格式:docx   大小:21KB   页数:9页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

遗传-算法.docx

上传人:文库旗舰店 2020/3/31 文件大小:21 KB

下载得到文件列表

遗传-算法.docx

相关文档

文档介绍

文档介绍:#include<>#include<>#include<>#include<>#defineSUM20/*总共的染色体数量*/#defineMAXloop1200/*最大循环次数*/#/*若两次最优值之差小于此数则认为结果没有改变*/#/*交叉概率*/#/*变异概率*/structgen/*定义染色体结构*/{intinfo;doublesuitability;};structgengen_group[SUM];/*定义一个含有20个染色体的组*/structgengen_new[SUM];structgengen_result;/*记录最优的染色体*/intresult_unchange_time;/*记录在error前提下最优值未改变的循环次数*/structlog/*形成链表,记录每次循环所产生的最优的适应度*/{doublesuitability;structlog*next;}llog,*head,*end;intlog_num;/*链表长度*/voidinitiate();/*初始化函数*/voidevaluation(intflag);/*适应度评估和排序函数*/voidcross();/*交叉函数*/voidselection();/*选择函数*/intrecord();/*记录每次最优解和判断循环是否终止*/voidmutation();/*变异函数*/voidshowresult(int);/*显示结果*/intrandsign(doublep);/*按概率p产生0,1随机数,p表示产生值1的概率*/intrandbit(inti,intj);/*产生i,j间的随机整数*/intrandnum();/*随机产生14个位(基因)组成的染色体*/intconvertionD2B(doublex);/*编码*/doubleconvertionB2D(intx);/*解码*/intcreatemask(inta);/*交叉操作*/intmain(){inti,flag;flag=0;initiate();evaluation(0);for(i=0;i<MAXloop;i++){cross();evaluation(1);selection();if(record()==1){flag=1;break;}mutation();}showresult(flag);system("pause");return0;}voidinitiate(){inti,stime;longltime;ltime=time(NULL);stime=(unsigned)ltime/2;srand(stime);for(i=0;i<SUM;i++){gen_group[i].info=randnum();}=1000;result_unchange_time=0;head=end=(structlog*)malloc(sizeof(llog));if(head==NULL){printf("\n内存不够!\n");exit(0);}end->next=NULL;log_num=1;}v