文档介绍:智能优化算法第一次作业--------------遗传算法洪文杰S151000853问题:用遗传算法求解f(x)=xsin(10π*x)+,x取[-1,2].一、分析:遗传算法基本思路二、=13(01101)s2=24(11000) s3=8 (01000)s4=19(10011)(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. 选择染色体的选择概率为:染色体的累计概率为:根据上面的式子,可得到:例如设从区间[0,1]中产生4个随机数:   r1=,  r2=   r3=,  r4= (SGA)中交叉算子采用单点交叉算子。单点交叉运算5. 变异6. 至下一代,适应度计算→选择→交叉→变异,直至满足终止条件三、解决问题初始化输入种群大小,交叉概率,变异概率等条件根据精度编码将区间[-1,2]分成Num份,再通过Num求解种群基因个数([-1,2]用二进制等分)计算每个个体的适应度,该题适应度函数就是f(X)根据适应度求解积累概率,并用轮盘赌法选着个体产生备选种群在备选种群中,利用交叉概率,随机选择个体,再随机选择交叉点进行单点交叉,形成交叉后的种群在交叉后种群中,利用变异概率,随机选择个体,再随机选择变异点进行单点变异,形成变异后的种群是否达到迭代次数输出结果最大值。是否四、实验结果源代码:/*问题:用遗传算法求解f(x)=xsin(10π*x)+,x取[-1,2].*//*洪文杰2016-3-*/#include<iostream>//#includ<>#include<>#include<>#include<>#include<>usingnamespacestd;#defineNUMBER50//种群规模#defineGENE_NUMBER10000//迭代次数intUnit[NUMBER][30];//初始种群intUnit_choose[NUMBER][30];//选择、交叉、变异后的种群intNumber[NUMBER];//被选择的个体编号floatFitness[NUMBER];//适应度floatselect_probability[NUMBER];//umula_probability[NUMBER];//积累概率floatf_max=;//最大值floatf_x=;//最大值对应的自变量inthwj_coding(intstart,intend);//编码voidhwj_initial_population(intnum);//产生初始种群voidhwj_fitness(intnum);//适应度计算voidhwj_choose();//选择个体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=;//交叉概率 floataberrance=;//变异概率 intkey=1; cout<<"请输入求解区间:"<<endl; cin>>strat>>end; Num=hwj_coding(strat,end);