此示例演示如何使用粒子暖
求解器。
本例中的目标函数是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
粒子暖
找到了与以前基本相同的解决方案。这给了你一些信心粒子暖
报告一个局部最小值十
是全球的解决方案。