主要内容

使用粒子群优化

这个例子展示了如何优化使用particleswarm解算器。

目标函数在这个例子中是德容第五函数,可以当您运行这个例子。

dejong5fcn

图包含一个坐标轴对象。坐标轴对象包含2类型的对象表面轮廓。

这个函数有25个局部最小值。

试图找到最低的函数使用默认particleswarm设置。

有趣= @dejong5fcn;据nvar = 2;rng默认的%的再现性[x, fval exitflag] = particleswarm(有趣,据nvar)
优化结束:相对客观价值的变化在过去的选择。小于OPTIONS.FunctionTolerance MaxStallIterations迭代。
x =1×2-31.9521 - -16.0176
fval = 5.9288
exitflag = 1

解决方案是x全球最佳?目前尚不清楚。看函数图显示组件的函数局部最小值的范围(-50年,50)。所以限制变量的范围(-50年,50)帮助解决定位全球最低。

磅= (-50;-50);乌兰巴托=磅;[x, fval exitflag] = particleswarm(磅,有趣,据nvar乌兰巴托)
优化结束:相对客观价值的变化在过去的选择。小于OPTIONS.FunctionTolerance MaxStallIterations迭代。
x =1×2-16.0079 - -31.9697
fval = 1.9920
exitflag = 1

这看起来有前途的:新解决方案低fval比前一个。但x一个真正的全球解决方案吗?再次尝试减少更多的粒子,更好的搜索区域。

选择= optimoptions (“particleswarm”,“SwarmSize”,100);[x, fval exitflag] = particleswarm(乐趣,据nvar磅、乌兰巴托、期权)
优化结束:相对客观价值的变化在过去的选择。小于OPTIONS.FunctionTolerance MaxStallIterations迭代。
x =1×2-31.9781 - -31.9784
fval = 0.9980
exitflag = 1

这看起来更有前途。但这是回答一个全球性的解决方案,以及如何准确是吗?重新运行混合函数的解算器。particleswarm调用后的混合函数particleswarm完成它的迭代。

选项。HybridFcn = @fmincon;[x, fval exitflag] = particleswarm(乐趣,据nvar磅、乌兰巴托、期权)
优化结束:相对客观价值的变化在过去的选择。小于OPTIONS.FunctionTolerance MaxStallIterations迭代。
x =1×2-31.9783 - -31.9784
fval = 0.9980
exitflag = 1

particleswarm发现基本相同的解决方案。这给了你一些信心particleswarm一个局部最小值,最后报告x是全球解决方案。

相关的话题