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

图8.37 初始范围为[1; 100]时最佳适应度值和平均距离

这次,算法进展较快。但是,由于个体之间的平均距离太大,最佳个体远离最优解。 第三次,设置“Initial range”为 [1; 2] ,运行算法。得到最佳适应度值大约为0.012,如图8.38所示。

169

图8.38 初始范围为[1; 2]时最佳适应度值和平均距离

这次由于多样性比较适合这个问题,所以算法得到的结果比前两次都好。 (2)设置种群尺度

在“种群(Population)”参数域中“Size”决定每代种群的大小。增加种群的大小,遗传算法能够搜索更多的点,因此,能够得到较好结果。但是,种群越大,遗传算法每代运行时间越长。

注意:至少应该设置“尺度(Size)”的值为“Number of variables”,以便在每一种群中使个体超出搜索范围。

进行实验时,可以设置不同的种群尺度,不限制运行时间,以期得到最好结果。 8.3.3.2 适应度测量

适应度测量把适应度函数返回的原始适应度得分值转换为适合选择函数的范围内的值。选择函数根据适应度值的大小,选择下一代的父体。选择函数分配大选择概率给适应度值大的个体。适应度测量值的范围影响遗传算法的性能。如果测量值变化范围太大,则具有高测量值的个体复制的速度很快,取代种群基因池的速度很快,防碍了遗传算法搜索解空间的其它区域。相反,如果测量值变化太小,所有个体复制机会基本相同,则搜索过程进展缓慢。

缺省的适应度尺度变换函数为Rank(排序),根据每个个体的顺序而不是它的得分值来变换原始得分值。个体的顺序是它在分类后的位置。最适应的个体的序号为1,次之为2,依次类推。排序尺度变换函数分配尺度值有下列目的:

? 个体的尺度值与n成正比。

? 整个种群的尺度值的和等于要求生成下一代父体的数目。 排序适应度尺度变换函数避免了初始值的界限的影响。

图8.39所示为具有20个个体的一个典型种群的初始得分值,按升序排序。

170

图8.39 具有20个个体的一个典型种群的初始得分值

图8.40所示为使用尺度变换函数的初始尺度值。

图8.40 使用尺度变换函数的初始尺度值

因为算法按适应度函数的最小化处理,所以低的初始值具有高的尺度值。又因为排序尺度变换只根据个体的顺序分配值的大小,对于一个大小为20、父辈数等于32的群体,显示的

171

尺度值可以是相同的。

可以把排序尺度变换(Rank scaling)与顶级尺度变换(Top scaling)进行比较。为了观察尺度变换的效果,可以把遗传算法利用排序尺度变换得到的结果与利用其它函数(如顶级变换)得到的结果相比较。默认情况下,顶级尺度变换分配4个最佳适应度个体相同的尺度值,等于父辈数除以4,而分配其它个体的尺度值为0。利用默认的选择函数,只有4个最佳适应度个体能被选为父辈。图8.41为比较排序尺度变换与顶级尺度变换得到的尺度值,种群尺度为20,父辈数为32。

图8.41 比较排序尺度变换与顶级尺度变换得到的尺度值

因为Top scaling限制父辈为最佳适应度个体,它产生的种群类型比Rank scaling产生的种群类型少。图8.42所示为每一代Rank scaling与Top scaling得到的个体之间的距离变化的比较。

172