主要内容

优化使用粒子群

此示例显示了如何使用颗粒处理求解器。

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

dejong5fcn

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

该功能具有25个局部最小值。

尝试使用默认值查找功能的最小值颗粒处理设置。

fun = @dejong5fcn;nvars = 2;RNG默认%可再现性[X,FVAL,EXITFLAG] =颗粒(娱乐,nvars)
优化结束了:目标值对最后一个选项的相对变化。MaxStalliterationsIterations Iterations少于选项。FunctionTolerance。
x =1×2-31.9521 -16.0176
FVAL = 5.9288
出口= 1

是解决方案X全球最佳?目前尚不清楚。查看功能图显示该函数具有该范围内组件的局部最小值[-50,50]。因此,将变量的范围限制为[-50,50]帮助求解器找到全球最低限度。

lb = [-50; -50];ub = -lb;[X,FVAL,EXITFLAG] =颗粒(Fun,nvars,lb,ub)
优化结束了:目标值对最后一个选项的相对变化。MaxStalliterationsIterations Iterations少于选项。FunctionTolerance。
x =1×2-16.0079 -31.9697
FVAL = 1.9920
出口= 1

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

选项= optimoptions(“颗粒”,,,,“蜂拥而至”,100);[X,FVAL,EXITFLAG] =颗粒(娱乐,nvars,lb,ub,options)
优化结束了:目标值对最后一个选项的相对变化。MaxStalliterationsIterations Iterations少于选项。FunctionTolerance。
x =1×2-31.9781 -31.9784
FVAL = 0.9980
出口= 1

这看起来更加有前途。但是这个答案是全球解决方案,它的准确性如何?通过混合功能重新运行求解器。颗粒处理调用混合功能之后颗粒处理完成其迭代。

options.hybridfcn = @fmincon;[X,FVAL,EXITFLAG] =颗粒(娱乐,nvars,lb,ub,options)
优化结束了:目标值对最后一个选项的相对变化。MaxStalliterationsIterations Iterations少于选项。FunctionTolerance。
x =1×2-31.9783 -31.9784
FVAL = 0.9980
出口= 1

颗粒处理找到与以前相同的解决方案。这使您有些信心颗粒处理报告当地的最低限度和最终X是全球解决方案。

相关话题