欢迎来到天天文库
浏览记录
ID:39765482
大小:361.04 KB
页数:20页
时间:2019-07-11
《遗传算法求函数极值》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、标准文档智能优化算法第一次作业--------------遗传算法洪文杰S151000853问题:用遗传算法求解f(x)=xsin(10π*x)+2.0的最大值,x取[-1,2].一、分析:遗传算法基本思路二、实例简介1.产生初始种群实用文案标准文档s1=13(01101)s2=24(11000) s3=8 (01000)s4=19(10011)2.计算适应度假定适应度为f(s)=s^2,则f(s1)=f(13)=13^2=169f(s2)=f(24)=24^2=576f(s3)=f(8)=8^2=64f(s4)=f(19)=19^2=3613. 选
2、择染色体的选择概率为:实用文案标准文档染色体的累计概率为:根据上面的式子,可得到:实用文案标准文档例如设从区间[0,1]中产生4个随机数: r1=0.450126, r2=0.110347 r3=0.572496, r4=0.98503 实用文案标准文档4.交叉基本遗传算法(SGA)中交叉算子采用单点交叉算子。单点交叉运算5. 变异实用文案标准文档6. 至下一代,适应度计算→选择→交叉→变异,直至满足终止条件三、解决问题实用文案标准文档初始化输入种群大小,交叉概率,变异概率等条件根据精度编码将区间[-1,2]分成Num份,再通过Num求解
3、种群基因个数([-1,2]用二进制等分)计算每个个体的适应度,该题适应度函数就是f(X)根据适应度求解积累概率,并用轮盘赌法选着个体产生备选种群在备选种群中,利用交叉概率,随机选择个体,再随机选择交叉点进行单点交叉,形成交叉后的种群在交叉后种群中,利用变异概率,随机选择个体,再随机选择变异点进行单点变异,形成变异后的种群是否达到迭代次数输出结果最大值。是否实用文案标准文档实用文案标准文档四、实验结果源代码:/*问题:用遗传算法求解f(x)=xsin(10π*x)+2.0的最大值,x取[-1,2].*//*洪文杰2016-3-9.智能优化算法第一次作业
4、*/#include//#includ#include#include#include#includeusingnamespacestd;#defineNUMBER50//种群规模#defineGENE_NUMBER10000//迭代次数intUnit[NUMBER][30];//初始种群intUnit_choose[NUMBER][30];//选择、交叉、变异后的种群intNumber[NUMBER];//被选择的个体编号实用文案标准文档fl
5、oatFitness[NUMBER];//适应度floatselect_probability[NUMBER];//选择概率floataccumula_probability[NUMBER];//积累概率floatf_max=0.0;//最大值floatf_x=0.0;//最大值对应的自变量inthwj_coding(intstart,intend);//编码voidhwj_initial_population(intnum);//产生初始种群voidhwj_fitness(intnum);//适应度计算voidhwj_choose();//选择个体
6、inthwj_binary_search(intl,intr,floattemp);//查找选择//voidhwj_N_M(inta[],intb[],intN,intM);//从M个数中选N个不一样的数voidhwj_cross(intnum,floatcross);//交叉后的得到种群voidhwj_aberrance(intnum,floataberrance);//变异后的得到的种群voidhwj_max(intnum);//找到最适应的个体intmain(){intstrat,end;//区间intNum;//编码大小floatcross=
7、0.8;//交叉概率floataberrance=0.04;//变异概率intkey=1;cout<<"请输入求解区间:"<>strat>>end;Num=hwj_coding(strat,end);cout<<"Num:"<8、--"<
8、--"<
此文档下载收益归作者所有