




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能优化算法第一次作业--------------遗传算法洪文杰S151000853问题:用遗传算法求解f(x)=xsin(10π*x)+的最大值,x取[-1,2].一、剖析:遗传算法基本思路二、实例简介产生初始种群s1=13(01101)s2=24(11000)s3=8(01000)s4=19(10011)计算适应度假设适应度为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=361选择染色体的选择概率为:染色体的累计概率为:依据上边的式子,可获得:比如设从区间[0,1]中产生4个随机数:r1=,r2=r3=,r4=交错基本遗传算法(SGA)中交错算子采纳单点交错算子。单点交错运算变异至下一代,适应度计算→选择→交错→变异,直至知足停止条件三、解决问题初始化输入种群大小,交错概率,变异概率等条件依据精度编码将区间[-1,2]分红Num份,再经过Num求解种群基因个数计算每个个体的适应度,该题适应度函数就是f(X)依据适应度求解累积概率,并用轮盘赌法选着个体产生备选种群在备选种群中,利用交错概率,随机选择个体,再随机选择交错点进在交错后种群中,利用变异概率,随机选择个体,再随机选择变异点是否输出结果最大能否达到值。四、实验结果源代码:/*问题:用遗传算法求解f(x)=xsin(10π*x)+的最大值,x取[-1,2].*//*洪文杰2016-3-9.智能优化算法第一次作业*/#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];//选择概率floataccumula_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);cout<<"Num:"<<Num<<endl;cout<<"--------------------------1-----------------"<<endl;hwj_initial_population(Num);//cout<<"--------------------------2初始种群-----------------"<<endl;/*
for(inti=0;i<NUMBER;i++){for(intj=0;j<Num;j++){cout<<Unit[i][j]<<'';}cout<<endl;}*/while(key!=GENE_NUMBER){hwj_fitness(Num);//
cout<<"--------------------------3
适应度
-----------------"<<endl;for(inti=0;i<NUMBER;i++){cout<<Fitness[i]<<endl;}hwj_choose();//cout<<"--------------------------4被选择的个体-----------------"<<endl;/*for(inti=0;i<NUMBER;i++){for(intj=0;j<Num;j++){cout<<Unit_choose[i][j]<<'';}cout<<endl;}*/hwj_cross(Num,cross);/*cout<<"--------------------------5交错后的种群-----------------"<<endl;for(inti=0;i<NUMBER;i++){for(intj=0;j<Num;j++){cout<<Unit[i][j]<<'';}cout<<endl;}*/hwj_aberrance(Num,aberrance);/*
cout<<"--------------------------6
变异后的种群
-----------------"<<endl;for(inti=0;i<NUMBER;i++){for(intj=0;j<Num;j++){cout<<Unit[i][j]<<'';}cout<<endl;}*/key++;hwj_max(Num);}cout<<"最大值是对应的cout<<f_x<<endl;
x值是:"<<endl;cout<<"最大值为:"<<f_max<<endl;return0;}inthwj_coding(intstart,intend){//种群编码floatprecision;inttemp=2;intsum;intN=1;cout<<"请输入精度范围:"<<endl;cin>>precision;if(precision==0){cout<<"对不起精度不可以为零:"<<endl;return0;}else{sum=(end-start)/precision;cout<<"sum:"<<sum<<endl;while(temp<sum){temp*=2;N++;}returnN;}}voidhwj_initial_population(intnum){//srand(time(NULL));for(inti=0;i<NUMBER;i++){for(intj=0;j<num;j++){Unit[i][j]=rand()%2;
生成初始种群}}}voidhwj_fitness(intnum){//计算适应度floatsum;inttemp;for(inti=0;i<NUMBER;i++){temp=1;sum=;for(intj=num-1;j>=0;j--){sum+=Unit[i][j]*temp;temp*=;}Fitness[i]=sum*3/;cout<<Fitness[i];cout<<"--------------+++++";Fitness[i]=Fitness[i]*sin(10**Fitness[i])+;cout<<Fitness[i]<<endl;}}inthwj_binary_search(intl,intr,floattemp){for(inti=0;i<NUMBER;i++){if(temp<=accumula_probability[i]&&temp>accumula_probability[i-1]){returni;}}return-1;}voidhwj_choose(){//选择个体floatsum=;floattemp;inti;for(i=0;i<NUMBER;i++){sum+=Fitness[i];}select_probability[0]=Fitness[0]/sum;temp=accumula_probability[0]=select_probability[0];for(i=1;i<NUMBER;i++){select_probability[i]=Fitness[i]/sum;temp+=select_probability[i];accumula_probability[i]=temp;cout<<accumula_probability[i]<<endl;}for(i=0;i<NUMBER;i++){srand(time(NULL));temp=(rand()%1000000)/;cout<<temp;Number[i]=hwj_binary_search(0,NUMBER,temp);cout<<Number[i]<<endl;for(intj=0;j<NUMBER;j++){Unit_choose[i][j]=Unit[Number[i]][j];}}}/*voidhwj_N_M(inta[],intb[],intN,intM){//从M个数中选N个不同样的数inti=1;srand(time(NULL));a[0]=rand()%M;b[a[0]]=1;while(i!=N){a[i]=rand()%M;if(b[a[i]]==0){i++;b[a[i]]=1;cout<<a[i]<<endl;}}cout<<a[i]<<''<<b[a[i]]<<endl;}*/voidhwj_cross(intnum,floatcross){//交错后的获得种群intnum_cross=NUMBER*cross;intk;//交错点inti,j;if(num_cross%2!=0){num_cross=num_cross+1;}//需要交错的个体数intcro[NUMBER];//被交错的个体编号inttemp[NUMBER];//能否交错数组一览for(i=0;i<NUMBER;i++){cro[i]=-1;temp[i]=0;}hwj_N_M(cro,temp,num_cross,NUMBER);srand(time(NULL));cro[0]=rand()%NUMBER;temp[cro[0]]=1;i=1;while(i!=num_cross){cro[i]=rand()%NUMBER;if(temp[cro[i]]==0){temp[cro[i]]=1;i++;}}for(inti=0;i<NUMBER;i++){cout<<temp[i]<<""<<cro[i]<<endl;}cout<<num_cross<<endl;for(i=0;i<num_cross/2;i++){srand(time(NULL));k=rand()%num;for(j=0;j<num;j++){if(j<=k){Unit[i][j]=Unit_choose[cro[num_cross-i]][j];Unit[i+num_cross/2][j]=Unit_choose[cro[i]][j];}else{Unit[i][j]=Unit_choose[cro[i]][j];Unit[i+num_cross/2][j]=Unit_choose[cro[i]][j];}}}for(i=0;i<NUMBER;i++){cout<<temp[i]<<endl;if(temp[i]==0){for(j=0;j<num;j++){Unit[num_cross][j]=Unit_choose[i][j];}num_cross++;}}}voidhwj_aberrance(intnum,floataberrance){//变异后的获得的种群intnum_aberrance=NUMBER*aberrance;//变异的个体数intk;//变异点intabe[NUMBER];//变异的个体编号inttemp[NUMBER];//能否变异数组一览inti,j,p;for(i=0;i<NUMBER;i++){abe[i]=-1;temp[i]=0;}hwj_N_M(cro,temp,num_cross,NUMBER);srand(time(NULL));abe[0]=rand()%NUMBER;temp[abe[0]]=1;i=1;while(i!=num_aberrance){abe[i]=rand()%NUMBER;if(temp[abe[i]]==0){temp[abe[i]]=1;i++;}}for(i=0;i<NUMBER;i++){for(j=0;j<num_aberrance;j++){if(i==abe[j]){k=rand()%num;for(p=0;p<num;p++){if(p==k){i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年学校学校教研工作方案
- 2025二月桉树花粉过敏源控制与社区补偿协议
- 2025年个人工作方案销售
- 车位出租协议(转租版)
- SolidWorks 2017机械设计完全实例教程 第3版 课件006钣金和焊件
- PHP程序设计项目化教程电子教案10 用户注册-前后端数据交互
- 2025年玻璃钢设备项目可行性研究报告
- 吉林省松原市小学2024-2025学年三年级数学第二学期期末统考模拟试题含解析
- 玉林市2024-2025学年六年级下学期小升初真题数学试卷含解析
- 湖北省潜江市积玉口镇中学2024-2025学年初三第三次中考模拟考试化学试题含解析
- (一模)桂林市、来宾市2025届高考第一次跨市联合模拟考试生物试卷(含答案详解)
- 四川省宜宾市第三中学2024-2025学年高二下学期3月月考语文试题(含答案)
- 北京市消防条例解读
- 农业合作社管理与运营模式试题及答案
- 2025年版中等职业教育专业教学标准 710205 大数据技术应用
- 项目燃油供给系统检修广东交通汽车技术系课件
- 2025榆林定边县国有企业财务会计人员招聘(10人)笔试参考题库附带答案详解
- 2024年公务员考试中财务知识的考察试题及答案
- 治理盐碱可行性报告
- 任务三家庭清扫有工序(教学课件)二年级下册劳动技术(人美版)
- 部编版2024~2025学年度第二学期六年级语文期中考试卷(有答案)
评论
0/150
提交评论