




已阅读5页,还剩63页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
133最新发布的MATLAB70RELEASE14已经包含了一个专门设计的遗传算法与直接搜索工具箱(GENETICALGORITHMANDDIRECTSEARCHTOOLBOX,GADS)。使用遗传算法与直接搜索工具箱,可以扩展MATLAB及其优化工具箱在处理优化问题方面的能力,可以处理传统的优化技术难以解决的问题,包括那些难以定义或不便于数学建模的问题,可以解决目标函数较复杂的问题,比如目标函数不连续、或具有高度非线性、随机性以及目标函数没有导数的情况。本章81节首先介绍这个遗传算法与直接搜索工具箱,其余各节分别介绍该工具箱中的遗传算法工具及其使用方法。81遗传算法与直接搜索工具箱概述本节介绍MATLAB的GADS(遗传算法与直接搜索)工具箱的特点、图形用户界面及运行要求,解释如何编写待优化函数的M文件,且通过举例加以阐明。811工具箱的特点GADS工具箱是一系列函数的集合,它们扩展了优化工具箱和MATLAB数值计算环境的性能。遗传算法与直接搜索工具箱包含了要使用遗传算法和直接搜索算法来求解优化问题的一些例程。这些算法使我们能够求解那些标准优化工具箱范围之外的各种优化问题。所有工具箱函数都是MATLAB的M文件,这些文件由实现特定优化算法的MATLAB语句所写成。使用语句TYPEFUNCTION_NAME就可以看到这些函数的MATLAB代码。我们也可以通过编写自己的M文件来实现来扩展遗传算法和直接搜索工具箱的性能,也可以将该工具箱与MATLAB的其他工具箱或SIMULINK结合使用,来求解优化问题。工具箱函数可以通过图形界面或MATLAB命令行来访问,它们是用MATLAB语言编写的,对用户开放,因此可以查看算法、修改源代码或生成用户函数。遗传算法与直接搜索工具箱可以帮助我们求解那些不易用传统方法解决的问题,譬如表查找问题等。遗传算法与直接搜索工具箱有一个精心设计的图形用户界面,可以帮助我们直观、方便、快速地求解最优化问题。8111功能特点遗传算法与直接搜索工具箱的功能特点如下1图形用户界面和命令行函数可用来快速地描述问题、设置算法选项以及监控进程。2具有多个选项的遗传算法工具可用于问题创建、适应度计算、选择、交叉和变异。3直接搜索工具实现了一种模式搜索方法,其选项可用于定义网格尺寸、表决方法和搜索方法。4遗传算法与直接搜索工具箱函数可与MATLAB的优化工具箱或其他的MATLAB程序结合使用。5支持自动的M代码生成。8112图形用户界面和命令行函数134遗传算法工具函数可以通过命令行和图形用户界面来使用遗传算法。直接搜索工具函数也可以通过命令行和图形用户界面来进行访问。图形用户界面可用来快速地定义问题、设置算法选项、对优化问题进行详细定义。遗传算法与直接搜索工具箱还同时提供了用于优化管理、性能监控及终止准则定义的工具,同时还提供大量标准算法选项。在优化运行的过程中,可以通过修改选项来细化最优解,更新性能结果。用户也可以提供自己的算法选项来定制工具箱。8113使用其他函数和求解器遗传算法与直接搜索工具箱与MATLAB及优化工具箱是紧密结合在一起的。用户可以用遗传算法或直接搜索算法来寻找最佳起始点,然后利用优化工具箱或用MATLAB程序来进一步寻找最优解。通过结合不同的算法,可以充分地发挥MATLAB和工具箱的功能以提高求解的质量。对于某些特定问题,使用这种方法还可以得到全局(最优)解。8114显示、监控和输出结果遗传算法与直接搜索工具箱还包括一系列绘图函数用来可视化优化结果。这些可视化功能直观地显示了优化的过程,并且允许在执行过程中进行修改。工具箱还包括一系列绘图函数用来可视化优化结果。这些可视化功能直观地显示了优化的过程,并且允许在执行过程中进行修改。该工具箱还提供了一些特殊绘图函数,它们不仅适用于遗传算法,还适用于直接搜索算法。适用于遗传算法的函数包括函数值、适应度值和函数估计。适用于直接搜索算法的函数包括函数值、分值直方图、系谱、适应度值、网格尺寸和函数估计。这些函数可以将多个绘图一并显示,可直观方便地选取最优曲线。另外,用户也可以添加自己的绘图函数。使用输出函数可以将结果写入文件,产生用户自己的终止准则,也可以写入用户自己的图形界面来运行工具箱求解器。除此之外,还可以将问题的算法选项导出,以便日后再将它们导入到图形界面中去。8115所需的产品支持遗传算法与直接搜索工具箱作为其他优化方法的补充,可以用来寻找最佳起始点,然后可以再通过使用传统的优化技术来进一步寻找最优解。工具箱需要如下产品支持1MATLAB。2优化工具箱。8116相关产品与遗传算法与直接搜索工具箱相关的产品有1统计工具箱应用统计算法和概率模式。2神经网络工具箱设计和仿真神经网络。3模糊逻辑工具箱设计和仿真基于模糊逻辑的系统。4金融工具箱分析金融数据和开发金融算法。8117所需的系统及平台遗传算法和直接搜索工具箱对于对于运行环境、支持平台和系统的需求,可随时通过访问网站HTTP/WWWMATHWORKSCOM/PRODUCTS/GADS了解最新发布的信息。这里介绍的MATLAB70RELEASE14所需的最低配置是WINDOWS系列操作系统,PENTIUMIII500CPU、64MBRAM,空闲硬盘空间600MB以上。812编写待优化函数的M文件135为了使用遗传算法和直接搜索工具箱,首先必须编写一个M文件,来确定想要优化的函数。这个M文件应该接受一个行向量,并且返回一个标量。行向量的长度就是目标函数中独立变量的个数。本节将通过实例解释如何编写这种M文件。8121编写M文件举例下面的例子展示了如何为一个想要优化的函数编写M文件。假定我们想要计算下面函数的最小值221121,6FXXXM文件确定这个函数必须接受一个长度为2的行向量X,分别与变量X1和X2相对应,并且返回一个标量X,其值等于该函数的值。为了编写这个M文件,执行如下步骤1在MATLAB的FILE菜单中选择NEW菜单项。2选择MFILE,将在编辑器中打开一个新的M文件。3在该M文件中,输入下面两行代码FUNCTIONZMY_FUNXZX122X1X26X1X226X24在MATLAB路径指定的目录中保存该M文件。为了查看该M文件是否返回正确的值,可键入MY_FUN23ANS5注意在运行遗传算法工具或模式搜索工具时,不要使用编辑器或调试器来调试目标函数的M文件,否则会导致在命令窗口出现JAVA异常消息,并且使调试更加困难。8122最大化与最小化遗传算法和直接搜索工具箱中的优化函数总是使目标函数或适应度函数最小化。也就是说,它们求解如下形式的问题MINZEXF如果我们想要求出函数FX的最大值,可以转而求取函数GXFX的最小值,因为函数GX最小值出现的地方与函数FX最大值出现的地方相同。例如,假定想要求前面所描述的函数的最大值,这时,22111,6FX我们应当编写一个M文件来计算,求函数221211,6GXFX的最小值。8123自动代码生成遗传算法与直接搜索工具箱提供了自动代码生成特性,可以自动生成求解优化问题所需要的M文件。例如,图81所示的就是使用遗传算法工具的自动代码生成特性所产生的M文件。另外,图形用户界面所输出的优化结果可以作为对来自命令行调用代码的一种解释,这些代码还用于使例程和保护工作自动化。136图81遗传算法M文件代码的自动生成82使用遗传算法工具初步遗传算法与直接搜索工具箱包含遗传算法工具和直接搜索工具。从本节至章末,将主要介绍其中的遗传算法工具及其使用方法。本节主要介绍遗传算法工具使用的初步知识,内容包括遗传算法使用规则,遗传算法工具的使用方式,举例说明如何使用遗传算法来求解一个优化问题,解释遗传算法的一些基本术语,最后阐述遗传算法的工作原理与工作过程。821遗传算法使用规则遗传算法是一种基于自然选择、生物进化过程来求解问题的方法。遗传算法反复修改对于个体解决方案的种群。在每一步,遗传算法随机地从当前种群中选择若干个体作为父辈,并且使用它们产生下一代的子种群。在连续若干代之后,种群朝着优化解的方向进化。我们可以用遗传算法来求解各种不适宜于用标准优化算法求解的优化问题,包括目标函数不连续、不可微、随机或高度非线性的问题。遗传算法在每一步使用下列三类规则从当前种群来创建下一代1选择规则(SELECTIONRULES),选择对下一代种群有贡献的个体,称为父辈。2交叉规则(CROSSOVERRULES),将两个父辈结合起来构成下一代的子辈种群。3变异规则(MUTATIONRULES),施加随机变化给父辈个体来构成子辈。遗传算法与标准优化算法主要在两个方面有所不同,它们的比较情况归纳于表81中。表81遗传算法与标准优化算法比较标准算法遗传算法每次迭代产生一个单点,点的序列逼近一个优化解每次迭代产生一个种群,种群逼近一个优化解通过确定性的计算在该序列中选择下一个点通过随机进化选择计算来选择下一代种群137822遗传算法使用方式遗传算法工具有两种使用方式1以命令行方式调用遗传算法函数GA。2使用遗传算法工具,从图形用户界面到遗传算法。本节对这些方式做一个简要的介绍。8221在命令行调用函数GA对于在命令行使用遗传算法,可以用下列语法调用遗传算法函数GAXFVALGAFITNESSFUN,NVARS,OPTIONS其中FITNESSFUN是适应度函数句柄;NVARS是适应度函数的独立变量的个数;OPTIONS是一个包含遗传算法选项参数的结构。如果不传递选项参数,则GA使用它本身的缺省选项值。函数所给出的结果FVAL适应度函数的最终值;X最终值到达的点。我们可以十分方便地把遗传算法工具输出的结果直接返回到MATLAB的WORKSPACE(工作空间),或以不同的选项从M文件多次调用函数GA来运行遗传算法。调用函数GA时,需要提供一个选项结构OPTIONS。后面的有关章节对于在命令行使用函数GA和创建选项结构OPTIONS提供了详细的描述。8222通过GUI使用遗传算法遗传算法工具有一个图形用户界面GUI,它使我们可以使用遗传算法而不用工作在命令行方式。为了打开遗传算法工具,可键入GATOOL打开的遗传算法工具图形用户界面如图82所示。138图82遗传算法工具为了使用遗传算法工具,首先必须输入下列信息1FITNESSFUNCTION(适应度函数)欲求最小值的目标函数。输入适应度函数的形式为FITNESSFUN,其中FITNESSFUNM是计算适应度函数的M文件。在前面“编写待优化函数的M文件”一节里已经解释了如何编写这种M文件。符号产生一个对于函数FITNESSFUN的函数句柄。2NUMBEROFVARIABLES(变量个数)适应度函数输入向量的长度。对于“编写待优化函数的M文件”一节所描述的函数MY_FUN,这个参数是2。点击START按钮,运行遗传算法,将在STATUSANDRESULTS(状态与结果)窗格中显示出相应的运行结果。在OPTIONS窗格中可以改变遗传算法的选项。为了查看窗格中所列出的各类选项,可单击与之相连的符号“”。823举例RASTRIGIN函数本节介绍一个例子,讲述如何寻找RASTRIGIN函数的最小值和显示绘制的图形。RASTRIGIN函数是最常用来测试遗传算法的一个典型函数。RASTRIGIN函数的可视化图形显示,它具有多个局部最小值和一个全局最小值,遗传算法可以帮助我们确定这种具有多个局部最小值函数的最优解。输入适应度函数输入适应度函数的变量数目开始遗传算法显示结果显示参数描述1398231RASTRIGIN函数具有两个独立变量的RASTRIGIN函数定义为211200COS2SRASXXXRASTRIGIN函数的图形如图83所示。工具箱包含一个M文件,即RASTRIGINSFCNM,是用来计算RASTRIGIN函数值的。图83RASTRIGIN函数图形如图83所示,RASTRIGIN函数有许多局部最小值在图上显示为“谷底(VALLEYS)”。然而,该函数只有一个全局最小值,出现在XY平面上的点0,0处,正如图中竖直线指示的那样,函数的值在那里是0。在任何不同于0,0的局部最小点处,RASTRIGIN函数的值均大于0。局部最小处距原点越远,该点处RASTRIGIN函数的值越大。RASTRIGIN函数之所以最常用来测试遗传算法,是因为它有许多局部最小点,使得用标准的、基于梯度的查找全局最小的方法十分困难。图84所示是RASTRIGIN函数的轮廓线,它显示出最大最小交替变化的情形。全局最小点0,0140图84RASTRIGIN函数的轮廓线8232寻找RASTRIGIN函数的最小值本节解释如何使用遗传算法来寻找RASTRIGIN函数的最小值。注意因为遗传算法使用随机数据来进行它的搜索,所以该算法每一次运行时所返回的结果会稍微有些不同。为了查找最小值,进行下列步骤1在命令行键入GATOOL,打开遗传算法工具。2在遗传算法工具的相应栏目,输入适应度函数和变量个数。在“FITNESSFUNCTION(适应度函数)”文本框中,输入RASTRIGINSFCN;在“NUMBEROFVARIABLES(变量个数)”文本框中,输入2,这就是RASTRIGIN函数独立变量的个数。这一步操作如图85所示。图85输入适应度函数与变量个数3在“RUNSOLVER(运行求解器)”窗格中,单击START按钮,如图86所示。图86单击运行求解器START按钮在算法运行的同时,“CURRENTGENERATION(当前代数)”文本框中显示出当前的代数。通过点全局最小点0,0局部最小点局部最小点141击“暂停(PAUSE)”按钮,可以使算法临时暂停一下。当这样做的时候,该按钮的名字变为“RESUME(恢复)”。为了从暂停处恢复算法的运行,可单击这个“RESUME”按钮。当算法完成时,“STATUSANDRESULTS”窗格出现如图87所示的情形。图87状态与结果显示“STATUSANDRESULTS”窗格显示下列信息1算法终止时适应度函数的最终值FITNESSFUNCTIONVALUE00067749206244585025注意所显示的值非常接近于RASTRIGIN函数的实际最小值0。“遗传算法举例”一节描述了一些方法,可以用来得到更接近实际最小值的结果。2算法终止的原因OPTIMIZATIONTERMINATEDMAXIMUMNUMBEROFGENERATIONSEXCEEDED即退出的原因是超过最大代数而导致优化终止。在本例中,算法在100代后结束,这是“GENERATIONS(代数)”选项的缺省值,此选项规定了算法计算的最大代数。3最终点,在本例中是000274000516。8233从命令行查找最小值为了从命令行查找RASTRIGIN函数的最小值,可键入XFVALREASONGARASTRIGINSFCN,2这将返回X0002700052FVAL00068REASONOPTIMIZATIONTERMINATEDMAXIMUMNUMBEROFGENERATIONSEXCEEDED其中X是算法返回的最终点;FVAL是该最终点处适应度函数的值;REASON是算法结束的原因。8234显示绘制图形“PLOTS(绘图)”窗格可以显示遗传算法运行时所提供的有关信息的各种图形。这些信最终点的适应度函数值最终点142息可以帮助我们改变算法的选项,改进算法的性能。例如,为了绘制每一代适应度函数的最佳值和平均值,选中复选框“BESTFITNESS(最佳适应度)”,如图88所示。图88绘图对话框当点击START按钮时,遗传算法工具显示每一代适应度函数的最佳值和平均值的绘制图形。当算法停止时,所出现的图形如图89所示。图89各代适应度函数的最佳值和平均值在每一代中,图的底部的点表示最佳适应度值,而其上的点表示平均适应度值。图的顶部还显示出当前一代的最佳值00067796和平均值0014788。为了得到最佳适应度值减少到多少为更好的直观图形,我们可以将图中Y轴的刻度改变为对数刻度。为此,需进行如下操作1从绘图窗格的EDIT(编辑)菜单中选择“AXESPROPERTIES(坐标轴属性)”,打开属性编辑器,如图810所示。最佳值00067796平均值0014788143图810绘图属性编辑器2点击Y表项。3在“SCALE(刻度)”窗格,选择“LOG对数”。绘制的图形如图811所示。最佳值00067796平均值0014788选择对数刻度单击Y表项144图811每一代适应度函数最佳值和平均值的对数图形典型情况下,在早期各代中,当个体离理想值较远时,最佳值会迅速得到改进。在后来各代中,种群越接近最佳点,最佳值改进得越慢。824遗传算法的一些术语本节解释遗传算法的一些基本术语,主要包括适应度函数(FITNESSFUNCTIONS)。个体(INDIVIDUALS)。种群(POPULATIONS)和代(GENERATIONS)。适应度值(FITNESSVALUES)和最佳适应度值(BESTFITNESSVALUES);父辈和子辈(PARENTSANDCHILDREN)。8241适应度函数所谓适应度函数就是想要优化的函数。对于标准优化算法而言,这个函数称为目标函数。该工具箱总是试图寻找适应度函数的最小值。我们可以将适应度函数编写为一个M文件,作为输入参数传递给遗传算法函数。8242个体一个个体是可以施加适应度函数的任意一点。一个个体的适应度函数值就是它的得分或评价。例如,如果适应度函数是22212313,34FXXXX则向量(2,3,1)就是一个个体,向量的长度就是问题中变量的个数。个体(2,3,1)的得分是F2,3,151。个体有时又称为基因组或染色体组(GENOME),个体的向量项称为基因(GENES)。8243种群与代所谓种群是指由个体组成的一个数组或矩阵。例如,如果个体的长度是100,适应度函数中变量的个数为3,我们就可以将这个种群表示为一个1003的矩阵。相同的个体在种群中可以出现不止一次。例如,个体2,3,1就可以在数组的行中出现多次。每一次迭代,遗传算法都对当前种群执行一系列的计算,产生一个新的种群。每一个后继的种群称为新的一代。8244多样性多样性或差异(DIVERSITY)涉及一个种群的各个个体之间的平均距离。若平均距离大,则种群具有高的多样性;否则,其多样性低。在图812中,左面的种群具有高的多样性,亦即差异大;而右面的种群多样性低,亦即差异小。145图812种群多样性比较多样性是遗传算法必不可少的本质属性,这是因为它能使遗传算法搜索一个比较大的解的空间区域。8245适应度值和最佳适应度值个体的适应度值就是该个体的适应度函数的值。由于该工具箱总是查找适应度函数的最小值,所以一个种群的最佳适应度值就是该种群中任何个体的最小适应度值。8246父辈和子辈为了生成下一代,遗传算法在当前种群中选择某些个体,称为父辈,并且使用它们来生成下一代中的个体,称为子辈。典型情况下,该算法更可能选择那些具有较佳适应度值的父辈。825遗传算法如何工作本节简要介绍遗传算法的工作原理或工作过程,内容包括算法要点;初始种群;生成下一代;后一代的绘图;算法的停止条件。8251算法要点下面的要点总结了遗传算法是如何工作的1首先,算法创建一个随机种群。2接着,算法生成一个新的种群序列,即新的一代。在每一步,该算法都使用当前一代中的个体来生成下一代。为了生成新一代,算法执行下列步骤A通过计算其适应度值,给当前种群的每一个成员打分。B确定原来的适应度值的比例尺度,将其转换为更便于使用的范围内的值。C根据它们的适应度选择父辈。D由父辈产生子辈。子辈的产生可以通过随机改变一个单个父辈,亦即变异(MUTATION)来进行,也可以通过组合一对父辈的向量项,亦即交叉(CROSSOVER)来进行。E用子辈替换当前种群,形成下一代。3最后,若停止准则之一得到满足,则该算法停止。关于停止准则,可参见“8257算法的停止条件”一节。1468252初始种群遗传算法总是以产生一个随机的初始种群开始,如图813所示。图813初始种群在本例中,初始种群包含20个个体,这恰好是“POPULATION(种群)”选项中的“POPULATIONSIZE(种群尺度)”的缺省值。注意初始种群中的所有个体均处于图上右上角的那个象限,也就是说,它们的坐标处于0和1之间,这是因为“POPULATION”选项中的“INITIALRANGE(初始范围)”的缺省值是01。如果已知函数的最小点大约位于何处,就可以设置一个适当的“INITIALRANGE”,以便使该点处于那个范围的中间附近。例如,如果确信RASTRIGIN函数的最小值在点0,0附近,那么就可以直接设置“INITIALRANGE”为11。然而,正如本例所显示的那样,即使没有给“INITIALRANGE”设置一个理想的值,遗传算法也还是能够找到那个最小值。8253产生下一代在每一步,遗传算法使用当前种群来产生子辈,即获得下一代。算法在当前种群中选择一组个体,称为父辈,这些个父辈将其GENES亦即其向量中的项贡献给它们的子辈。遗传算法通常选择那些具有较好适应度值的个体作为父辈。我们可以在“SELECTION(选择)”选项的“SELECTIONFUNCTION(选择函数)”文本框中指定遗传算法用来选择父辈的函数。遗传算法对于下一代产生三类子辈优良子辈(ELITECHILDREN),是在当前代中具有最佳适应度值的那些个体。这些个体子辈存活到下一代。交叉子辈(CROSSOVERCHILDREN),是由一对父辈向量组合产生的。变异子辈(MUTATIONCHILDREN),是对一个单个父辈引入随机改变即变异产生的。图814表示了这三个类型的子辈。147图814三类子辈在“8335变异与交叉”一节解释如何指定遗传算法产生的每一类子辈的数目,以及用来执行完成交叉和变异的函数。8254交叉子辈算法通过组合当前种群中的父辈对(PAIR)来产生交叉子辈。在子辈向量的每一个相同位置处,缺省的交叉函数在两个父辈之一的相同位置处随机选择一项,即基因,并将它指派给其子辈。8255变异子辈算法通过随机改变个体父辈中的基因而产生变异子辈。按照缺省,算法给父辈增加一个高斯分布的随机向量。图815表示出初始种群的子辈,也即第二代种群,并且指出它们是否为优良子辈、交叉子辈或变异子辈。优良子辈交叉子辈变异子辈148图815初始种群的子辈8256后代图形绘制图816展示出在迭代60次,80次,95次,100次时的种群的图形。149图816在迭代60,80,95,100次时的种群随着代数的增加,种群中的个体靠近在一起,且逼近最小值点0,0。8257算法的停止条件遗传算法使用下列5个条件来确定何时停止GENERATIONS(代数)当产生的代的数目达到规定的代数的值时,算法停止。TIMELIMIT(时限)在运行时间的秒数等于时限时,算法停止。150FITNESSLIMIT(适应度限)当适应度函数的值对于当前种群的最佳点小于或等于适应度限时,算法停止。STALLGENERATIONS(停滞代数)在连续繁殖的时间序列中,若长时间不繁殖新代,亦即目标函数无改进,到达停滞代数规定的代数时,则算法停止。STALLTIMELIMIT(停滞时限)在秒数等于停滞时限的时间间隔期间,若目标函数无改进,则算法停止。若这5个条件中任何一个条件一旦满足,则该算法停止。我们可以在遗传算法工具的“STOPPINGCRITERIA(停止标准)”选项中指定这些标准的值。它们的缺省值如图817所示。图817停止标准的缺省值当运行遗传算法时,“STATUS(状态)”面板显示这些导致算法停止的标准。“TIMELIMIT(时限)”选项与“STALLTIMELIMIT”选项可以用来防止算法运行过长的时间。如果算法由于这两个条件之一而停止,则可以通过相应增加“TIMELIMIT”或“STALLTIMELIMIT”的值来改善运行的结果。83使用遗传算法工具求解问题本节首先概括使用遗传算法工具GUI的一般步骤,然后介绍如何从命令行使用遗传算法工具,最后通过例子,详细说明如何使用遗传算法工具来求解优化问题。831使用遗传算法GUI在前面一章,已经介绍了使用遗传算法工具的初步知识。本节将简要归纳使用遗传算法工具GUI来求解优化问题的一般步骤,内容包括打开遗传算法工具;在遗传算法工具中定义问题;运行遗传算法;暂停和停止运算;图形显示;创建用户图形函数;复现运行结果;设置选项参数;输入输出参数及问题;从最后种群继续运行遗传算法。8311打开遗传算法工具在MATLAB窗口中输入GATOOL,打开、进入遗传算法工具,初启时的界面显示如图818所示。151图818遗传算法工具初启时的界面8312在遗传算法工具中定义问题在下列两个文本框中定义所要解决的问题1适应度函数求解的问题是求目标函数的最小值。输入一个计算适应度函数的M文件函数的句柄。2变量个数适应度函数的独立变量个数。注意当运行遗传算法工具时不要用“EDITOR/DEBUGGER(编辑/调试)”功能来调试目标函数的M文件,而要从命令行直接调用目标函数或把M文件输入到遗传算法函数GA。为了方便调试,可以在遗传算法工具中把问题输出到MATLAB工作窗中。如图819所示,输入前面章节所介绍的RASTRIGIN函数或MY_FUN函数作为适配度函数,它们的变量个数为2。图819输入适应度函数与变量个数8313运行遗传算法152要运行遗传算法,在“RUNSOLVER(运行求解器)”中单击START按纽,如图820所示。图820单击START按钮这时,在“CURRENTGENERATION(当前代)”文本框中显示当前代的数目,在STATUSANDRESULTS”窗格显示“GARUNNING”等信息,如图823所示。图821当前代数和状态与结果窗格当遗传算法停止时,“STATUSANDRESULTS”窗格显示“GATERMINATED(GA终止)”信息。最后一代最佳个体的适应度函数值。算法停止的原因。最终点的坐标。图822显示当运行例子“RASTRIGIN函数”遗传算法停止时的信息。图822RASTRIGIN函数的遗传算法运行结果在遗传算法工具中,当遗传算法运行时可以更改多个参数设置。所做的改变将被应用到下一代,即在下一代将按照新设置的参数运行。在下一代开始但尚未应用改变的参数之前,在“STATUSANDRESULTS”窗格显示信息“CHANGESPENDING”。而在下一代开始且应用了改变的参数时,在“STATUSANDRESULTS”窗格显示信息“CHANGESAPPLIED”。这样在遗传算法运行时更改了153参数设置产生的输出信息如图823所示。图823遗传算法运行时更改了参数设置8314暂停和停止运算遗传算法的暂停和停止运行,可以通过下面操作继续运行单击按钮“PAUSE(暂停)”,算法暂停运行。该按钮上的文字变为“RESUME(恢复)”。单击这个“RESUME”按钮,即恢复遗传算法继续运行。单击按钮“STOP”,算法停止运行。“STATUSANDRESULTS”窗口显示停止运行时当前代最佳点的适应度函数值。注意如果单击按钮“STOP”,然后通过单击按钮“START”再次运行时,遗传算法将以新的随机初始种群或在“INITIALPOPULATION(初始种群)”文本框中专门指定的种群运行。如果需要在算法停止后能再次恢复运行,则可以通过交替地单击按钮“PAUSE”和“RESUME”来控制算法暂停或继续运行。遗传算法的停止运行常常是通过设置算法停止准则来进行控制的。使用停止准则,设置停止准则参数,可以解决遗传算法在何时停止运行的控制问题。这样,也就不用通过单击“STOP”按钮来人为地控制算法运行的停止。遗传算法有五个停止准则或条件,其中任何一个条件满足,算法即停止运行。这些停止准则是代数算法运行到规定的代数。时限算法运行到规定的时间。适应度限当前代的最佳适应度值小于或等于规定的值。停滞代数适应度函数值在运行规定的代数后没有改进。停滞时限适应度函数值在运行规定时间后没有改进。如果想使算法一直运行到按下按钮“PAUSE”或“STOP”时才停下来,可以改变这些停止准则的参数值设置“GENERATIONS(代数)”为INF。设置“TIME”为INF。设置“FITNESSLIMIT”为INF。设置“STALLGENERATIONS”为INF。设置“STALLTIMELIMIT”为INF。图824显示了这些更改后的设置。154图824改变停止准则参数注意在命令行中调用遗传算法函数GA时,并不使用这些参数设置,就好像是不按下“CTRLC”键,函数就会永远运行而不会停止。其实相反,可以设置“GENERATIONS”或者“TIME”做为限值来控制算法停止运行。8315图形显示图825为“PLOTS(绘图)”窗格,可以用来控制显示遗传算法运行结果变化的图形。图825在绘图窗格选择输出项选择所要显示的图形参数的复选框。例如,如果选择“BESTFITNESS(最佳适应度)”和“BESTINDIVIDUAL(最佳个体)”,运行例子“RASTRIGIN函数”,其显示输出如图826所示。155图826RASTRIGIN函数最佳适应度与最佳个体图828上部离散点为每一代的最佳适应度值和平均适应度值,下部柱型图表示当前代最佳适应度值对应的点的坐标。注意当要想显示两个以上参数项的图形时,可选择相应参数项的复选框,单独打开一个较大的图形窗口即可。8316举例创建用户绘图函数如果工具箱中没有符合想要输出图形的绘图函数,用户可以编写自己的绘图函数。遗传算法在每次运行时调用这个函数,画出图形。这里举例说明怎样创建一个用户绘图函数来显示从前一代到当前代最佳适应度值的变化情形,内容包括创建绘图函数,使用绘图函数,绘图函数如何作用。(1)创建绘图函数为了创建绘图函数,在MATLAB编辑器中复制、粘贴下列代码到一个新的M文件。FUNCTIONSTATEGAPLOTCHANGEOPTIONS,STATE,FLAGGAPLOTCHANGEPLOTSTHECHANGEINTHEBESTSCOREFROMTHEPREVIOUSGENERATIONPERSISTENTLAST_BESTBESTSCOREINTHEPREVIOUSGENERATIONIFSTRCMPFLAG,INITSETUPTHEPLOTSETGCA,XLIM,1,OPTIONSGENERATIONS,YSCALE,LOGHOLDONXLABELGENERATIONTITLECHANGEINBESTFITNESSVALUEENDBESTMINSTATESCORE;BESTSCOREINTHECURRENTGENERATIONIFSTATEGENERATION0SETLAST_BESTTOBEST。156LAST_BESTBEST;ELSECHANGELAST_BESTBEST;CHANGEINBESTSCORELAST_BESTBEST;PLOTSTATEGENERATION,CHANGE,R;TITLECHANGEINBESTFITNESSVALUEEND然后在MATLAB路径下将其存为M文件GAPLOTCHANGEM。(2)使用绘图函数为了使用用户绘图函数,在”绘图(PLOTS)”窗格中选择“CUSTOMFUNCTION(定制函数)”,并且在其右边的文本框中输入函数名GAPLOTCHANGE。为了对用户绘图函数输出的最佳适应度值图形进行比较,在这里也选择“BESTFITNESS”。现在,如果运行例子函数RASTRIGIN,显示出来的图形如图827所示。图827用户绘图函数输出的RASTRIGIN函数运行结果注意因为图中下半部的Y轴为对数刻度,所以图形中的离散点仅仅显示大于零的点。对数刻度能显示适应度函数的微小变化,而上面的图形则不能显示出微小变化。(3)绘图函数如何作用绘图函数使用包含在下面结构体中的信息,它们由遗传算法传递给绘图函数作为输入参数OPTIONS(参数)当前参数设置。STATE(状态)关于当前代的信息。FLAG(曲线标志)曲线表示为对数等的当前状态。绘图函数的主要作用可以描述如下PERSISTENTLAST_BEST生成永久变量LAST_BEST即前一代的最佳值。永久变量保存着多种图形函数调用类型。最佳值00021904平均值049832最佳适应度值的变化157SETGCA,XLIM,1,OPTIONSGENERATIONS,YSCALE,LOG;在遗传算法运行前建立图形。OPTIONSGENERATION为代数的最大值。BESTMINSTATESCORESTATESCORE包含当前代中所有个体的得分值,变量BEST是其中最小的得分值。结构体状态文本框的完整描述可参见“8411图形参数”一节。CHANGELAST_BESTBEST变量CHANGE是前一代的最佳值减去当前代的最佳值。PLOTSTATEGENERATION,CHANGE,R画出当前代的变化曲线,变量维数包含在STATEGENERATION中。函数GAPLOTCHANGE的代码包含了函数GAPLOTBESTF代码中许多相同成分,函数GAPLOTBESTF生成最佳适应度图形。8317复现运行结果为了复现遗传算法前一次的运行结果,选择“USERANDOMSTATESFROMPREVIOUSRUN(使用前一次运行的随机状态)”复选框。这样就把遗传算法所用的随机数发生器的状态重新设置为前一次的值。如果没有改变遗传算法工具中的所有设置,那么遗传算法下一次运行时返回的结果与前一次运行的结果一致。正常情况下,不要选择“USERANDOMSTATESFROMPREVIOUSRUN”这个复选框,可以充分利用遗传算法随机搜索的优点。如果想要分析特定的运行结果或者显示相对个体的精确结果,可以选择“USERANDOMSTATESFROMPREVIOUSRUN”复选框。8318设置选项参数设置遗传算法工具使用时的选项参数有两种方法一种是在遗传算法工具GUI的“OPTIONS”窗格中直接进行设置,另一种是在MATLAB工作窗口中通过命令行方式进行设置。在参数“OPTIONS”窗格中设置遗传算法的各种运行参数,如图828所示。每一类参数对应有一个窗格,单击该类参数时,对应窗格展开。例如,点击“POPULATION”参数选项,种群窗格展开来,可以逐一设置其中的参数项,如POPULATIONTYPE(种群类型)、POPULATIONSIZE(种群尺度)、CREATIONFUNCTION(创建函数)、INITIALPOPULATION、INITIALSCORE(初始得分)、INITIALRANGE(初始范围)等。此外,其他选项参数类还有FITNESSSCALING(适应度测量)、SELECTION、REPRODUCTION、MUTATION、CROSSOVER、MIGRATION(迁移)、HYBRIDFUNCTION(混合函数)、STOPPINGCRITERIA、OUTPUTFUNCTION(输出函数)、DISPLAYTOCOMMANDWINDOW(显示到命令窗口)、VECTORIZE(向量化)等。这些参数类各自对应一个参数窗格,点击后相应窗格随即展开,可以进行参数项的设置。所有变量参数的含义及详细描述可参见“841遗传算法参数”一节。158图828选项参数窗口在MATLAB工作窗口中,可以将遗传算法的运行参数设置为变量。对于数值参数的设置,可以直接在相应编辑框中输入该参数的值,或者在包含该参数值的MATLAB工作窗口中输入相应变量的名字,就可以完成设置。例如,可以利用下面两种方法之一设置“INITIALPOINT(初始点)”为2117在“INITIALPOINT”文本框输入2117。在MATLAB工作区输入变量X02117,然后在“INITIALPOINT”文本框输入变量的名字X0。因为选项参数是比较大的矩阵或向量,所以在MATLAB工作窗口中把参数的值定义为变量一般是比较方便的,也就是说,如果需要,很容易改变矩阵或向量的项。8319输入输出参数及问题参数和问题结构可以从遗传算法工具被输出到MATLAB的工作窗口,也可以在以后的某个时间再反过来把它们从MATLAB的工作窗口输入给遗传算法工具。这样就可以保存对问题的当前设置,并可以在以后恢复这些设置。参数结构也可以被输出到MATLAB工作窗口,并159且可以再把它们用于命令行方式的遗传算法函数GA。输入和输出信息通常包含下列各项问题定义,包括“FITNESSFUNCTION”和“NUMBEROFVARIABLES(变量个数)”。当前指定的选项参数。算法运行的结果。下面解释如何输入和输出这些信息。(1)输出参数和问题参数和问题可以被输出到MATLAB工作空间,以便以后在遗传算法工具中应用它们。也可以以命令行方式,在函数GA中应用这些参数和问题。为了输出参数和问题,单击“EXPORTTOWORKSPACE(输出到工作空间)”按钮或从FILE菜单中选择“EXPORTTOWORKSPACE”菜单项,这将打开如图829所示的对话框。图829输出对话框对话框提供下列参数为了保存问题的定义和当前参数的设置,选择“EXPORTPROBLEMANDOPTIONSTOAMATLABSTRUCTURENAMED(输出问题与参数到已命名的MATLAB结构)”,并为这个结构体输入一个名字。单击OK按钮,即把这个信息保存到MATLAB工作空间的一个结构体。如果以后要把这个结构体输入到遗传算法工具,那么当输出这个结构时,所设置的“FITNESSFUNCTION”和“NUMBEROFVARIABLES”,以及所有的参数设置都被恢复到原来值。注意输出问题之前,如果在“RUNSOLVER(运行求解器)”窗格选中“USERANDOMSTATESFROMPREVIOUSRUN(使用前一次运行的随机状态)”选项,则遗传算法工具将保存上一次运行开始时随机数产生函数RAND和RANDN的状态。然后,在选择了“USERANDOMSTATESFROMPREVIOUSRUN”选项的情况下,输入问题且运行遗传算法,那么输出问题之前的运行结果就被准确地复现了。如果想要遗传算法在输出问题之前从上一次运行的最后种群恢复运行,可选择“INCLUDEINFORMATIONNEEDEDTORESUMETHISRUN(包括所需信息以恢复本次运行)”。然后,当输入问题结构体并单击START按钮,算法就从前次运行的最后种群继续运行。为了恢复遗传算法产生随机初始种群的缺省行为,可删除在“INITIALPOPULATION”字段所设置的种群,并用代之以空的中括号。注意当选择了“INCLUDEINFORMATIONNEEDEDTORESUMETHISRUN”选项,则选择“USERANDOMSTATESFROMPREVIOUSRUN”选项对于输入问题和运行遗传算法时创建的初始种群将不再有任何作用。后者的选项只是指定从新的一次运行开始时再一次复现结果,而不是为了恢复算法的继续运行。如果只是为了保存参数设置,可选择“EXPORTOPTIONSTOAMATLABSTRUCTURENAMED(输出参数到已命名的MATLAB结构)”,并为这个参数结构体输入一个名字。为了保存遗传算法最近一次运行的结果,可选择“EXPORTRESULTSTOAMATLABSTRUCTURENAMED”,并为这个结果结构体输入一个名字。160(2)举例用输出问题运行函数GA输出一个问题可参见“823举例RASTRIGIN函数”一节,在命令行运行遗传算法函数GA,其步骤如下单击“EXPORTTOWORKSPACE”按钮,打开相应对话框。在“EXPORTTOWORKSPACE”对话框中的“EXPORTPROBLEMANDOPTIONSTOAMATLABSTRUCTURENAMED”右面的文本框,输入问题结构体的名称,假设为MY_GAPROBLEM。在MATLAB窗口,以MY_GAPROBLEM为参数调用函数GAXFVALGAMY_GAPROBLEM则返回结果X0002700052FVAL00068调用函数GA可参见“832从命令行使用遗传算法”一节。(3)输入参数为了从MATLAB工作窗中输入一个参数结构体,可从“FILE”菜单选择“IMPORTOPTIONS(输入参数)”菜单项。在MATLAB工作窗中打开一个对话框,列出遗传算法参数结构体的一系列选项。当选择参数结构体并单击“IMPORT(输入)”按钮,在遗传算法工具中的参数域就被更新,且显示所输入参数的值。创建参数结构体有两种方法调用函数GAOPTIMSET,以参数结构OPTIONS作为输出。在遗传算法工具中,从“EXPORTTOWORKSPACE(输出到工作空间)”对话框保存当前参数。(4)输入问题为了从遗传算法工具输入一个以前输出的问题,可从“FILE”菜单选择“IMPORTPROBLEM(输入问题)”菜单项。在MATLAB工作窗中,打开一个对话框,显示遗传算法问题结构体的一个列表。当选择了问题结构体并单击OK按钮,遗传算法工具中的下列文本框被更新适应度函数。变量个数。参数域。83110举例从最后种群中继续遗传算法下面的例子显示如何输出一个问题,以便当输入问题并按下START按钮时,遗传算法能从该输出问题所保存的最后种群继续运行。现在运行一个例子,在遗传算法工具中输入下面的信息设置适应度函数为ACKLEYFCN,它是计算函数ACKLEY,是工具箱提供的一个测试函数。设置“NUMBEROFVARIABLES”为10。在“PLOTS”窗格选择“BESTFITNESS”。单击按钮“START”。显示的结果如图830所示。161图830函数ACKLEYFCN的最佳适应度假定想要实验利用其它的参数运行遗传算法,接着利用当前参数设置,此后再从最后种群重新运行算法。为此,进行以下步骤单击“EXPORTTOWORKSPACE”按钮。在出现的对话框中选择“EXPORTPROBLEMANDOPTIONSTOAMATLABSTRUCTURENAMED”。在文本框中输入问题和参数的名称,例如ACKLEY_UNIFORM。选择“INCLUDEINFORMATIONNEEDEDTORESUMETHISRUN(包括所需信息以恢复本次运行)”。做了这些选择后的对话框如图831所示。图831在输出窗口对话框中做适当选择单击OK按钮。问题和参数被输出到MATLAB工作空间的一个结构体中。在MATLAB命令窗口输入下面的信息就可以观察这个结构体162ACKLEY_UNIFORMACKLEY_UNIFORMFITNESSFCNACKLEYFCNGENOMELENGTH10OPTIONS1X1STRUCT利用不同的参数设置,甚至是不同的适应度函数,在运行遗传算法之后,都能够按照如下步骤来恢复问题从“FILE”菜单,选择“IMPORTPROBLEM”菜单项。打开的对话框如图832所示。图832GA问题输入窗口选择ACKLEY_UNIFORM。单击按钮“IMPORT”。这样就把“POPULATION”选项中的“INITIALPOPULATION”字段设置成输出问题之前运行的最后种群
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年防组织粘连用壳聚糖凝胶项目建议书
- 小学安全全员培训计划课件
- 2025河南新乡市延津县县外在编在岗教师回乡任教的模拟试卷含答案详解
- 2025杭州市上城区采荷街道办事处编外招聘14人考前自测高频考点模拟试题有完整答案详解
- 2025广东计划招募100人模拟试卷及一套参考答案详解
- 安全培训效果验证课件
- 2025年度中南大学湘雅二医院招聘模拟试卷及答案详解(网校专用)
- HER2-IN-22-生命科学试剂-MCE
- 2025江苏连云港市灌云县招聘就业困难人员公益性岗位26人模拟试卷(含答案详解)
- 2025年甘肃省嘉峪关市卫生健康委员会招聘公益性岗位人员10人考前自测高频考点模拟试题及答案详解(名校卷)
- 卫生院艾滋病培训课件
- 等离子切割机使用培训
- 芳香疗法考试试题及答案
- 两茎灯草获奖说课课件
- 重症肌无力急救护理措施讲课件
- 心跳呼吸骤停患者的护理
- 教育与科技的融合儿童财商启蒙计划的实践与思考
- 2025-2030年中国童书行业市场现状供需分析及投资评估规划分析研究报告
- 转包免责协议书
- 兵棋推演案例
- 儿童支气管哮喘诊断与防治指南(2025)解读课件
评论
0/150
提交评论