主要内容

再现结果

因为遗传算法是随机的,所以,它使随机选择 - 每次运行遗传算法时都会得到稍微不同的结果。该算法使用默认的MATLAB®伪随机数量流。有关随机数流的更多信息,请参阅randstream.。每一次GA.调用流,其状态更改。所以下次GA.调用流,它返回不同的随机数。这就是为什么输出的GA.每次运行它时都不同。

如果您需要完全重现结果,可以调用GA.使用包含默认流的当前状态的输出参数,然后在运行之前将状态重置为此值GA.再次。例如,重现输出GA.适用于Rastrigin的功能,呼叫GA.用语法

RNG(1,'twister'重复性的%[x,fval,出口,输出] = ga(@rastriginsfcn,2);

假设结果是

X,Fval,ExitFlag
x = -1.0421 -1.0018 fval = 2.4385 ExitFlag = 1

存储流的状态output.rngstate.。重置状态,输入

Stream = randstream.getglobalstream;stream.state = output.rngstate.state;

如果你现在跑了GA.第二次,您以前获得相同的结果:

[x,fval,exitflag] = ga(@rastriginsfcn,2)
优化终止:FITHS值的平均变化小于选项。功能化。x = -1.0421 -1.0018 fval = 2.4385 ExitFlag = 1

笔记

如果您不需要重现结果,最好不要设置流的状态,以便在遗传算法中获得随机性的益处。

相关话题