GlobalSearch
和MultiStart
在选择起点时使用伪随机数。再次使用相同的伪随机数流:
比较各种算法设置。
让一个示例重复运行。
以已知的前一次运行的初始段延长一次运行。
这两个GlobalSearch
和MultiStart
使用默认的随机数流。
在运行问题之前,存储默认随机数流的当前状态:
流=提高;
运行您的GlobalSearch
或者MultiStart
问题。
恢复随机数流的状态:
RNG(流)
如果您再次运行您的问题,您将得到相同的结果。
这个例子展示了如何获得可重复的结果寻找全局或多个局部极小值.该示例遵循中的过程复制结果的步骤.
存储默认随机数流的当前状态:
流=提高;
创建sawtoothxy
函数文件:
功能f =锯齿(x,y)[t r] = cart2pol(x,y);对极性坐标的%改为H = COS(2 * T - 1/2)/ 2 + COS(T)+ 2;G =(SIN(R) - SIN(2 * R)/ 2 + SIN(3 * R)/ 3 - SIN(4 * R)/ 4 + 4)...... * R. ^ 2 ./(r+1);f = g。* h;结尾
创建问题
结构和GlobalSearch
对象:
问题= createOptimProblem(“fmincon”,…“客观”,@ (x) sawtoothxy (x(1),(2)),…x0,(100、-50),“选项”,…optimoptions (@fmincon、“算法”、“sqp”));gs = GlobalSearch(“显示”、“iter”);
运行存在的问题:
[x, fval] = (gs、问题)Num分最佳运行电流阈值当地当地分析F-count f (x)点球点球f (x) exitflag过程0 465 422.9 - 422.9 2初始点200 1730 1.547 1.547 e - 015 e - 015 1阶段1当地300 1830 1.074 1.547 6.01 e + e - 015 004第二阶段搜索400 1930 4.16 1.547 1.47 e + e - 015 005第二阶段搜索500 2030 11.84 1.547 2.63 e + e - 015 004第二阶段搜索600 2130 30.95 1.547 1.341 e + e - 015 004第二阶段搜索700 2230 65.25 1.547 2.562 e + e - 015 004第二阶段搜索800 2330 163.8 1.547 5.217 e + e - 015 004第二阶段搜索900 2430 409.2 1.547 7.704 e + e - 015 004第二阶段搜索e - 015 981 2587 1.547 42.24 516.6 7.573 1阶段2当地1000 2606 42.24 1.547 3.299 e + e - 015 004第二阶段搜索GlobalSearch停了下来because it analyzed all the trial points. All 3 local solver runs converged with a positive local solver exit flag. x = 1.0e-007 * 0.0414 0.1298 fval = 1.5467e-015
运行此问题时,可能会得到不同的结果,因为随机流在运行开始时处于未知状态。
恢复随机数流的状态:
RNG(流)
再次运行这个问题。结果是一样的。
[x,fval] = run(gs,problem) Num Pts Best Current Threshold Local Analyzed f -count f(x) Penalty Penalty f(x) exitflag Procedure 0 465 422.9 422.9 2 Initial Point 200 1730 1.547e-015 1.547e-015 1 Stage 1 Local…删除输出以节省空间…X = 0.0414 * 0.1298 fval = 1.5467e-015
你可以从MultiStart
当你以串行计算的方式并行运行算法时。运行是可复制的,因为MultiStart
在局部生成伪随机起始点,然后将起始点分配给并行处理器。因此,并行处理器不使用随机数。
再现并行MultiStart
运行,使用中描述的过程复制结果的步骤.有关如何运行的描述MultiStart
同时,看到如何在全局优化工具箱中使用并行处理.