MATLAB实验遗传算法和优化设计 联系客服

发布时间 : 星期二 文章MATLAB实验遗传算法和优化设计更新完毕开始阅读09280e8fd05abe23482fb4daa58da0116d171f51

图2 基本遗传算法设计流程图

3. Matlab遗传算法工具箱(gatool)

Matlab的遗传算法工具箱有一个精心设计的图形用户界面,可以帮助用户直观、方便、快速地利用遗传算法求解最优化问题。在Matlab命令窗口输入命令:

gatool

可以打开遗传算法工具箱的图形用户界面,如图3所示。GA工具箱的参数设置步骤如下:

图3. 遗传算法工具

(1) 首先,使用遗传算法工具箱必须输入下列信息:

① Fitness function(适应度函数)

这里指的是待优化的函数,也即目标函数。该工具箱总是试图寻找目标函数的最小值。输入适应度函数的格式为@fitnessfun,其中符号@产生函数fitnessfun的句柄,fitnessfun代表用户编写的计算适应度函数(目标函数)的M文件名,该M文件的编写方法如下:

假定我们要计算Rastrigin函数的最小值

f(x1,x2)?20?x1?x2?10(cos2?x1?cos2?x2) (7)

M函数文件确定这个函数必须接受一个长度为2的行向量X,也即决策向量,向量的长度等于变量数目,行向量X的每个元素分别和变量x1和x2对应。另外M文件要返回一个标量Z,其值等于该函数的值。下面是计算Rastrigin函数的M文件代码:

function Z=Ras_fun(X)

Z=20+X(1)^2+X(2)^2-10*(cos(2*pi*X(1))+cos(2*pi*X(2))); M文件编写、保存后,再在gatool工具箱界面Fitness function栏输入 @Ras_fun

② Number of variable(变量个数)

目标函数中的变量数目,也即适应度函数输入向量的长度。在上例中,它的值是2。 (2) 其次,设置遗传算法参数,即Options设置。

以下只介绍部分运行参数的设置,其他未提及的参数采用默认设置即可。 ① 种群参数(Population)

? Population size (种群规模): 每一代中的个体数目,一般是20-100之间。种群规模大,

算法搜索更彻底,可以增加算法搜索全局最优而非局部最优的概率,但是耗时也更长。 ? Initial range (初始范围):其值是两行的矩阵,代表初始种群中个体的搜索范围,实际上

是决策向量X中每个变量xi的初始搜索范围。矩阵的列数等于变量个数(Number of variable),第一行是每个变量的下限,第二行是每个变量的上限。如果只输入2?1的矩阵,则每个变量的初始搜索范围都一样。注意,初始范围仅限定初始种群中个体(或决策向量)的范围,后续各代中的个体可以不在初始范围之内。初始范围不能设置太小,否则造成个体之间的差异过小,即种群的多样性降低,不利于算法搜索到最优解。 ② 复制参数(Reproduction)

? Crossover fraction (交叉概率):一般取0.4~0.99,默认0.8。

③ 算法终止准则(Stopping Criteria) 提供了5种算法终止条件:

? Generations:最大的进化代数,一般取100~500,默认是100。当遗传算法运行到该参

数指定的世代,计算终止。

? Time limit:指明算法终止执行前的最大时间,单位是秒。缺省是Inf(无穷大)。 ? Fitness limit(适应度限):当最优适应度值小于或等于此参数值时,计算终止。缺省是-Inf。 ? Stall generation(停滞代数):如果每一代的最佳适应度值在该参数指定的代数没有改善,

则终止计算。缺省是50代。

? Stall time(停滞时间): 如果每一代的最佳适应度值在该参数指定的时间间隔内没有改

善,则终止计算。缺省是20秒。 (3) 设置绘图参数,即Plots设置。

绘图参数(Plots)工作时可以从遗传算法得到图形数据。当选择各种绘图参数并执行遗

22传算法时,一个图形窗口在分离轴上显示这些图形。下面介绍其中2个参数

