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

“Resume(恢复)”。为了从暂停处恢复算法的运行,可单击这个“Resume”按钮。

当算法完成时,“Status and results”窗格出现如图8.7所示的情形。

最终点的适应度函数值 最终点

图8.7 状态与结果显示

“Status and results”窗格显示下列信息: 算法终止时适应度函数的最终值:

Fitness function value: 0.0067749206244585025

注意:所显示的值非常接近于Rastrigin函数的实际最小值0。“遗传算法举例”一节描述了一些方法,可以用来得到更接近实际最小值的结果。 算法终止的原因:

Optimization terminated:

maximum number of generations exceeded.

即退出的原因是:超过最大代数而导致优化终止。

在本例中,算法在100代后结束,这是 “Generations(代数)” 选项的缺省值,此选项规定了算法计算的最大代数。

最终点,在本例中是[0.00274 -0.00516]。 8.2.3.3 从命令行查找最小值

为了从命令行查找Rastrigin函数的最小值,可键入

[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(绘图)”窗格可以显示遗传算法运行时所提供的有关信息的各种图形。这些信息可以帮助我们改变算法的选项,改进算法的性能。例如,为了绘制每一代适应度函数的最佳值和平均值,选中复选框“Best fitness(最佳适应度)”,如图8.8所示。

141

图8.8 绘图对话框

当点击Start按钮时,遗传算法工具显示每一代适应度函数的最佳值和平均值的绘制图形。当算法停止时,所出现的图形如图8.9所示。

最佳值 0.0067796 平均值 0.014788

图8.9 各代适应度函数的最佳值和平均值

在每一代中,图的底部的点表示最佳适应度值,而其上的点表示平均适应度值。图的顶部还显示出当前一代的最佳值0.0067796和平均值0.014788。

为了得到最佳适应度值减少到多少为更好的直观图形,我们可以将图中y轴的刻度改变为对数刻度。为此,需进行如下操作:

(1) 从绘图窗格的Edit(编辑)菜单中选择“Axes Properties(坐标轴属性)”,打开属性编辑器,如图8.10所示。

142

单击Y表项 选择对数刻度

图8.10 绘图属性编辑器

(2) 点击Y表项。

(3) 在“Scale(刻度)”窗格,选择“Log (对数)”。 绘制的图形如图8.11所示。

最佳值0.0067796 平均值0.014788 143

图8.11 每一代适应度函数最佳值和平均值的对数图形

典型情况下,在早期各代中,当个体离理想值较远时,最佳值会迅速得到改进。在后来各代中,种群越接近最佳点,最佳值改进得越慢。

8.2.4 遗传算法的一些术语

本节解释遗传算法的一些基本术语,主要包括: ? 适应度函数(Fitness Functions)。 ? 个体(Individuals)。

? 种群(Populations)和代(Generations)。

? 适应度值(Fitness Values)和最佳适应度值(Best Fitness Values); ? 父辈和子辈(Parents and Children)。 8.2.4.1 适应度函数

所谓适应度函数就是想要优化的函数。对于标准优化算法而言,这个函数称为目标函数。该工具箱总是试图寻找适应度函数的最小值。

我们可以将适应度函数编写为一个M文件,作为输入参数传递给遗传算法函数。 8.2.4.2 个体

一个个体是可以施加适应度函数的任意一点。一个个体的适应度函数值就是它的得分或评价。例如,如果适应度函数是

f(x1,x2,x3)?(2x1?1)2?(3x2?4)2?(x3?2)2

则向量(2, -3, 1)就是一个个体,向量的长度就是问题中变量的个数。个体(2, -3, 1)的得分是f(2, -3, 1) = 51。

个体有时又称为基因组或染色体组(genome),个体的向量项称为基因(genes)。 8.2.4.3 种群与代

所谓种群是指由个体组成的一个数组或矩阵。例如,如果个体的长度是100,适应度函数中变量的个数为3,我们就可以将这个种群表示为一个100×3的矩阵。相同的个体在种群中可以出现不止一次。例如,个体(2, -3, 1)就可以在数组的行中出现多次。

每一次迭代,遗传算法都对当前种群执行一系列的计算,产生一个新的种群。每一个后继的种群称为新的一代。 8.2.4.4 多样性

多样性或差异(Diversity)涉及一个种群的各个个体之间的平均距离。若平均距离大,则种群具有高的多样性;否则,其多样性低。在图8.12中,左面的种群具有高的多样性,亦即差异大;而右面的种群多样性低,亦即差异小。

144