欢迎来到天天文库
浏览记录
ID:16036164
大小:106.50 KB
页数:16页
时间:2018-08-07
《遗传算法求解f(x)=xcosx+2的最大值》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、遗传算法求解f(x)=xcosx+2的最大值其中在尺度变换部分应用到了类似模拟退火算法部分,所有变量均使用汉语拼音很好懂//中国电子科技集团公司//第一研究室//呼文韬//hu_hu605@163.com//随机初始种群//编码方式为格雷码//选择方法为随机遍历//采用了精英保存策略//采用了自适应的交叉率和变异率//采用了与模拟退火算法相结合的尺度变换//采用了均匀交叉法#include#include#include#include#
2、include#include#include#defineIM12147483563#defineIM22147483399#defineAM(1.0/IM1)#defineIMM1(IM1-1)#defineIA140014#defineIA240692#defineIQ153668#defineIQ252774#defineIR112211#defineIR23791#defineNTAB32#defineNDIV(1+IMM1/NTAB)#defi
3、neEPS1.2e-7#defineRNMX(1.0-EPS)#definezhizhenjuli0.005#definePI3.14159265358#defineT0100000//温度要取得很高才行。#definezhongqunshu1200#definezuobianjie-2000#defineyoubianjie2000unsignedintseed=0;//seed为种子,要设为全局变量voidmysrand(longinti)//初始化种子{seed=-i;}longa[1];//doublehu
4、ndun;//doublec=4;//设置全局变量structindividual{unsigned*chrom;//染色体;doublegeti;//变量值doubleshiyingdu;//目标函数的值;doublefitness;//变换后的适应度值;};individual*zuiyougeti;//精英保存策略intzhongqunshu;//种群大小individual*nowpop;//当前代individual*newpop;//新一代doublesumfitness;//当代的总适应度fitnes
5、sdoublesumshiyingdu;//当代的总适应度shiyingdudoublemaxfitness;//最大适应度doubleavefitness;//平均适应度doublemaxshiyingdu;//最大适应度doubleavgshiyingdu;//平均适应度floatpc;//交叉概率floatpm;//变异概率intlchrom;//染色体长度intmaxgen;//最大遗传代数intgen;//遗传代数//函数intflipc(double,double);//判断是否交叉intflipm(d
6、ouble);//判断是否变异intrnd(intlow,inthigh);//产生low与high之间的任意数voidinitialize();//遗传算法初始化voidpreselectfitness();//计算sumfiness,avefitness,maxfitnessvoidgeneration();doublesuijibianli();//产生随机遍历指针intfuzhi(float);//选择要复制的个体voidcrossover(individual,individual,individual&
7、,individual&);//交叉voidbianyi(individual&);//变异voidmubiaohanshu(individual&);//计算适应度voidchidubianhuan(individual&);//对shiyingdu进行尺度变换赋给fitnessdoubleran1(long*);//随机数初始voidbianma(doublebianliang,unsigned*p);//编码doubleyima(unsigned*p);voidguanjiancanshujisuan();/
8、/计算shiyingdu,根据shiyingdu计算sumshiyingdu,对shiyingdu进行尺度变换变成fitness,根据fitness计算sumfitness,avefitness,maxfitnessvoidjingyingbaoliu();voidglp(intn,ints,int*,int(*)[1],float(*)[1]);//glp
此文档下载收益归作者所有