主要内容

复制你的结果

由于模拟退火算法是stochastic-that,它使随机选择得到不同结果每次运行它。该算法使用默认的MATLAB®伪随机数流。关于随机数流的更多信息,请参阅RandStream。每次调用流的算法,其状态变化。所以下次算法调用流,流返回一个不同的随机数。

如果你需要准确地复制你的结果,调用simulannealbnd输出论点。的输出结构包含当前随机数发生器的状态output.rngstate字段。再次之前重置状态运行功能。

例如,复制的输出simulannealbnd应用于德容的第五个功能(当你运行这个例子),电话simulannealbnd与语法

rng (10,“旋风”)%的再现性[x, fval exitflag、输出]= simulannealbnd (@dejong5fcn [0 0]);
优化终止:变化函数值小于options.FunctionTolerance最好。

检查xfval输出。

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,这样你得到的好处这些算法的随机性。

另请参阅

相关的话题