主要内容

优化使用粒子群

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

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

dejong5fcn.

图包含轴对象。轴对象包含2个类型表面的物体,轮廓。

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

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

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

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

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

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

选项= Optimoptions('particleswarm''群体化',100);[x,fval,ExitFlag] = ParticleSwarm(有趣,NVARS,LB,UB,选项)
优化结束:最后一个options的目标值中的相对变化.maxstallerations迭代率小于options.functionToleance。
X =1×2-31.9781 -31.9784
fval = 0.9980.
EXITFLAG = 1

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

options.hybridfcn = @fmincon;[x,fval,ExitFlag] = ParticleSwarm(有趣,NVARS,LB,UB,选项)
优化结束:最后一个options的目标值中的相对变化.maxstallerations迭代率小于options.functionToleance。
X =1×2-31.9783 -31.9784
fval = 0.9980.
EXITFLAG = 1

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

相关话题