主要内容

遗传算法中的混合方案

此示例显示如何使用混合方案来使用遗传算法和另一种优化方法优化函数。遗传算法可以快速到达局部最小的邻居,但它可能需要许多功能评估来实现融合。加快解决方案过程,首先运行遗传算法对少数几代人来说,接近最优点。然后使用从遗传算法作为另一优化求解器的初始点,以执行更快,更高效的本地搜索。

。海涅的功能

此示例使用RosenBrock的函数(也称为dejong的第二个功能)作为健身功能:

f x 1 0 0 x 2 - x 1 2 2 + 1 - x 1 2

Rosenbrock的功能在优化中是臭名昭着的,因为大多数方法在尝试最小化此功能时展示了大多数方法。RosenBrock的函数在点x * =(1,1)处具有唯一的最小值,其中它具有函数值 f x 0

罗森布罗克的代码在dejong2fcn文件。

类型dejong2fcn.m
function scores = dejong2fcn(pop) % dejong2fcn计算dejong的第二个函数。%这个函数也被称为Rosenbrock的函数% Copyright 2003-2004 The MathWorks, Inc. scores = 0 (size(pop,1),1);For I = 1:size(pop,1) p = pop(I,:);分数(i) = 100 * (p (1) ^ 2 - p (2)) ^ 2 + (1 - p (1)) ^ 2;结束

在-2 <= x(1) <= 2范围内绘制Rosenbrock函数;-2 <= x(2) <=2。

plotobjective(@ dejong2fcn,[ -  2 2; -2 2]);

图中包含一个轴对象。轴对象包含曲面、轮廓两种类型的对象。

遗传算法的解决方案

首先,使用遗传算法单独求罗森布罗克函数的最小值。

FitnessFcn = @dejong2fcn;numberOfVariables = 2;

包括绘图功能,以监控优化过程。

选择= optimoptions (@ga,“PlotFcn”, {@gaplotbestf, @gaplotstopping});

设置随机数流以进行再现性,并运行遗传算法使用选项。

rng.默认的[x, fval] = ga (FitnessFcn numberOfVariables ,[],[],[],[],[],[],[], 选项)
优化终止:适应度值的平均变化小于选项。

图遗传算法包含2个轴对象。轴对象1具有最佳标题:0.491302意思:664119包含2个类型的2个物体。这些对象代表最佳适应度,平均适应度。标题为“停止条件”的axis对象2包含一个类型为bar的对象。

x =1×20.3454 0.1444
fval = 0.4913

使用默认的停止条件,遗传算法不提供非常准确的解决方案。您可以更改停止标准以尝试找到更准确的解决方案,但是遗传算法需要许多函数评估来接近全局最佳X * =(1,1)。

相反,执行一个更有效的本地搜索,从哪里开始遗传算法使用中的混合功能选项停止遗传算法

添加混合函数

混合函数从以下点开始遗传算法停止。混合函数选择是fminsearchpatternsearch,或fminunc.因为这个优化示例是平滑和无约束的,请使用fminunc作为混合函数。提供fminunc将plot选项作为指定混合函数时的附加参数。

fminuncOptions = optimoptions (@fminunc,“PlotFcn”,{'OptimplotFval''Optimplotx'});选项= Optimoptions(选项,'hybridfcn', {@fminunc, fminuncOptions});

运行遗传算法再次与fminunc作为混合函数。

[x, fval exitflag,输出]= ga (FitnessFcn numberOfVariables ,[],[],[],[],[],[],[], 选项)
优化终止:适应度值的平均变化小于选项。

Figure Optimization Plot Function包含2个轴对象。带有标题的轴对象1当前功能值:1.72147e-11包含一个类型为line的对象。标题为“当前点”的轴对象2包含一个类型为bar的对象。

局部最小值。由于梯度的大小小于最优性公差的值,优化完成。

图遗传算法包含2个轴对象。轴对象1的标题Best: 0.664192 Mean: 4.61776e+06包含2个类型为line的对象。这些对象代表最佳适应度,平均适应度。标题为“停止条件”的axis对象2包含一个类型为bar的对象。

x =1×21.0000 - 1.0000
fval = 1.7215 e-11
exitflag = 1
输出=结构体字段:问题型:'不受约束的'rngstate:[1x1 struct]代:51 Funccount:2534消息:'优化终止:健身值的平均变化低于选项.FunctionTolecta ....'MaxConstraint:[] HybridFlag:1

遗传算法情节显示了每一代人口的最佳和平均值。绘图标题标识所发现的最佳值遗传算法当它停止。混合函数fminunc从发现的最佳点开始遗传算法.的fminunc图显示了解决方案xfval,这是由于使用遗传算法fminunc一起。在这种情况下,使用混合函数提高了解决方案的准确性和效率。的output.hybridflag字段显示fminunc以退出标志1停止,表示x是真正的地方最低限度。

相关话题