使用MATLAB遗传算法工具实例(详细.).doc
《使用MATLAB遗传算法工具实例(详细.).doc》由会员分享,可在线阅读,更多相关《使用MATLAB遗传算法工具实例(详细.).doc(68页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第八章第八章 使用使用 MATLAB 遗传算法工具遗传算法工具最新发布的 MATLAB 7.0 Release 14 已经包含了一个专门设计的遗传算法与直接搜索工 具箱(Genetic Algorithm and Direct Search Toolbox,GADS) 。使用遗传算法与直接搜索工具 箱,可以扩展 MATLAB 及其优化工具箱在处理优化问题方面的能力,可以处理传统的优化 技术难以解决的问题,包括那些难以定义或不便于数学建模的问题,可以解决目标函数较复 杂的问题,比如目标函数不连续、或具有高度非线性、随机性以及目标函数没有导数的情况。本章 8.1 节首先介绍这个遗传算法与直接搜索工
2、具箱,其余各节分别介绍该工具箱中的 遗传算法工具及其使用方法。8.1 遗传算法与直接搜索工具箱概述遗传算法与直接搜索工具箱概述本节介绍 MATLAB 的 GADS(遗传算法与直接搜索)工具箱的特点、图形用户界面及 运行要求,解释如何编写待优化函数的 M 文件,且通过举例加以阐明。8.1.1 工具箱工具箱的特点的特点GADS 工具箱是一系列函数的集合,它们扩展了优化工具箱和 MATLAB 数值计算环境 的性能。遗传算法与直接搜索工具箱包含了要使用遗传算法和直接搜索算法来求解优化问题 的一些例程。这些算法使我们能够求解那些标准优化工具箱范围之外的各种优化问题。所有 工具箱函数都是 MATLAB 的
3、 M 文件,这些文件由实现特定优化算法的 MATLAB 语句所写 成。 使用语句 type function_name 就可以看到这些函数的 MATLAB 代码。我们也可以通过编写自己的 M 文件来实现来扩展遗 传算法和直接搜索工具箱的性能,也可以将该工具箱与 MATLAB 的其他工具箱或 Simulink 结合使用,来求解优化问题。 工具箱函数可以通过图形界面或 MATLAB 命令行来访问,它们是用 MATLAB 语言编写 的,对用户开放,因此可以查看算法、修改源代码或生成用户函数。 遗传算法与直接搜索工具箱可以帮助我们求解那些不易用传统方法解决的问题,譬如表 查找问题等。 遗传算法与直接搜
4、索工具箱有一个精心设计的图形用户界面,可以帮助我们直观、方便、 快速地求解最优化问题。8.1.1.1 功能特点功能特点 遗传算法与直接搜索工具箱的功能特点如下: (1)图形用户界面和命令行函数可用来快速地描述问题、设置算法选项以及监控进程。 (2)具有多个选项的遗传算法工具可用于问题创建、适应度计算、选择、交叉和变异。 (3)直接搜索工具实现了一种模式搜索方法,其选项可用于定义网格尺寸、表 决方法和搜索方法。 (4)遗传算法与直接搜索工具箱函数可与 MATLAB 的优化工具箱或其他的 MATLAB 程序结合使用。 (5)支持自动的 M 代码生成。8.1.1.2 图形用户界面和命令行函数图形用户
5、界面和命令行函数遗传算法工具函数可以通过命令行和图形用户界面来使用遗传算法。直接搜索工具函数 也可以通过命令行和图形用户界面来进行访问。图形用户界面可用来快速地定义问题、设置 算法选项、对优化问题进行详细定义。 遗传算法与直接搜索工具箱还同时提供了用于优化管理、性能监控及终止准则定义的工 具,同时还提供大量标准算法选项。 在优化运行的过程中,可以通过修改选项来细化最优解,更新性能结果。用户也可以提 供自己的算法选项来定制工具箱。 8.1.1.3 使用其他函数和求解器使用其他函数和求解器遗传算法与直接搜索工具箱与 MATLAB 及优化工具箱是紧密结合在一起的。用户可以 用遗传算法或直接搜索算法来
6、寻找最佳起始点,然后利用优化工具箱或用 MATLAB 程序来 进一步寻找最优解。通过结合不同的算法,可以充分地发挥 MATLAB 和工具箱的功能以提 高求解的质量。对于某些特定问题,使用这种方法还可以得到全局(最优)解。 8.1.1.4 显示、监控和输出结果显示、监控和输出结果遗传算法与直接搜索工具箱还包括一系列绘图函数用来可视化优化结果。这些可视化功 能直观地显示了优化的过程,并且允许在执行过程中进行修改。 工具箱还包括一系列绘图函数用来可视化优化结果。这些可视化功能直观地显示了优化 的过程,并且允许在执行过程中进行修改。该工具箱还提供了一些特殊绘图函数,它们不仅 适用于遗传算法,还适用于直
7、接搜索算法。适用于遗传算法的函数包括函数值、适应度值和 函数估计。适用于直接搜索算法的函数包括函数值、分值直方图、系谱、适应度值、网格尺 寸和函数估计。这些函数可以将多个绘图一并显示,可直观方便地选取最优曲线。另外,用 户也可以添加自己的绘图函数。 使用输出函数可以将结果写入文件,产生用户自己的终止准则,也可以写入用户自己的 图形界面来运行工具箱求解器。除此之外,还可以将问题的算法选项导出,以便日后再将它 们导入到图形界面中去。8.1.1.5 所需的产品支持所需的产品支持遗传算法与直接搜索工具箱作为其他优化方法的补充,可以用来寻找最佳起始点,然后 可以再通过使用传统的优化技术来进一步寻找最优解
8、。 工具箱需要如下产品支持:(1) MATLAB。(2) 优化工具箱。8.1.1.6 相关产品相关产品与遗传算法与直接搜索工具箱相关的产品有: (1)统计工具箱应用统计算法和概率模式。 (2)神经网络工具箱设计和仿真神经网络。 (3)模糊逻辑工具箱设计和仿真基于模糊逻辑的系统。 (4)金融工具箱分析金融数据和开发金融算法。8.1.1.7 所需的系统及平台所需的系统及平台遗传算法和直接搜索工具箱对于对于运行环境、支持平台和系统的需求,可随时通过访 问网站 http:/ 了解最新发布的信息。 这里介绍的 MATLAB 7.0 Release 14 所需的最低配置是:Windows 系列操作系统,
9、Pentium III 500 CPU、64MB RAM,空闲硬盘空间 600MB 以上。8.1.2 编写待优化函数的编写待优化函数的M文件文件为了使用遗传算法和直接搜索工具箱,首先必须编写一个 M 文件,来确定想要优化的函 数。这个 M 文件应该接受一个行向量,并且返回一个标量。行向量的长度就是目标函数中独 立变量的个数。本节将通过实例解释如何编写这种 M 文件。8.1.2.1 编写编写 M 文件举例文件举例下面的例子展示了如何为一个想要优化的函数编写M文件。假定我们想要计算下面函数 的最小值:22 12112122(,)266f x xxx xxxxM文件确定这个函数必须接受一个长度为2的
10、行向量X,分别与变量x1和x2相对应,并且 返回一个标量X,其值等于该函数的值。为了编写这个M文件,执行如下步骤: (1)在MATLAB的File菜单中选择New菜单项。 (2)选择M-File,将在编辑器中打开一个新的M文件。 (3)在该M文件中,输入下面两行代码: function z = my_fun(x) z = x(1)2 - 2*x(1)*x(2) + 6*x(1) + x(2)2 - 6*x(2); (4)在MATLAB路径指定的目录中保存该M文件。 为了查看该M文件是否返回正确的值,可键入 my_fun(2 3) ans =-5 注意注意:在运行遗传算法工具或模式搜索工具时,不
11、要使用编辑器或调试器来调试目标函 数的M文件,否则会导致在命令窗口出现Java异常消息,并且使调试更加困难。8.1.2.2 最大化与最小化最大化与最小化遗传算法和直接搜索工具箱中的优化函数总是使目标函数或适应度函数最小化。也就是 说,它们求解如下形式的问题:minimize( )xf x如果我们想要求出函数f(x)的最大值,可以转而求取函数g(x)=f(x)的最小值,因为函数 g(x)最小值出现的地方与函数f(x)最大值出现的地方相同。例如,假定想要求前面所描述的函数的最大值,这时,22 12112122(,)266f x xxx xxxx我们应当编写一个M文件来计算,求函数22 121121
12、22( )(,)(266)g xf x xxx xxxx 的最小值。8.1.2.3 自动代码生成自动代码生成遗传算法与直接搜索工具箱提供了自动代码生成特性,可以自动生成求解优化问题所需 要的 M 文件。例如,图 8.1 所示的就是使用遗传算法工具的自动代码生成特性所产生的 M 文件。 另外,图形用户界面所输出的优化结果可以作为对来自命令行调用代码的一种解释,这 些代码还用于使例程和保护工作自动化。图8.1 遗传算法M文件代码的自动生成8.2 使用遗传算法使用遗传算法工具初步工具初步遗传算法与直接搜索工具箱包含遗传算法工具和直接搜索工具。从本节至章末,将主要 介绍其中的遗传算法工具及其使用方法。
13、 本节主要介绍遗传算法工具使用的初步知识,内容包括:遗传算法使用规则,遗传算法 工具的使用方式,举例说明如何使用遗传算法来求解一个优化问题,解释遗传算法的一些基 本术语,最后阐述遗传算法的工作原理与工作过程。8.2.1 遗传算法遗传算法使用规则使用规则遗传算法是一种基于自然选择、生物进化过程来求解问题的方法。遗传算法反复修改对 于个体解决方案的种群。在每一步,遗传算法随机地从当前种群中选择若干个体作为父辈, 并且使用它们产生下一代的子种群。在连续若干代之后,种群朝着优化解的方向进化。我们 可以用遗传算法来求解各种不适宜于用标准优化算法求解的优化问题,包括目标函数不连续、 不可微、随机或高度非线
14、性的问题。 遗传算法在每一步使用下列三类规则从当前种群来创建下一代: (1)选择规则(Selection rules) ,选择对下一代种群有贡献的个体,称为父辈。 (2)交叉规则(Crossover rules),将两个父辈结合起来构成下一代的子辈种群。 (3)变异规则(Mutation rules),施加随机变化给父辈个体来构成子辈。 遗传算法与标准优化算法主要在两个方面有所不同,它们的比较情况归纳于表 8.1 中。表8.1 遗传算法与标准优化算法比较标准算法遗传算法每次迭代产生一个单点,点的序列逼近一个优化解每次迭代产生一个种群,种群逼近一个优化解通过确定性的计算在该序列中选择下一个点通过
15、随机进化选择计算来选择下一代种群8.2.2 遗传算法遗传算法使用方式使用方式遗传算法工具有两种使用方式: (1)以命令行方式调用遗传算法函数ga。 (2)使用遗传算法工具,从图形用户界面到遗传算法。 本节对这些方式做一个简要的介绍。8.2.2.1 在命令行调用函数在命令行调用函数 ga 对于在命令行使用遗传算法,可以用下列语法调用遗传算法函数ga: x fval = ga(fitnessfun, nvars, options) 其中:fitnessfun 是适应度函数句柄;nvars 是适应度函数的独立变量的个数;options 是一 个包含遗传算法选项参数的结构。如果不传递选项参数,则ga使
16、用它本身的缺省选项值。 函数所给出的结果:fval适应度函数的最终值;x最终值到达的点。 我们可以十分方便地把遗传算法工具输出的结果直接返回到MATLAB的workspace(工 作空间),或以不同的选项从M文件多次调用函数ga来运行遗传算法。 调用函数ga时,需要提供一个选项结构options。后面的有关章节对于在命令行使用函数 ga和创建选项结构options提供了详细的描述。8.2.2.2 通过通过 GUI 使用遗传算法使用遗传算法遗传算法工具有一个图形用户界面 GUI,它使我们可以使用遗传算法而不用工作在命令 行方式。为了打开遗传算法工具,可键入 gatool 打开的遗传算法工具图形用
17、户界面如图 8.2 所示。 图8.2 遗传算法工具为了使用遗传算法工具,首先必须输入下列信息: (1)Fitness function(适应度函数)欲求最小值的目标函数。输入适应度函 数的形式为fitnessfun,其中fitnessfun.m是计算适应度函数的M文件。在前面“编写 待优化函数的M文件”一节里已经解释了如何编写这种M文件。符号产生一个对于 函数fitnessfun的函数句柄。 (2)Number of variables(变量个数)适应度函数输入向量的长度。对于 “编写待优化函数的M文件”一节所描述的函数My_fun,这个参数是2。 点击Start按钮,运行遗传算法,将在Sta
18、tus and Results(状态与结果)窗格中显示出相应 的运行结果。 在Options窗格中可以改变遗传算法的选项。为了查看窗格中所列出的各类选项,可单击 与之相连的符号“+”。8.2.3 举例:举例:Rastrigin函数函数本节介绍一个例子,讲述如何寻找 Rastrigin 函数的最小值和显示绘制的图形。Rastrigin 函数是最常用来测试遗传算法的一个典型函数。Rastrigin 函数的可视化图形显示,它具有多 个局部最小值和一个全局最小值,遗传算法可以帮助我们确定这种具有多个局部最小值函数 的最优解。输入适应度函数输入适应度函数的变量数目开始遗传算法显示结果显示参数描述8.2.
19、3.1 Rastrigin 函数函数具有两个独立变量的Rastrigin函数定义为22 1212( )2010(cos2cos2)Ras xxxxxRastrigin函数的图形如图8.3所示。 工具箱包含一个M文件,即rastriginsfcn.m,是用来计算Rastrigin函数值的。图8.3 Rastrigin函数图形如图 8.3 所示,Rastrigin 函数有许多局部最小值在图上显示为“谷底(valleys)”。然 而,该函数只有一个全局最小值,出现在 x-y 平面上的点0,0处,正如图中竖直线指示的 那样,函数的值在那里是 0。在任何不同于0,0的局部最小点处,Rastrigin 函
20、数的值均大于 0。局部最小处距原点越远,该点处 Rastrigin 函数的值越大。 Rastrigin 函数之所以最常用来测试遗传算法,是因为它有许多局部最小点,使得用标准 的、基于梯度的查找全局最小的方法十分困难。 图 8.4 所示是 Rastrigin 函数的轮廓线,它显示出最大最小交替变化的情形。全局最小点0,0图8.4 Rastrigin函数的轮廓线8.2.3.2 寻找寻找 Rastrigin 函数的最小值函数的最小值本节解释如何使用遗传算法来寻找 Rastrigin 函数的最小值。 注意注意:因为遗传算法使用随机数据来进行它的搜索,所以该算法每一次运行时所返回的 结果会稍微有些不同。
21、 为了查找最小值,进行下列步骤: (1)在命令行键入 gatool,打开遗传算法工具。 (2)在遗传算法工具的相应栏目,输入适应度函数和变量个数。在“Fitness function(适应度函数)”文本框中,输入rastriginsfcn;在“Number of variables(变 量个数)”文本框中,输入 2,这就是 Rastrigin 函数独立变量的个数。这一步操作如 图 8.5 所示。图8.5 输入适应度函数与变量个数(3)在“Run solver(运行求解器)”窗格中,单击 Start 按钮,如图 8.6 所示。图8.6 单击运行求解器Start按钮在算法运行的同时, “Curre
22、nt generation(当前代数) ”文本框中显示出当前的代数。通过点全局最小点0,0局部最小点局部最小点击“暂停(Pause) ”按钮,可以使算法临时暂停一下。当这样做的时候,该按钮的名字变为 “Resume(恢复) ”。为了从暂停处恢复算法的运行,可单击这个“Resume”按钮。 当算法完成时, “Status and results”窗格出现如图 8.7 所示的情形。图8.7 状态与结果显示“Status and results”窗格显示下列信息: (1)算法终止时适应度函数的最终值: Fitness function value: 0.0067749206244585025 注意注
23、意:所显示的值非常接近于 Rastrigin 函数的实际最小值 0。 “遗传算法举例”一节描述了 一些方法,可以用来得到更接近实际最小值的结果。 (2)算法终止的原因: Optimization terminated: maximum number of generations exceeded. 即退出的原因是:超过最大代数而导致优化终止。 在本例中,算法在100代后结束,这是 “Generations(代数)” 选项的缺省值,此选项规 定了算法计算的最大代数。 (3)最终点,在本例中是0.00274 -0.00516。8.2.3.3 从命令行查找最小值从命令行查找最小值为了从命令行查找Ra
24、strigin函数的最小值,可键入 x fval reason = ga(rastriginsfcn, 2) 这将返回 x = 0.0027 -0.0052 fval = 0.0068 reason = Optimization terminated: maximum number of generations exceeded. 其中:x 是算法返回的最终点;fval 是该最终点处适应度函数的值;reason 是算法结束的原因。8.2.3.4 显示绘制图形显示绘制图形“Plots(绘图)”窗格可以显示遗传算法运行时所提供的有关信息的各种图形。这些信息最终点的适应度函数值最终点可以帮助我们改变
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 使用 MATLAB 遗传 算法 工具 实例 详细
限制150内