版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、人工智能上机实验报告学号:1708090122姓名:陶浩所在系:信息学院班级:惠普测试171班实验名称:遗传算法的实现与应用实验日期2019年12月26日实验指导教师翌邂实验机房D2-602.实验目的:理解遗传算法的基本过程,掌握其选择-复制、交叉、变异三种运算。掌握基本遗传算法,会建立适应度函数,通过遗传算法的迭代实现优化问题。.实验内容及要求:实验内容:采用遗传算法求解以下函数的最大值:1(112)(122)(11)(11)其中2122采用基本粒子群算法求解以下函数的最小值:(在实现过程中体会迭代步数、粒子群规模、学习因子、惯性权重对结果的影响)30%2Ii=13算法设计(1)遗传算法中有
2、三种关于染色体的运算:选择-复制,交叉和变异,这三种运算被称为遗传操作或者遗传算子。/#includestdafx.h#include#include#include#include#include#include#include#defineLENGTH3usingnamespacestd;classchromosomepublic:intx1,x2;intvalue;doublefitness;voidassign(inta,intb)x1a;x2=b;cal_value();voidcal_value()value=x1LENGTH;value|=x2;voidcal_fitness()
3、fitness=100*(x1*x1-x2)*(x1*x2-x2)+(1-x1)*(1-x1);doubletotal_fitness=0;vectorpopulation2;vectortemp;intcop_counter=0;intselector=0;intand1=(1LENGTH)-1)LENGTH;intand2=(1LENGTH)-6;intvariation_percent=2;intrandom(intend)returnrand()%(end+1);/选择-复制voidselect_population()intcounter=0;intnew_sel=(selector
4、+1)%2;populationnew_sel.clear();while(counter=3)intpos=populationselector.size()-1;intr=random(total_fitness);intend=populationselector0.fitness;for(inti=1;i(int)populationselector.size();i+)if(r=end)pos=i-1;break;elseend+=populationselectori.fitness;populationnew_sel.push_back(populationselectorpos
5、);counter+;/交叉voidcop(chromosome&temp1,chromosome&temp2)chromosomenew1,new2;intpos=random(LENGTH*2-2);intv1=temp1.value;intv2=temp2.value;intlength=LENGTH*2;intnum1=(1pos)-1)(length-pos);intnum2=(1LENGTH,new_v1&and2);new2.assign(new_v2&and1)LENGTH,new_v2&and2);temp.push_back(new1);temp.push_back(new
6、2);/种群内随机进行交配voidcopulation()chromosometemp1,temp2;intremainder=4;intr1,r2;intnew_sel=(selector+1)%2;cop_counter=0;while(remainder)r1=random(remainder-1);temp1=populationnew_selr1;populationnew_sel.erase(populationnew_sel.begin()+r1);remainder-;r2=random(remainder-1);temp2=populationnew_selr2;popula
7、tionnew_sel.erase(populationnew_sel.begin()+r2);remainder-;cop(temp1,temp2);populationnew_sel=temp;temp.clear();/变异voidvariation()intnew_sel=(selector+1)%2;for(inti=0;i(int)populationnew_sel.size();i+)intrand=random(99)+1;if(rand=2)intpos=random(LENGTH*2-1)+1;intnum=1LENGTH;populationnew_seli.x2=pop
8、ulationnew_seli.value&and2;/更新适应度voidupdate_fitness()total_fitness=0;for(inti=0;i(int)populationselector.size();i+)populationselectori.cal_fitness();total_fitness+=populationselectori.fitness;boolcmp(chromosomea,chromosomeb)returna.fitnessb.fitness;voidinit()srand(unsigned)time(NULL);chromosomechr;c
9、hr.assign(-2,2);population0.push_back(chr);chr.assign(-1.048,1.048);population0.push_back(chr);chr.assign(-1,1);population0.push_back(chr);chr.assign(4.048,0.048);population0.push_back(chr);intmain()intcounter=0;init();intmaxn=0;intmaxvalue;while(countermaxn)maxn=populationselectorpopulationselector
10、.size()-1.fitness;maxvalue=populationselectorpopulationselector.size()-1.value;select_population();copulation();variation();selector=(selector+1)%2;counter+;printf(得到的x1和x2为:);printf(x1:%dx2:%dn,(maxvalue&and1)LENGTH,maxvalue&and2);doublex1=(maxvalue&and1)LENGTH,x2=maxvalue&and2;doublex;x=100*(x1*x1
11、-x2)*(x1*x2-x2)+(1-x1)*(1-x1);printf(采用遗传算法求解函数的最大值:x=%fn,x);运行结果:蜜C:W蜜C:WINDOWSsystem32cmd.exe得到的xl和工2为:kLTx2:2杲用遗存章法兼解函数的最大值:后56431000000请按任意键继续.(2)PSO流程更新各个粒子位置及速度以任意的位置和速度来初始化粒工评估各个粒子的适附值更新各个粒子位置及速度以任意的位置和速度来初始化粒工评估各个粒子的适附值更新pbestqgbest值满足终止条件开始结束packagemap;importjava.util.Random;/*/classPSOpubl
12、icdoublec1,c2;publicdoublew;publicParticlepop;publicintMaxIter;publicintnPop;publicdoublex_low;publicdoublex_up;publicdoublebest_fitness;publicdoublebest_solution;publicintcount_Iter=0;publicintVar;staticRandomrand1=newRandom();PSO(doublec1,doublec2,doublew,intVar,intMaxIter,intnPop,doublex_low,doub
13、lex_up)this.c1=c1;this.c2=c2;this.w=w;this.Var=Var;this.MaxIter=MaxIter;this.nPop=nPop;this.x_low=x_low;this.x_up=x_up;this.pop=newParticlenPop;for(inti=0;inPop;i+)popi=newParticle(Var,x_low,x_up);popi.fitness=function_fitness(popi.position);popi.Best_fitness=popi.fitness;popi.P_po=(double)popi.posi
14、tion.clone();best_fitness=pop1.fitness;best_solution=(double)pop1.position.clone();publicdoublefunction_fitness(doublevar)doublesum=0;for(inti=0;iVar;i+)sum+=vari*vari;returnsum;publicvoidup_search()for(inti=0;inPop;i+)for(intj=0;jx_up)popi.velj=x_up;if(popi.veljx_up)popi.positionj=x_up;if(popi.posi
15、tionjx_low)popi.positionj=x_low;/publicvoidup_date()for(inti=0;ithis.nPop;i+)popi.fitness=function_fitness(popi.position);if(popi.fitnesspopi.Best_fitness)popi.P_po=(double)popi.position.clone();if(popi.fitnessbest_fitness)best_fitness=popi.fitness;best_solution=(double)popi.position.clone();publicv
16、oidshow_result(intIter_c)System.out.printf(Iteration:%5dfit:%5fn,Iter_c,best_fitness);if(Iter_c=(MaxIter-1)for(inti=0;iVar;i+)System.out.println(+best_solutioni);System.out.println(ThePSOend.);publicvoidrun()up_date();for(intit=0;itMaxIter;it+)up_search();up_date();show_result(it);classParticlepubli
17、cintVar;publicdoubleposition;publicdoublevel;publicdoubleP_po;publicdoubleBest_fitness;publicdoublefitness;publicdoublex_low;publicdoublex_up;staticRandomrand1=newRandom();Particle(intVar,doublex_low,doublex_up)position=newdoubleVar;vel=newdoubleVar;P_po=newdoubleVar;this.x_low=x_low;this.x_up=x_up;
18、for(inti=0;iVar;i+)positioni=rand1.nextDouble()*(x_up-x_low)+x_low;veli=1.0*positioni;publicclassElementarypublicstaticvoidmain(Stringargs)PSOpso=newPSO(2,2,0.5,30,1000,40,-10,10);System.out.println(BEGIN);pso.run();System.out.println(END);运行结果:li?Problems孙ServersMoocTest_SConsole血由ftiGaverageElemen
19、taryJavaApplicationE:Javajdk1,8,C2C,2binjavaw.exe(2019年12月27日11;11:12)BE6IN.Iteration:0fit:949.003031Iteration:1fit:548.306943Iteration:2fit:548.306943Iteration:3fit:548.306943Iteration:4fit:528.316658Iteration:Sfit:468*208574Iterations6fit:468.208574Iteration:7fit:468.238574Iteration:8fit;460*208574Iteration:9fit:385.687869Iteration:10fit:311.383627EProblemsServeri-MochzTest|HConsoleJnJUnitwCtjyerage993994995996997990999fit:0.682481fit:.68
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- AI在核电站动力设备运行与维护中的应用
- 2026年仓库目视化管理与标识规范
- 2026年学校食堂食品追溯系统建设
- 2026年幼儿园小班家长沟通技巧
- 2026年招聘旺季劳务派遣用工方案
- 2026年幼儿园外来人员来访登记表
- 2026年疫苗接种知识家长课堂巡回讲座计划
- 2026年原材料入库至成品出库全流程物流管理
- 2026年学校管理团队项目管理能力培养
- 2026年安全事故信息报送与发布规定
- 手机组装基础知识培训课件
- 2026年重庆市初中学业水平考试中考模拟语文试卷(含答案详解)
- 水厂供水安全培训资料课件
- 先进过程控制技术的实践与应用探讨
- 混凝土日常安全培训资料课件
- DB61T 926-2014 火灾高危单位消防安全管理与评估规范
- 腹腔镜食管裂孔疝修补术七步法 2025解读
- 2024-2025学年广东省广州市海珠区六年级下册期末语文检测试题(部编版)附答案
- 港口防台风安全知识培训课件
- 校医基础知识培训课件
- 山东科技大学《概率论与数理统计》2024-2025学年第一学期期末试卷
评论
0/150
提交评论