主要内容

优化使用粒子群

此示例显示了如何优化使用partminleswarm.求解器。

此示例中的目标函数是De Jong的第五个功能,包括全局优化工具箱软件。

dejong5fcn.

图包含轴。轴包含2个类型的表面,轮廓。

此功能有25个本地最小值。

尝试使用默认值查找函数的最小值partminleswarm.设置。

有趣= @ dejong5fcn;nvars = 2;RNG.默认重复性的%[x,fval,exitflag] = particleswarm(乐趣,nvars)
优化结束:最后一个options的目标值中的相对变化.maxstallerations迭代率小于options.functionTolectance。
X =1×2-31.9521 -16.0176
fval = 5.9288.
EXITFLAG = 1

是解决方案X全球最佳?此时尚不清楚。查看函数图表明该函数对范围内的组件具有本地最小值[-50,50]。所以限制变量的范围[-50,50]帮助求解器定位全局最小值。

lb = [-50; -50];UB = -LB;[x,fval,exitflag] = particleswarm(有趣,nvars,lb,Ub)
优化结束:最后一个options的目标值中的相对变化.maxstallerations迭代率小于options.functionTolectance。
X =1×2-16.0079 -31.9697
fval = 1.9920.
EXITFLAG = 1

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

选项= Optimoptions('particleswarm''群体化',100);[x,fval,出口氟rag] = particleswarm(有趣,nvars,lb,Ub,选项)
优化结束:最后一个options的目标值中的相对变化.maxstallerations迭代率小于options.functionTolectance。
X =1×2-31.9781 -31.9784
fval = 0.9980.
EXITFLAG = 1

这看起来更有希望。但是这是一个全球解决方案,而且是多么准确?用混合函数重新运行求解器。partminleswarm.之后调用混合函数partminleswarm.完成它的迭代。

options.hybridfcn = @fmincon;[x,fval,出口氟rag] = particleswarm(有趣,nvars,lb,Ub,选项)
优化结束:最后一个options的目标值中的相对变化.maxstallerations迭代率小于options.functionTolectance。
X =1×2-31.9783 -31.9784
fval = 0.9980.
EXITFLAG = 1

partminleswarm.以前发现基本上是相同的解决方案。这让你有一些信心partminleswarm.报告最低限度,最终X是全球解决方案。

相关话题