通过调用金宝搏官方网站跑
与语法
[x,fval,eflag,output,manymins]=run(…);
manymins
是解决方案对象的向量;请参见全局最优解
.的manymins
向量按目标函数值的顺序排列,从最低(最佳)到最高(最差)。每个解决方案对象包含以下属性(字段):
有几种方法可以检查解决方案对象的向量:
在MATLAB中®工作区浏览器。双击解决方案对象,然后双击变量编辑器中的结果显示。
使用点表示法。全局最优解
属性是大写。使用适当的大写来访问属性。
例如,要查找函数值的向量,请输入:
fcnvals=[manymins.Fval]fcnvals=-1.0316-0.2155 0
获取导致函数值最低的所有起始点(函数的第一个元素)的单元格数组manymins
),输入:
smallX0=manymins(1).X0
绘制一些字段值。例如,查看结果的范围Fval
,输入:
直方图([manymins.Fval],10)
这将产生一个计算函数值的直方图。(图中显示的是来自不同例子的直方图,与之前的几张图不同。)
在获得多个局部解之后,您可能会发现您的公差不合适。您可以有比您想要的更多的局部解,这些局部解之间的间距金宝搏官方网站太近。或者您可以有比您想要的更少的解,但全球研究
或多部分
聚集了太多的解决方案。金宝搏官方网站
若要处理此情况,请使用不同的公差再次运行解算器容忍度
和功能公差
公差确定解算器如何将其输出分组到全局最优解
向量。这些公差是全球研究
或多部分
对象。
例如,假设您想使用活动集
算法铁铬镍铁合金
解决问题使用MultiStart运行的示例。进一步假设您希望公差为0.01
两者皆有容忍度
和功能公差
.的跑
方法对目标函数值在金宝搏官方网站功能公差
彼此之间,孰轻孰重,孰轻孰重容忍度
相互分离。要获得解决方案:
%%设置随机流以获得完全相同的输出%rng(14,'twister')ms=multistat('FunctionTolerance',0.01,'xtolence',0.01);opts=optimoptions(@fmincon,'Algorithm','active-Set');sixmin=@(x)(4*x(1)^2-2.1*x(1)^6/3…+x(1)*x(2)-4*x(2+4*x(2)^4);problem=createproblem('fmincon',',…'objective',sixmin,'lb',[-3,-3],'ub',[3,3],…'options',opts);[xminm,fminm,flagm,outptm,someminsm]=run(ms,problem,50);MultiStart从所有起点完成运行。所有50个局部解算器运行都收敛于一个正的局部解算器出口标志。someminsm someminsm=1x5全局解算器属性:X Fval Exitflag Output X0
在这种情况下,,多部分
生成五个不同的解。这里的“不同”表示解在目标函数金宝搏官方网站值或位置上的间隔大于0.01。