? Best fitness: 选择该绘图参数时,将绘制每一代的最佳适应度值和进化世代数之间的

关系图,如图4的上图所示。图中蓝色点代表每一代适应度函数的平均值,黑色点代表每一代的最佳值。

? Distance: 选择此参数时,绘制每一代中个体间的平均距离。它反映个体之间的差异程

度,所以可用来衡量种群的多样性。图4的下图显示的即是每一代个体间的平均距离。

图4

(4) 执行算法:参数设置好了之后,点击工具箱界面上的按钮“Star”执行求解器。在算法运行的同时,“Current generation(当前代数)”文本框中显示当前的进化代数。通过单击“Pause”按钮可以使计算暂停,之后再点击“Resume”可以恢复计算。当计算完成时,“Status and results”窗格中出现如图5所示的情形。

图5

其中包含下列信息:

① 算法终止时适应度函数的最终值—即目标函数的最优值

Fitness function value: 0.003909079476983379 ② 算法终止原因

Optimization terminated: maximum number of generations exceeded.(超出最大进化世代数) ③ 最终点—即目标函数的最优解

[x1 x2] = [-0.004 -0.00193](两个变量的例子)

三、实验内容

1. Rastrigin函数的最小值问题

函数表达式如(7)式,函数图像如下图6所示,它有多个局部极小值,但是只有一个全局最小值。Rastrigin函数的全局最小值的精确解是0,出现在[x1 x2]=[0 0]处。

图6 Rastrigin函数图像

① 使用遗传算法工具箱近似求解Rastrigin函数的最小值

首先编写计算适应度函数的M文件,然后设置运行参数(绘图参数Plots勾选Best fitness和Distance两项,其它参数可以使用默认值),执行求解器(Run solver)计算Rastrigin函数的最优值。

② 观察种群多样性对优化结果的影响

决定遗传算法的一个重要性能是种群的多样性。个体之间的距离越大,则多样性越高;反之则多样性越低。多样性过高或过低遗传算法都可能运行不好。通过实验调整Population(种群)的Initial range(初始范围)参数可得到种群适当的多样性。

? 取Initial range参数值[1; 1.1]观察Rastrigin函数最小值的计算结果; ? 取Initial range参数值[1; 100]观察Rastrigin函数最小值的计算结果;

? 取Initial range参数值[1; 2]观察Rastrigin函数最小值的计算结果; 2. 微带电极欧姆损耗的优化

微带电极的欧姆损耗公式可由(1)式表示。令设计变量[W,D,t]=[x1, x2, x3]=X,变量的约束条件如下:

10μm?W?40μm; 10μm?D?20μm; 1μm?t?5μm; (8)

根据(1)式和(8)式,使用遗产算法工具箱优化设计电极的结构参数W(宽度)、D(间距)、t(厚度)使得电极的欧姆损耗最小。(1)式中用到的常数:?0?4??10;?s?1.667?10 【 提示:对约束条件(8)式的处理可以在编写计算适应度函数的M文件中实现。方法是在M文件中引入对每个输入变量值范围的判断语句,如果任一变量范围超出(8)式的限制,则给该个体的适应度施加一个惩罚,使得该个体被遗传到下一代的概率减小甚至为0。一般可用下式对个体适应度进行调整

?7?8?F(x) x满足约束条件F'(x)?? (9)

?F(x)?P(x) x不满足约束条件其中,F(x)是原适应度,F'(x)是调整后的适应度;P(x)是罚函数。为简单计,本问题中我们可以给个体的适应度(i.e.M函数文件的返回值Z)加上一个很大的数即可,如正无穷Inf 】

四、思考题

1. 在遗传算法当中,个体的变异对结果有何影响?如果没有变异,结果又将如何?试以Rastrigin函数最小值的计算为例说明(取变异概率为0,即交叉概率Crossover fraction =1.0)。 2. 遗传算法工具箱针对的是最小化函数值问题,如果要利用该工具箱计算函数的最大值,该如何实现?