实验六遗传算法工具箱的应用
一、 实验目的
1、熟悉遗传算法中的基本参数以及设置方法。 2、了解遗传算法如何用于函数优化工作。
3、掌握使用MATLAB遗传算法工具箱进行函数优化。 二、 实验设备
1、PC机 2、Matlab软件 三、 实验原理
GADST为用户提供了友好的GUI使用界面及清晰的命令行调用语句,使用极为简单方便。MATLAB 7.0版本开始自带GADST,GADST是一个函数库,里面包括了遗传算法的主函数、各个子函数以及一些绘图函数。
在MATLAB中,可以通过在“Command Window”中输入optimtool(‘ga’)或者gatool打开GADST工具箱,GADST工具箱界面如下图所示。
(图片要修改)
可以看到,该界面包括以下三部分:
1、Problem Setup and Results(问题建立与结果板块)。
从上至下依次为:输入适应度函数句柄(Fitness function)、个体所含的变量数目(Number of variables)、约束[线性不等式约束(Linear inequalities)、线性等式约束(Linear equalities)、上下限约束(Bounds)、非线性约束函数(Nonlinear constraint function)],待设置完中间板块的Options后,单击Start按钮,遗传算法开始运行,运行完之后结果显示于该板块下部。 2、Options(遗传算法选项设置板块)。
在运行遗传算法之前,需要在该板块内进行设置,包括如下几项:
1)种群(Population)。包括种群类型(Population type)、种群大小(Population size)以及一些与种群相关的设定,后者可采用默认设置。
2)适应度排序(Fitness scaling)。默认使用函数fitscalingrank(等级排序),也可从下拉菜单中选用其它排序函数。
3)选择(Selection)。默认使用函数selectionstochunif(随机一致性选择),也可从下拉菜单中选用其它排序函数。
4)繁殖(Reproduction)。遗传算法为了繁殖下一代,需要设置精英数目(EliteCount)和交叉后代比例(CrossoverFraction),默认值为2和0.8。
5)变异(Mutation)。根据所优化函数约束的不同,变异函数有所差异,一般选用默认的即可。
6)交叉(Crossover)。默认使用函数crossoverscattered(分散交叉),也可从下拉菜单中选用其它排序函数。
7)终止条件(Stopping criteria)。终止条件有以下几个,满足其中一个遗传算法就会停止:
① 最大进化代数(Generations),即遗传算法的最大迭代次数,默认为100代。
② 时间限制(Time limit)。算法允许的最大运行时间,默认无穷大。 ③ 适应度函数值限制(Fitness limit)。当种群中的最优个体的适应度函数值小于或等于Fitness limit时,算法停止。
④ 停止代数(Stall generations)和适应度函数值偏差(Function tolerance)。若在Stall generations设定的代数内,适应度函数值的加权平均变化值小于Function tolerance,算法停止。默认为50和1e-6。
⑤ 停止时间限制(Stall time limit)。若在Stall time limit设定的时间内,种群中的最优个体没有进化,算法停止。
8)绘图函数(Plot functions)。包括最优个体的适应度函数值(Best fitness)、最优个体(Best individual)、种群内个体间的距离(Distance)等,只要选中相应选项,GADST就会在遗传算法运行过程中绘制其随种群进化的变化情况。
3、Quick Reference(快速参阅板块)。
该板块对问题建立与结果板块以及遗传算法选项设置板块的内容做了详细的解释,相当于快速的help,不需要时可以隐藏。 四、 实验内容
使用GADST遗传算法工具箱优化如下函数:
y?(4*x3?4*x*x?2*x2?42*x?14)?(4*x3?4*x*x?2*x2?26*x?22)112212121122
具体步骤如下:
1、编写适应度函数GA_demo的M文件,代码如下: Function f=GA_demo(x);
f1=4*x(1).^3+4*x(1)*x(2)+2*x(2).^2-42*x(1)-14; f1=4*x(2).^3+4*x(1)*x(2)+2*x(1).^2-26*x(1)-22; f=f1.^2+f2.^2;
2、打开GADST的GUI界面;
3、在Fitness function中输入适应度函数句柄,即@GA_demo。注意该适应
度函数必须在Current Directory内;
4、在Number of variables中输入个体所含的变量数目; 5、本实验没有约束条件,因此保持约束的几项为空;
6、在Population size中,设置种群大小为100;在Reproduction中,设置精
英数目(EliteCount)和交叉后代比例(CrossoverFraction)分别是10和0.75;在Stopping criteria中,设置最大进化代数(Generations)、停止代数(Stall generations)和适应度函数值偏差(Function tolerance)分别是500、500和1e-100。
7、在Plot functions中,选中最优个体的适应度函数值(Best fitness)和最优
个体(Best individual)。 8、其余选项保持默认。 9、单击Start开始遗传算法。 五、 实验报告
1、给出程序最终运行界面,对结果进行分析。 2、给出最优个体及其对应的适应度函数值。
3、更改实验中的可变参数值进行重复实验,譬如种群大小、精英数目、停
止条件等,分析这些参数在遗传算法寻优中的作用。