《遗传算法解决完美.docx》由会员分享,可在线阅读,更多相关《遗传算法解决完美.docx(16页珍藏版)》请在优知文库上搜索。
1、用遗传算法解决二元多峰函数的优化问题1 .实验目的1.1 了解并掌握遗传算法的原理,流程以及编码方式;1.2 自编遗传算法程序对Rastrigin函数进行优化并对运行结果进行分析。1.3 利用遗传算法gatool的图形用户界面GUI,进行Rastrigin函数优化;2 ,实验条件2.1 硬件环境:Inter(R)Core(TM)DuoCPUT55501.83GHz1.83GHz,2G内存2.2 软件环境:WindowsXP,MAT1.AB7.0,gatool3 .实验原理3.1 遗传算法简介:遗传算法(GerIetiCAIgorithm)是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过
2、程的计算模型,是一种通过模拟自然进化过程搜索最优解的方法,它最初由美国MiChigan大学JHolland教授于1975年首先提出来的,并出版了颇有影响的专著AdaptationinNaturalandArtificialSystems,GA这个名称才逐渐为人所知,JHolland教授所提出的GA通常为简单遗传算法(SGA)o遗传算法是一类借鉴生物界的进化规律(适者生存,优胜劣汰遗传机制)演化而来的随机化搜索方法。其主要特点是直接对结构对象进行操作,不存在求导和函数连续性的限定;具有内在的隐并行性和更好的全局寻优能力;采用概率化的寻优方法,能自动获取和指导优化的搜索空间,自适应地调整搜索方向,
3、不需要确定的规则。遗传算法的这些性质,已被人们广泛地应用于组合优化、机器学习、信号处理、自适应控制和人工生命等领域。它是现代有关智能计算中的关键技术。遗传算法是从代表问题可能潜在的解集的一个种群(population)开始的,而一个种群则由经过基因(gene)编码的一定数目的个体(individual)组成。每个个体实际上是染色体(ChromOSOme)带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现(即基因型)是某种基因组合,它决定了个体的形状的外部表现,如黑头发的特征是由染色体中控制这一特征的某种基因组合决定的。因此,在一开始需要实现从表现型到基因型的映射即编码工
4、作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代(generation)演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度(fitness)大小选择(selection)个体,并借助于自然遗传学的遗传算子(geneticoperators)进行组合交叉(crossover)和变异(mutation),产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码(decoding),可以作为问题近似最优解。3.2 遗传算法的基本运算过程:初始化:设置进化代
5、数计数器t=0,设置最大进化代数N,随机生成n个个体作为初始群体popo(2)个体评价:计算群体POP中各个个体的适应度。(3)选择运算:将选择算子作用于群体。选择的目的是把优化的个体直接遗传到下一代或通过配对交叉产生新的个体再遗传到下一代。选择操作是建立在群体中个体的适应度评估基础上的。(4)交叉运算;将交叉算子作用于群体。所谓交叉是指把两个父代个体的部分结构加以替换重组而生成新个体的操作。遗传算法中起核心作用的就是交叉算子。(5)变异运算:将变异算子作用于群体。即是对群体中的个体串的某些基因座上的基因值作变动。6)群体PoP经过选择、交叉、变异运算之后得到下一代群体pop。(7)终止条件判
6、断:以进化过程中所得到的具有最大适应度个体作为最优解输出,终止计算。图1:遗传算法流程图攵又4实验技术方案4.1 自编程的遗传算法寻找Rastrigin函数的最小值4.1.1 Rastrigin函数具有两个独立变量的Rastrigin函数定义为:Ras(x,x2)=20+xr+x22-10(cos271x2+cos211x)维数为2,取值区间为-55-5,5,最小值为finin=0oRastrigin函数图形如下:图2:RaStrigirl函数图形4.1.2 编码方式(1)对给定上下界和求解精度,利用函数length=ceil(log2(up-low)prec+1)求得单个变量的编码长度,在此
7、题中2个变量的上下界一样,故编码长度也一样(2)用encode函数随机产生n个长度为2length的二进制代码作为初始种群的个体(3)用decode函数将个体的二进制代码解码得出xl,x2,代入fun函数求得函数值,根据BoltZmann选择,T=999求得个函数值的适应度,累加适应度构成一个赌轮,即在面积为一的赌轮中,函数值越小的个体被选中的概率越大。保存每一代的最小值为finin300时,继续增加n对结果影响不大,只增加运行所需要的时间;当迭代次数增大时,遗传算法求解的最小值也得到了很大程度的改善。并且由图4可以看出当N100时,继续增加N对结果影响不大,只增加运行所需要的时间。所以我们选
8、择n=200,N=100,prco=0.7,pmut=0.6,可以更好的逼近最优解。4.2运用遗传算法gatool的图形用户界面GUl对Rastrigin函数优化4.2. Igatool使用介绍:(I)Fitnessfunction:欲求最小值的目标函数。输入输入适应度函数的形式为fitnessfun,其中fitnessfun.m是计算适应度函数的M文件。符号产生一个对于函数fitnessfun的函数句柄。图形界面如图6所示。图6:遗传算法工具图形界面4.2.1 Numberofvariable:适应度函数输入向量的长度。单击“Start”按钮,运行遗传算法,将在Statusandresult
9、窗口中显示出相应的运行结果。在“Option”窗格中可以改变遗传算法的选项。为了查看窗格中所列出的各类选项,可以单击与之相连的符号“+”。4.2.2 运行gatool对Rastrigin函数进行优化(1)在命令行键入gatool,打开遗传算法工具。(2)在遗传算法工具相应的栏目中,输入“rastriginsfbn:在Numberofvariable,文本框中,输入2。(3)选择复选框中的最佳适应度和最佳个体的图形选项(4)单击“Start”按钮,运行遗传算法。4.2.3 结果分析有说明可知gatool默认种群为20,迭代次数为100。运行五次其结果如下:表4:gatool运行结果运行次数123
10、45frnin0.00310.99500.00200.00640.0027图7:第一次运行每代适应度函数最佳值与平局值的对数图形Best:0.99503Mean:1.037910,8n-BASSW1.-I11一“-,-Z8-*2030405060708090100Generationo1.l-StOP10图9:第三次运行每代适应度函数最佳值与平局值的对数图形,Best:0.0020445Mean:0.03326310FGeneration图11:第五次运行每代适应度函数最佳值与平局值的对数图形.Best:0.0064006Mean:0.02155410102030405060708090100Generat