主要内容

复制你的结果

因为模拟退火算法是随机的——也就是说,它会做出随机选择——所以每次运行它都会得到稍微不同的结果。该算法使用默认的MATLAB®伪随机数流。有关随机数流的更多信息,请参见RandStream.每次算法调用流时,它的状态都会改变。所以下一次算法调用流时,它会返回一个不同的随机数。

如果你想准确重现你的结果,打电话simulannealbnd输出论点。的输出结构中包含的当前随机数生成器状态output.rngstate字段。重置状态后,功能才能再次运行。

例如,复制的输出simulannealbnd应用到德容的第五个函数,callsimulannealbnd与语法

Rng (10,'twister') % for再现性[x,fval,exitflag,output] = simulannealbnd(@dejong5fcn,[0 0]);

假设结果是

X,fval = -16.1292 -15.8214 fval = 6.9034

随机数发生器的状态,rngstate,存储在output.rngstate.通过输入重置流

流= RandStream.getGlobalStream;流。状态= output.rngstate.State;

如果你现在跑simulannealbnd第二次,你得到同样的结果。

请注意

如果您不需要复制您的结果,最好不要设置状态RandStream,这样你就能从这些算法的随机性中获益。

另请参阅

相关的话题