使用MATLAB遗传算法工具实例(详细) 下载本文

8.2.2 遗传算法使用方式

遗传算法工具有两种使用方式: 以命令行方式调用遗传算法函数ga。

使用遗传算法工具,从图形用户界面到遗传算法。 本节对这些方式做一个简要的介绍。

8.2.2.1 在命令行调用函数ga

对于在命令行使用遗传算法,可以用下列语法调用遗传算法函数ga:

[x fval] = ga(@fitnessfun, nvars, options)

其中:@fitnessfun 是适应度函数句柄;nvars 是适应度函数的独立变量的个数;options 是一个包含遗传算法选项参数的结构。如果不传递选项参数,则ga使用它本身的缺省选项值。

函数所给出的结果:fval——适应度函数的最终值;x——最终值到达的点。

我们可以十分方便地把遗传算法工具输出的结果直接返回到MATLAB的workspace(工作空间),或以不同的选项从M文件多次调用函数ga来运行遗传算法。

调用函数ga时,需要提供一个选项结构options。后面的有关章节对于在命令行使用函数ga和创建选项结构options提供了详细的描述。 8.2.2.2 通过GUI使用遗传算法

遗传算法工具有一个图形用户界面GUI,它使我们可以使用遗传算法而不用工作在命令行方式。为了打开遗传算法工具,可键入

gatool

打开的遗传算法工具图形用户界面如图8.2所示。

137

显示参数描述 输入适应度函数 输入适应度函数 的变量数目 开始遗传算法 显示结果

图8.2 遗传算法工具

为了使用遗传算法工具,首先必须输入下列信息: Fitness function(适应度函数)——欲求最小值的目标函数。输入适应度函数的形式为@fitnessfun,其中fitnessfun.m是计算适应度函数的M文件。在前面“编写待优化函数的M文件”一节里已经解释了如何编写这种M文件。符号@产生一个对于函数fitnessfun的函数句柄。

Number of variables(变量个数)——适应度函数输入向量的长度。对于“编写待优化函数的M文件”一节所描述的函数My_fun,这个参数是2。

点击Start按钮,运行遗传算法,将在Status and Results(状态与结果)窗格中显示出相应的运行结果。

在Options窗格中可以改变遗传算法的选项。为了查看窗格中所列出的各类选项,可单击与之相连的符号“+”。

8.2.3 举例:Rastrigin函数

本节介绍一个例子,讲述如何寻找Rastrigin函数的最小值和显示绘制的图形。Rastrigin函数是最常用来测试遗传算法的一个典型函数。Rastrigin函数的可视化图形显示,它具有多个局部最小值和一个全局最小值,遗传算法可以帮助我们确定这种具有多个局部最小值函数的最优解。

8.2.3.1 Rastrigin函数

138

具有两个独立变量的Rastrigin函数定义为

2Ras(x)?20?x12?x2?10(cos2?x1?cos2?x2)

Rastrigin函数的图形如图8.3所示。

工具箱包含一个M文件,即rastriginsfcn.m,是用来计算Rastrigin函数值的。

全局最小点[0,0]

图8.3 Rastrigin函数图形

如图8.3所示,Rastrigin函数有许多局部最小值——在图上显示为“谷底(valleys)”。然而,该函数只有一个全局最小值,出现在x-y 平面上的点[0,0]处,正如图中竖直线指示的那样,函数的值在那里是0。在任何不同于[0,0]的局部最小点处,Rastrigin函数的值均大于0。局部最小处距原点越远,该点处Rastrigin函数的值越大。

Rastrigin函数之所以最常用来测试遗传算法,是因为它有许多局部最小点,使得用标准的、基于梯度的查找全局最小的方法十分困难。

图8.4所示是Rastrigin函数的轮廓线,它显示出最大最小交替变化的情形。

139

局部最小点 局部最小点 全局最小点[0,0] 图8.4 Rastrigin函数的轮廓线

8.2.3.2 寻找Rastrigin函数的最小值

本节解释如何使用遗传算法来寻找Rastrigin函数的最小值。

注意:因为遗传算法使用随机数据来进行它的搜索,所以该算法每一次运行时所返回的结果会稍微有些不同。

为了查找最小值,进行下列步骤:

在命令行键入gatool,打开遗传算法工具。

在遗传算法工具的相应栏目,输入适应度函数和变量个数。在“Fitness function(适应度函数)”文本框中,输入@rastriginsfcn;在“Number of variables(变量个数)”文本框中,输入2,这就是Rastrigin函数独立变量的个数。这一步操作如图8.5所示。

图8.5 输入适应度函数与变量个数

在“Run solver(运行求解器)”窗格中,单击Start按钮,如图8.6所示。

图8.6 单击运行求解器Start按钮

在算法运行的同时,“Current generation(当前代数)”文本框中显示出当前的代数。通过点击“暂停(Pause)”按钮,可以使算法临时暂停一下。当这样做的时候,该按钮的名字变为

140