完美排版--基于Pyth实现的遗传算法课程设计_第1页
完美排版--基于Pyth实现的遗传算法课程设计_第2页
免费预览已结束,剩余7页可下载查看

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、遗传算法实验手册1. 实验任务利用python实现遗传算法,求最小值2. 背景知识:1、遗传算法概论遗传算法(GA)可能是最早开发出来的模拟生物遗传系统的算法模型。它首先由Fraser提出,后来有Bremermann和Reed等人再次提出。最后,Holland对遗传算法做了大量工作并使之推广,因此被认为是遗传算法的奠基人。遗传算法模拟了基因进化,在这个模型中,个体的性状通过基因型表达。选择算子(模拟适者生存)与交叉算子(模拟繁殖),是遗传算法的主要驱动算法。2、遗传算法的基本运算过程如下:a) 初始化:设置进化代数计数器t=0,设置最大进化代数T,随机生成M个个体作为初始群体P(0)。b) 个

2、体评价:计算群体P(t)中各个个体的适应度。c) 选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。d) 交叉运算:将交叉算子作用于群体。遗传算法中起核心作用的就是交叉算子。e) 变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。群体P(t)经过选择、交叉、变异运算之后得到下一代群体P(t+1)。f) 终止条件判断:若t=T,则以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。3. 编程要求:应用遗传算法求解函数最小值使用的函数为f(x)

3、=sin(10nx)/xx=l,24. 解题思路:1) 导入相应的包,定义算法参数与编码#-*-coding:utf-8-*-importmatplotlib.pyplotaspitimportnumpyasnpfrompylabimport*importrandomimportmathmpl.rcParamsfont.sans-serif=SimHeimpl.rcParamsaxes.unicode_minus=False#定义遗传算法参数pop_size=40generation=20length=30pc=0.65pm=0.01#编码defgenEncoding(pop_size,len

4、gth):pop=foriinrange(pop_size):temp=forjinrange(length):temp.append(random.randint(0,1)pop.append(temp)returnpopl:defgenDecoding(pop,length):temp=foriinrange(len(pop):t=0forjinrange(length):t+=popij*math.pow(2,j)temp.append(t)returntemp2) 计算目标值的函数#计算目标值defcalobjValue(pop,length,lb,ub):temp1=obj_valu

5、e=x_value=templ=genDecoding(pop,length)foriinrange(len(temp1):x=lb+(ub-lb)*temp1i/(math.pow(2,length)-1)x_value.append(x)obj_value.append(np.sin(10*pi*x)/x)returnobj_value3) 计算适应度#计算适应度deffitness(pop,length,lb,ub):obj_value=fitness_value=obj_value=calobjValue(pop,length,lb,ub)foriinrange(len(obj_val

6、ue):fitness_value.append(obj_valuei-1)fitness_value=list(map(abs,fitness_value)returnfitness_value4) 累积适应度#累积适应度defcumsum(newfitness_value):accumulation_value=t=0foriinrange(len(newfitness_value):t+=newfitness_valueiaccumulation_value.append(t)returnaccumulation_value5) 选择函数#选择函数defselection(pop,fit

7、ness_value):newfitness_value=accumulation_value=total_fit=np.sum(fitness_value)foriinrange(len(fitness_value):newfitness_value.append(fitness_valuei/total_fit)accumulation_value=cumsum(newfitness_value)ms=foriinrange(len(pop):ms.append(random.random()newin=0newpop=foriinrange(len(ms):j=0forjinrange(

8、len(accumulation_value):ifmsiaccumulation_valuej:t=popjnewpop.append(t)breakreturnnewpop6) 交叉函数#交叉函数defcrossover(pop,fitness_value,pc):newpop=newpop=selection(pop,fitness_value)foriinrange(len(newpop)-1):ifrandom.random()pc:temp1=temp2=templ=newpopi3:15temp2=newpopi+l3:15newpopi3:15=temp2newpopi+l3:

9、15=templreturnnewpopdefmutation(pop,fitness_value,pc,pm,length):newpop=newpop=crossover(pop,fitness_value,pc)foriinrange(len(newpop):ifrandom.random()pm:ml=random.randint(O,length-1)m2=random.randint(0,length-1)m3=random.randint(0,length-1)ifnewpopim1=1:newpopiml=0else:newpopiml=lifnewpopim2=l:newpo

10、pim2=0else:newpopim2=1ifnewpopim3=l:newpopim3=0else:newpopim3=1i=0returnnewpop7) main函数if_name_=_main_:#画出函数图plt.figure(l)lb=lub=2x=np.arange(lb,ub,0.01)y=sin(10*pi*x)/xplt.plot(x,y)plt.xlabel(自变量x)plt.ylabel(自变量y)plt.title(sin(10*pi*x)/x)pop=genEncoding(pop_size,length)obj_value=calobjValue(pop,len

11、gth,lb,ub)fitness_value=fitness(pop,length,lb,ub)gen=0x_value=best_x=best_individual=Generation=whilegenobj_valuei:k=obj_valueij=ibest_individual.append(k)best_x.append(x_valuej)fitness_value=fitness(newpop,length,lb,ub)Generation.append(gen)gen=gen+1k=0j=0foriinrange(len(best_individual):ifkbest_individuali:k=best_individualij=iprint(best_individualj)print(best_xj)best_individual.sort(reverse=True)plt.figure(2)plt.plot(Generation,best_individual)plt.xlabel(遗传代数)plt.ylabel(解的变化)plt.title(”进化过程)plt.show()5. 实验结果-0.84678240138

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论