复制你的结果
由于模拟退火算法是stochastic-that,它使随机选择得到不同结果每次运行它。该算法使用默认的MATLAB®伪随机数流。关于随机数流的更多信息,请参阅RandStream
。每次调用流的算法,其状态变化。所以下次算法调用流,流返回一个不同的随机数。
如果你需要准确地复制你的结果,调用simulannealbnd
与输出
论点。的输出
结构包含当前随机数发生器的状态output.rngstate
字段。再次之前重置状态运行功能。
例如,复制的输出simulannealbnd
应用于德容的第五个功能(当你运行这个例子),电话simulannealbnd
与语法
rng (10,“旋风”)%的再现性[x, fval exitflag、输出]= simulannealbnd (@dejong5fcn [0 0]);
优化终止:变化函数值小于options.FunctionTolerance最好。
检查x
和fval
输出。
x, fval
x =1×2-16.1292 - -15.8214
fval = 6.9034
随机数发生器的状态,rngstate
,存储在output.rngstate
。重置流如下。
流= RandStream.getGlobalStream;流。状态= output.rngstate.State;
运行simulannealbnd
第二次,得到相同的结果。
[x, fval exitflag、输出]= simulannealbnd (@dejong5fcn [0 0]);
优化终止:变化函数值小于options.FunctionTolerance最好。
x, fval
x =1×2-16.1292 - -15.8214
fval = 6.9034
如果你运行simulannealbnd
又没有重置随机数流,改变的结果。
[x, fval exitflag、输出]= simulannealbnd (@dejong5fcn [0 0]);
优化终止:变化函数值小于options.FunctionTolerance最好。
x, fval
x =1×20 0
fval = 12.6705
注意:如果你不需要复制的结果,最好不要设置的状态RandStream
,这样你得到的好处这些算法的随机性。