主要内容

遗传算法中的混合方案

这个例子展示了如何使用遗传算法和另一种优化方法的混合方案来优化一个函数。ga可以快速地达到一个局部最小值的邻域,但它需要许多函数计算才能达到收敛。要加快解决过程,首先运行ga经过几代人的时间来接近一个最佳点。然后使用ga作为另一个优化求解器的初始点,以执行更快、更有效的局部搜索。

罗森布鲁克函数

本例使用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

Rosenbrock函数的代码在德容2fcn文件。

类型dejong2fcn.m
函数分数=dejong2fcn(pop)%dejong2fcn计算DeJongs第二个函数。%n此函数也称为Rosenbrock函数%Copyright 2003-2004 The MathWorks,Inc.分数=零(大小(pop,1),1);对于i=1:size(pop,1)p=pop(i,:);分数(i)=100*(p(1)^2+(1-p(1))^2;结束

在-2<=x(1)<=2;-2<=x(2)<=2。

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

图形包含一个轴对象。轴对象包含两个类型为“曲面”、“轮廓”的对象。

遗传算法求解

首先,使用ga独自寻找Rosenbrock函数的最小值。

FitnessFcn=@dejong2fcn;numberOfVariables=2;

包括用于监控优化过程的绘图功能。

options=options(@ga,“PlotFcn”,{@gaplotbestf,@gaplotstopping});

设置随机数流的再现性,并运行ga使用选项。

rng违约[x,fval]=ga(FitnessFcn,numberOfVariables,[]、[]、[]、[]、[]、[]、[]、[]、[]、[]、[]选项)
优化终止:适应值的平均变化小于options.FunctionTolerance。

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

x=1×20.3454 - 0.1444
fval=0.4913

使用默认停止条件,ga没有提供一个非常准确的解决方案。您可以更改停止条件以尝试找到更准确的解决方案,但是ga需要许多函数计算来接近全局最优x* =(1,1)。

相反,从何处开始执行更高效的本地搜索ga使用中的混合功能选项停止ga

添加Hybrid功能

混合函数从以下点开始:ga停止。混合函数的选择是fminsearch,模式搜索fminunc. 由于此优化示例平滑且无约束,请使用fminunc为混合函数。提供fminunc指定混合函数时,将打印选项作为附加参数。

fminunoptions=options(@fminunc,“PlotFcn”, {“optimplotfval”,“optimplotx”});选择= optimoptions(选项,“HybridFcn”,{@fminunc,fminunconoptions});

ga再次fminunc为混合函数。

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

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

找到局部最小值。优化已完成,因为梯度的大小小于最优性公差的值。

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

x=1×21.0000 1.0000
fval=1.7215e-11
exitflag=1
输出=带字段的结构:问题类型:'unconstrained' rngstate: [1x1 struct] generations: 51 funccount: 2534 message: 'Optimization terminated: average change in the fitness value less than options.FunctionTolerance....' maxconstraint: [] hybridflag: 1

这个ga图中显示了每一代人口的最佳值和平均值。情节标题确定了最佳价值ga当它停止时。混合函数fminunc从找到的最佳点开始ga.这个fminunc图中显示了解决方案x未来值,这是由于使用gafminunc在一起。在这种情况下,使用混合函数可以提高求解的准确性和效率。这个output.hybridflag现场显示fminunc使用退出标志1停止,表示x是一个真正的局部极小值。

相关的话题