主要内容

多种解决方案万博 尤文图斯

对多个解决方案万博 尤文图斯

通过呼叫,您在对象中获得多个解决方案万博 尤文图斯与语法

[x,fval,eflag,输出,manymins] =运行(...);

manymins是解决方案对象的矢量;看GlobalOptimsolution.。这manymins向量是客观函数值的顺序,从最低(最佳)到最高(最差)。每个解决方案对象包含以下属性(字段):

  • X-局部最小值

  • fval.- 目标函数的值X

  • ExitFlag.- 本地解算器的退出标志(本地解算器功能参考页中描述:粉刺ExitFlag.Fminunc.ExitFlag.lsqcurvefit.ExitFlag., 或者lsqnonlinExitFlag.

  • 输出- 本地解算器的输出结构(本地解算器功能参考页中描述:粉刺输出Fminunc.输出lsqcurvefit.输出, 或者lsqnonlin输出

  • X0.- 导致解决方案点的开始点的单元格阵列X

有几种方法可以检查解决方案对象的矢量:

  • 在matlab.®工作区浏览器。双击“解决方案”对象,然后双击变量编辑器中的结果显示。

  • 使用点表示法。GlobalOptimsolution.属性是大写。使用适当的大写来访问属性。

    例如,要查找函数值的向量,请输入:

    fcnvals = [manymins.fval] fcnvals = -1.0316 -0.2155 0

    获取导致最低功能值的所有起始点的单元格数组(第一个元素)manymins), 进入:

    smallx0 = manymins(1).x0
  • 绘制一些字段值。例如,要查看所得的范围fval., 进入:

    直方图([Manymins.fval],10)

    这将产生计算函数值的直方图。(该图显示了一个不同于前几个图的直方图。)

改变不同解的定义万博 尤文图斯

获得多个本地解决方案后,您可能会发现,您的公差不合适。万博 尤文图斯您可以拥有比您想要的更多本地解决方案,间隔太紧密。万博 尤文图斯或者您可以具有比您想要更少的解决方案万博 尤文图斯Globalsearch.多层的把太多的解决方案混在一起。万博 尤文图斯

要处理这种情况,请再次使用不同的公差再次运行求解器。这Xtolerance.functiontolerance.公差决定了求解器如何将其产出分为GlobalOptimsolution.向量。这些公差是Globalsearch.多层的对象。

例如,假设您要使用主动集算法粉刺解决问题使用multiStart运行示例。进一步假设您想要容忍0.01对彼此而言Xtolerance.functiontolerance.。这方法组内部函数值的本地解决方案万博 尤文图斯functiontolerance.彼此之间,和哪个也比Xtolerance.除了彼此。要获得解决方案:

%%设置随机流以获得完全相同的输出%RNG(14,'Twister')MS = MultiStart('FunctionTolerance',0.01,'Xtolerance',0.01);opts = Optimoptions(@ Fmincon,'算法','Active-Set');六分= @(x)(4 * x(1)^ 2  -  2.1 * x(1)^ 4 + x(1)^ 6/3 ... + x(1)* x(2) -  4 * x(2)^ 2 + 4 * x(2)^ 4);问题= createOptimprobrom('fmincon','x0',[ -  1,2],...'目标',六分钟,'lb',[ -  3,-3],'UB',[3,3],...'选项',选择);[Xminm,Fminm,Flagm,OutptM,Someminsm] =运行(MS,问题,50);MultiStart完成了所有起始点的运行。所有50个本地解算器运行融合,并使用正本地求解器出口标志。someminsm someminsm = 1x5 globaloptimsolution属性:x fval ExitFlag输出X0

在这种情况下,多层的生成五个不同的解决方案。万博 尤文图斯这里“不同”意味着解决方案在目标函数值或位置分开超过0.01。万博 尤文图斯

相关的话题