因为遗传算法是随机的,所以,它使随机选择 - 每次运行遗传算法时都会得到稍微不同的结果。该算法使用默认的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
笔记
如果您不需要重现结果,最好不要设置流的状态,以便在遗传算法中获得随机性的益处。