Воспроизведите свои результаты

Поскольку моделируемый алгоритм отжига является стохастическим - то есть он делает случайный выбор - вы получаете немного другие результаты каждый раз, когда запускаете его. Алгоритм использует MATLAB по умолчанию® псевдослучайный числовой поток. Для получения дополнительной информации о потоках случайных чисел см. RandStream. Каждый раз, когда алгоритм вызывает поток, его состояние меняется. Поэтому в следующий раз, когда алгоритм вызывает поток, он возвращает другое случайное число.

Если вам нужно точно воспроизвести свои результаты, позвоните simulannealbnd с output аргумент. The output структура содержит текущее состояние генератора случайных чисел в output.rngstate поле. Сбросьте состояние перед повторным запуском функции.

Например, чтобы воспроизвести выход simulannealbnd применяется к пятой функции Де Йонга, вызов simulannealbnd с синтаксисом

rng(10,'twister') % for reproducibility
[x,fval,exitflag,output] = simulannealbnd(@dejong5fcn,[0 0]);

Предположим, что результаты

x,fval

x =
  -16.1292  -15.8214

fval =
    6.9034

Состояние генератора случайных чисел, rngstate, хранится в output.rngstate. Сбросьте поток путем входа

stream = RandStream.getGlobalStream;
stream.State = output.rngstate.State;

Если вы сейчас запускаете simulannealbnd второй раз, вы получаете те же результаты.

Примечание

Если вам не нужно воспроизводить свои результаты, лучше не устанавливать состояния RandStream, так что вы получаете преимущество случайности в этих алгоритмах.

См. также

Похожие темы