exponenta event banner

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

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

Если вам нужно точно воспроизвести результаты, позвоните simulannealbnd с output аргумент. 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, чтобы вы получили преимущество случайности в этих алгоритмах.

См. также

Связанные темы