优化使用粒子群
此示例显示了如何使用颗粒处理
求解器。
此示例中的目标函数是De Jong的第五个功能,该功能包含在全局优化工具箱软件中。
dejong5fcn
该功能具有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
是全球解决方案。