粒子群优化

此示例演示如何使用粒子暖求解器。

本例中的目标函数是De Jong的第五个函数,它包含在全局优化工具箱软件中。

德容5FCN

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

尝试使用默认值查找函数的最小值粒子暖设置。

乐趣=@dejong5fcn;nvars=2;rng违约%再现性[x,fval,exitflag]=粒子温暖(有趣,nvars)
优化结束:上次目标值的相对变化OPTIONS.MaxStallIterations选项迭代次数小于选项.功能公差.
十=1×2个-31.9521至16.0176
fval=5.9288
退出标志=1

是解决办法全球最优?目前还不清楚。查看功能图可以看出,该功能对范围内的组件具有局部最小值[-50,50]. 所以把变量的范围限制在[-50,50]帮助解算器定位全局最小值。

lb=[-50;-50];ub=-lb;[x,fval,exitflag]=粒子热(fun,nvars,lb,ub)
优化结束:上次目标值的相对变化OPTIONS.MaxStallIterations选项迭代次数小于选项.功能公差.
十=1×2个-16.0079至31.9697
fval=1.9920
退出标志=1

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

options=最佳选项('粒子温暖',“蜂拥而至”,100);[x,fval,exitflag]=粒子热(fun,nvars,lb,ub,options)
优化结束:上次目标值的相对变化OPTIONS.MaxStallIterations选项迭代次数小于选项.功能公差.
十=1×2个-31.9781至31.9784
fval=0.9980
退出标志=1

这看起来更有希望。但这个答案是一个全球性的解决方案吗?它有多准确?使用混合函数重新运行解算器。粒子暖在之后调用混合函数粒子暖完成迭代。

选项.HybridFcn=@fminco;[x,fval,exitflag]=粒子热(有趣,nvars,lb,ub,选项)
优化结束:上次目标值的相对变化OPTIONS.MaxStallIterations选项迭代次数小于选项.功能公差.
十=1×2个-31.9783至31.9784
fval=0.9980
退出标志=1

粒子暖找到了与以前基本相同的解决方案。这给了你一些信心粒子暖报告一个局部最小值是全球的解决方案。

相关主题