exponenta event banner

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

Идентичные ответы с псевдослучайными числами

GlobalSearch и MultiStart используйте псевдослучайные числа при выборе начальных точек. Снова используйте тот же поток псевдослучайных чисел, чтобы:

  • Сравните различные настройки алгоритма.

  • Повторяющийся пример выполнения.

  • Удлинение участка с известным начальным сегментом предыдущего участка.

Оба GlobalSearch и MultiStart используйте поток случайных чисел по умолчанию.

Шаги по воспроизведению результатов

  1. Перед выполнением проблемы сохраните текущее состояние потока случайных чисел по умолчанию:

    stream = rng;
  2. Запустите свой GlobalSearch или MultiStart проблема.

  3. Восстановите состояние потока случайных чисел:

    rng(stream)
  4. При повторном запуске проблемы получается тот же результат.

Пример: Воспроизведение результата, полученного в результате, или результата MultiStart

В этом примере показано, как получить воспроизводимые результаты для поиска глобальных или нескольких локальных минимумов. Пример соответствует процедуре, описанной в разделе Шаги при воспроизведении результатов.

  1. Сохранение текущего состояния потока случайных чисел по умолчанию:

    stream = rng;
  2. Создать sawtoothxy файл функции:

    function f = sawtoothxy(x,y)
    [t r] = cart2pol(x,y); % change to polar coordinates
    h = cos(2*t - 1/2)/2 + cos(t) + 2;
    g = (sin(r) - sin(2*r)/2 + sin(3*r)/3 - sin(4*r)/4 + 4) ...
        .*r.^2./(r+1);
    f = g.*h;
    end
  3. Создать problem структура и GlobalSearch объект:

    problem = createOptimProblem('fmincon',...
        'objective',@(x)sawtoothxy(x(1),x(2)),...
        'x0',[100,-50],'options',...
        optimoptions(@fmincon,'Algorithm','sqp'));
    gs = GlobalSearch('Display','iter');
  4. Запустите проблему:

    [x,fval] = run(gs,problem)
    
     Num Pts                 Best       Current    Threshold        Local        Local                 
    Analyzed  F-count        f(x)       Penalty      Penalty         f(x)     exitflag        Procedure
           0      465       422.9                                   422.9            2    Initial Point
         200     1730  1.547e-015                              1.547e-015            1    Stage 1 Local
         300     1830  1.547e-015     6.01e+004        1.074                             Stage 2 Search
         400     1930  1.547e-015     1.47e+005         4.16                             Stage 2 Search
         500     2030  1.547e-015     2.63e+004        11.84                             Stage 2 Search
         600     2130  1.547e-015    1.341e+004        30.95                             Stage 2 Search
         700     2230  1.547e-015    2.562e+004        65.25                             Stage 2 Search
         800     2330  1.547e-015    5.217e+004        163.8                             Stage 2 Search
         900     2430  1.547e-015    7.704e+004        409.2                             Stage 2 Search
         981     2587  1.547e-015         42.24        516.6        7.573            1    Stage 2 Local
        1000     2606  1.547e-015    3.299e+004        42.24                             Stage 2 Search
    
    GlobalSearch stopped because it analyzed all the trial points.
    
    All 3 local solver runs converged with a positive local solver exit flag.
    
    x =
      1.0e-007 *
        0.0414    0.1298
    
    fval =
      1.5467e-015

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

  5. Восстановите состояние потока случайных чисел:

    rng(stream)
  6. Запустите проблему еще раз. Вы получаете тот же выход.

    [x,fval] = run(gs,problem)
    
     Num Pts                 Best       Current    Threshold        Local        Local                 
    Analyzed  F-count        f(x)       Penalty      Penalty         f(x)     exitflag        Procedure
           0      465       422.9                                   422.9            2    Initial Point
         200     1730  1.547e-015                              1.547e-015            1    Stage 1 Local
    
    ... Output deleted to save space ...
    
    x =
      1.0e-007 *
        0.0414    0.1298
    
    fval =
      1.5467e-015

Параллельная обработка и потоки случайных чисел

Вы получаете воспроизводимые результаты из MultiStart при параллельном запуске алгоритма таким же образом, как при последовательном вычислении. Выполнение воспроизводимо, так как MultiStart генерирует псевдослучайные начальные точки локально, а затем распределяет начальные точки параллельным процессорам. Поэтому параллельные процессоры не используют случайные числа.

Воспроизведение параллели MultiStart выполните процедуру, описанную в разделе Шаги при воспроизведении результатов. Описание выполнения MultiStart параллельно см. раздел Использование параллельной обработки в инструментарии глобальной оптимизации.

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