主要内容

复制的结果

伪随机数的相同答案

GlobalSearch而且MultiStart在选择起点时使用伪随机数。再次使用相同的伪随机数流:

  • 比较各种算法设置。

  • 让一个示例重复运行。

  • 用已知的前一次运行的初始段扩展一次运行。

这两个GlobalSearch而且MultiStart使用默认的随机数流。

复制结果的步骤

  1. 在运行你的问题之前,存储默认随机数流的当前状态:

    流=提高;
  2. 运行您的GlobalSearchMultiStart问题。

  3. 恢复随机数流的状态:

    rng(流)
  4. 如果你再次运行你的问题,你会得到同样的结果。

示例:复制GlobalSearch或MultiStart结果

这个例子展示了如何获得可重复的结果查找全局或多个局部极小值.本例的步骤如下复制结果的步骤

  1. 存储默认随机数流的当前状态:

    流=提高;
  2. 创建sawtoothxy函数文件:

    函数f = sawtoothxy(x,y) [t r] = cart2pol(x,y);%变换到极坐标h = cos(2*t - 1/2)/2 + cos(t) + 2;g = (sin (r) -罪(2 * r) / 2 +罪(3 * r) / 3 -罪(4 * r) / 4 + 4)…。* r。^ 2. / (r + 1);f = g。* h;结束
  3. 创建问题结构和GlobalSearch对象:

    问题= createOptimProblem(“fmincon”,…“客观”,@ (x) sawtoothxy (x(1),(2)),…x0,(100、-50),“选项”,…optimoptions (@fmincon、“算法”、“sqp”));gs = GlobalSearch(“显示”、“iter”);
  4. 运行存在的问题:

    [x,fval] = run(gs,problem) Num Pts最佳当前阈值本地本地分析f -count f(x) Penalty惩罚f(x) exitflag步骤0 465 422.9 422.9 2起始点200 1730 1.547e-015 1.547e-015 1.547e-015 1.047e -015 1.047e -015 1.074第二阶段搜索400 1930 1.547e-015 1.47e+ 004 1.074第二阶段搜索500 2030 1.547e-015 1.63 e+005 11.84第二阶段搜索600 2130 1.547e-015 1.341e+004 30.95第二阶段搜索700 2230 1.547e-015 2.562e+004 65.25第二阶段搜索800 2330 1.547e-015 5.217e+004163.8第二阶段搜索900 2430 1.547e-015 7.704e+004 409.2第二阶段搜索981 2587 1.547e-015 42.24 516.6 7.573 1第二阶段本地1000 2606 1.547e-015 3.299e+004 42.24第二阶段搜索GlobalSearch停止,因为它分析了所有的试点。所有3次本地解算器运行都汇聚了一个正的本地解算器出口标志。X = 1.0e-007 * 0.0414 0.1298 fval = 1.5467e-015

    在运行此问题时,您可能会得到不同的结果,因为随机流在运行之初处于未知状态。

  5. 恢复随机数流的状态:

    rng(流)
  6. 再运行一下这个问题。你得到相同的输出。

    [x,fval] = run(gs,problem) Num Pts当前最佳阈值Local Local分析f -count f(x) Penalty惩罚f(x) exitflag过程0 465 422.9 422.9 2初始点200 1730 1.547e-015 1.547e-015 1阶段1本地…删除输出以节省空间…X = 1.0e-007 * 0.0414 0.1298 fval = 1.5467e-015

并行处理与随机数流

可以得到可重复的结果MultiStart当你用和串行计算相同的方法并行运行算法时。运行是可复制的,因为MultiStart本地生成伪随机起始点,然后将起始点分配给并行处理器。因此,并行处理器不使用随机数。

复制一个平行体MultiStart运行,使用中描述的过程复制结果的步骤.有关如何运行的说明MultiStart同时,看到如何在全局优化工具箱中使用并行处理

相关的话题

Baidu
map