主要内容

优化使用粒子群

此示例示出了如何优化用partminleswarm.求解。

在这个例子中的目标函数是德容的第五个功能,其中包括与全局优化工具箱软件。

dejong5fcn

图包含轴。轴包含型表面,等高线的2个对象。

这个函数有25局部极小。

试着找到函数的使用默认的最小partminleswarm.设置。

有趣= @ dejong5fcn;nvars = 2;RNG.默认重复性的%[X,FVAL,exitflag] = particleswarm(乐趣,nvars)
优化结束:在过去的OPTIONS.MaxStallIterations迭代的客观价值相对变化小于OPTIONS.FunctionTolerance。
X =1×2-31.9521 -16.0176
FVAL = 5.9288
exitflag = 1

该如何解决X全球最佳?目前还不清楚在这一点上。纵观函数图显示,该函数在范围内的部件局部极小[-50,50]。因此,限制变量的范围[-50,50]帮助求解器找到全局最小。

磅= [-50 -50]。UB = -LB;[X,FVAL,exitflag] = particleswarm(乐趣,nvars,LB,UB)
优化结束:在过去的OPTIONS.MaxStallIterations迭代的客观价值相对变化小于OPTIONS.FunctionTolerance。
X =1×2-16.0079 -31.9697
FVAL = 1.9920
exitflag = 1

这看起来很有希望:新的解决方案具有较低fval.比前一个。但是X真正的全球性解决方案?试着用更多的颗粒再次最小化,更好地搜索区域。

选项= Optimoptions('particleswarm''SwarmSize',100);[X,FVAL,exitflag] = particleswarm(乐趣,nvars,LB,UB,选项)
优化结束:在过去的OPTIONS.MaxStallIterations迭代的客观价值相对变化小于OPTIONS.FunctionTolerance。
X =1×2-31.9781 -31.9784
FVAL = 0.9980
exitflag = 1

这看起来更有前途。但就是这个答案的全球解决方案,而在于如何准确呢?重新运行具有混合功能的解算器。partminleswarm.来电后的混合功能partminleswarm.完成它的迭代。

options.HybridFcn = @fmincon;[X,FVAL,exitflag] = particleswarm(乐趣,nvars,LB,UB,选项)
优化结束:在过去的OPTIONS.MaxStallIterations迭代的客观价值相对变化小于OPTIONS.FunctionTolerance。
X =1×2-31.9783 -31.9784
FVAL = 0.9980
exitflag = 1

partminleswarm.实际上发现和以前相同的解决方案。这给你一些信心,partminleswarm.报告当地最低和最终X是全球性解决方案。

相关话题