Симулированные опции отжига

Установите симулированные опции отжига в командной строке

Задайте опции путем создания options объект с помощью optimoptions функция можно следующим образом:

options = optimoptions(@simulannealbnd,...
    'Param1',value1,'Param2',value2, ...);

Каждая опция в этом разделе перечислена его именем поля в options. Например, InitialTemperature относится к соответствующему полю options.

Постройте опции

Опции графика позволяют вам отобразить данные на графике из симулированного решателя отжига, в то время как это запускается.

PlotInterval задает количество итераций между последовательными вызовами функции построения графика.

Отобразить график при вызове simulannealbnd из командной строки, набор PlotFcn поле options быть встроенным именем функции построения графика или указателем на функцию построения графика. Можно задать любой из следующих графиков:

  • 'saplotbestf' строит лучшее значение целевой функции.

  • 'saplotbestx' строит текущую лучшую точку.

  • 'saplotf' строит текущее значение функции.

  • 'saplotx' строит текущую точку.

  • 'saplotstopping' уровни критерия остановки графиков.

  • 'saplottemperature' строит температуру в каждой итерации.

  • @myfun строит пользовательскую функцию построения графика, где myfun имя вашей функции. Смотрите Структуру Функций построения графика для описания синтаксиса.

Например, чтобы отобразить лучший объективный график, установите options можно следующим образом

options = optimoptions(@simulannealbnd,'PlotFcn','saplotbestf');

Чтобы отобразить несколько графиков, используйте синтаксис массива ячеек

options = optimoptions(@simulannealbnd,...
    'PlotFcn',{@plotfun1,@plotfun2, ...});

где @plotfun1, @plotfun2, и так далее указатели на функцию в функции построения графика.

Если вы задаете больше чем одну функцию построения графика, все графики появляются как подграфики в том же окне. Щелкните правой кнопкой по любому подграфику, чтобы получить увеличенную версию в отдельном окне рисунка.

Структура функций построения графика

Первая линия функции построения графика имеет форму

function stop = plotfun(options,optimvalues,flag)

Входные параметры к функции

  • options — Опции создали использование optimoptions.

  • optimvalues — Структура, содержащая информацию о текущем состоянии решателя. Структура содержит следующие поля:

    • x CurrentPoint

    • fval — Значение целевой функции в x

    • bestx — Лучшая точка найдена до сих пор

    • bestfval — Значение целевой функции в лучшем случае указывает

    • temperature — Текущая температура

    • iteration — Текущая итерация

    • funccount — Количество вычислений функции

    • t0 — Время начала для алгоритма

    • k — Отжиг параметра

  • flag — Текущее состояние, в котором называется функция построения графика. Возможные значения для flag

    • 'init' — Состояние инициализации

    • 'iter' — Состояние итерации

    • 'done' — Конечное состояние

Выходной аргумент stop обеспечивает способ остановить алгоритм в текущей итерации. stop может иметь следующие значения:

  • false — Алгоритм продолжается к следующей итерации.

  • true — Алгоритм останавливается в текущей итерации.

Температурные опции

Температурные опции задают, как температура будет понижена в каждой итерации в течение алгоритма.

  • InitialTemperature — Начальная температура в начале алгоритма. Значением по умолчанию является 100. Начальная температура может быть вектором с той же длиной как x, вектор из неизвестных. simulannealbnd расширяет скалярную начальную температуру в вектор.

  • TemperatureFcn — Функция раньше обновляла температурное расписание. Позвольте k обозначить параметр отжига. (Параметр отжига совпадает с номером итерации до переотжига.) Опции:

    • 'temperatureexp' — Температура равна InitialTemperature * 0.95^k. Это значение по умолчанию.

    • 'temperaturefast' — Температура равна InitialTemperature / k.

    • 'temperatureboltz' — Температура равна InitialTemperature / ln (k).

    • @myfun — Использует пользовательскую функцию, myfun, обновить температуру. Синтаксис:

      temperature = myfun(optimValues,options)

      где optimValues структура, описанная в Структуре Функций построения графика. options или создается с optimoptions, или состоит из опций по умолчанию, если вы не создали опций. Оба параметр отжига optimValues.k и температурный optimValues.temperature векторы с длиной, равной числу элементов текущей точки x. Например, функция temperaturefast :

      temperature = options.InitialTemperature./optimValues.k;

Настройки алгоритма

Настройки алгоритма задают алгоритмические определенные параметры, используемые в генерации новых точек в каждой итерации.

Параметры, которые могут быть заданы для simulannealbnd :

  • DataType — Тип данных, чтобы использовать в целевой функции. Выбор:

    • 'double' (значение по умолчанию) — Вектор из типа double.

    • 'custom' — Любой другой тип данных. Необходимо обеспечить 'custom' отжиг функции. Вы не можете использовать гибридную функцию.

  • AnnealingFcn — Функция раньше генерировала новые точки для следующей итерации. Выбор:

    • 'annealingfast' — Шаг имеет температуру длины с направлением однородно наугад. Это значение по умолчанию.

    • 'annealingboltz' — Шаг имеет квадратный корень длины из температуры с направлением однородно наугад.

    • @myfun — Использует пользовательский алгоритм отжига, myfun. Синтаксис:

      newx = myfun(optimValues,problem)
      где optimValues структура, описанная в Структуре Выходной функции и problem структура, содержащая следующую информацию:

      • objective: указатель на функцию к целевой функции

      • x0: стартовая точка

      • nvar: количество переменных решения

      • lb: нижняя граница на переменных решения

      • ub: верхняя граница на переменных решения

      Например, текущим положением является optimValues.x, и текущим значением целевой функции является problem.objective(optimValues.x).

      Можно записать пользовательскую целевую функцию путем изменения saannealingfcntemplate.m файл. Чтобы сохранить все выполняет итерации внутри границ, имейте свой пользовательский вызов функции отжига sahonorbounds как итоговая команда.

  • ReannealInterval — Число точек принято перед переотжигом. Значением по умолчанию является 100.

  • AcceptanceFcn — Функция раньше определяла, принята ли новая точка или нет. Выбор:

    • 'acceptancesa' — Симулированная приемная функция отжига, значение по умолчанию. Если новое значение целевой функции меньше старого, новая точка всегда принимается. В противном случае новая точка принята наугад с вероятностью в зависимости от различия в значениях целевой функции и на текущей температуре. Приемная вероятность

      11+exp(Δmax(T)),

      где Δ = новая цель – старая цель и T является текущей температурой. И начиная с Δ и начиная с T положительны, вероятность принятия между 0 и 1/2. Меньшая температура приводит к меньшей приемной вероятности. Кроме того, больший Δ приводит к меньшей приемной вероятности.

    • @myfun — Пользовательская приемная функция, myfun. Синтаксис:

      acceptpoint = myfun(optimValues,newx,newfval);
      где optimValues структура, описанная в Структуре Выходной функции, newx точка, оцениваемая для принятия и newfval целевая функция при newx. acceptpoint boolean, со значением true принять newx, и false отклонить newx.

Гибридные функциональные опции

Гибридная функция является другой функцией минимизации, которая запускается во время или в конце итераций решателя. HybridInterval задает интервал (если не never или end) в котором вызвана гибридная функция. Можно задать гибридную функцию с помощью HybridFcn опция. Выбор:

  • [] — Никакая гибридная функция.

  • 'fminsearch' — Использует MATLAB® функция fminsearch выполнять безусловную минимизацию.

  • 'patternsearch' — Использование patternsearch выполнять ограниченную или безусловную минимизацию.

  • 'fminunc' — Использует функцию Optimization Toolbox™ fminunc выполнять безусловную минимизацию.

  • 'fmincon' — Использует функцию Optimization Toolbox fmincon выполнять ограниченную минимизацию.

Примечание

Убедитесь, что ваша гибридная функция принимает ваши ограничения задач. В противном случае, simulannealbnd выдает ошибку.

Можно установить отдельные опции для гибридной функции. Использование optimset для fminsearch, или optimoptions для fmincon, patternsearch, или fminunc. Например:

hybridopts = optimoptions('fminunc',...
    'Display','iter','Algorithm','quasi-newton');
Включайте гибридные опции в simulannealbnd options можно следующим образом:
options = optimoptions(@simulannealbnd,options,...
    'HybridFcn',{@fminunc,hybridopts}); 
hybridopts должен существовать, прежде чем вы установите options.

См. Гибридную Схему в Генетическом алгоритме для примера. Смотрите, Когда Использовать Гибридную Функцию.

Опции критерия остановки

Критерий остановки определяет то, что заставляет алгоритм завершать работу. Можно задать следующие опции:

  • FunctionTolerance — Запуски алгоритма до среднего изменения в значении целевой функции в StallIterLim итерации меньше FunctionTolerance. Значением по умолчанию является 1e-6.

  • MaxIterations — Алгоритм останавливается, если количество итераций превышает это максимальное количество итераций. Можно задать максимальное количество итераций как положительное целое число или InfInf значение по умолчанию.

  • MaxFunctionEvaluations задает максимальное количество оценок целевой функции. Алгоритм останавливается, если количество вычислений функции превышает максимальное количество вычислений функции. Позволенным максимумом является 3000*numberofvariables.

  • MaxTime задает максимальное время в секундах запуски алгоритма перед остановкой.

  • ObjectiveLimit — Алгоритм останавливается, если лучшее значение целевой функции допустимой точки меньше ObjectiveLimit.

Опции выходной функции

Выходные функции являются функциями, которые вызывает на каждой итерации алгоритм. Значение по умолчанию не должно иметь никакой выходной функции, []. Необходимо сначала создать выходную функцию с помощью синтаксиса, описанного в Структуре Выходной функции.

Используя приложение Оптимизации:

  • Задайте Output function как @myfun, где myfun имя вашей функции.

  • Чтобы передать дополнительные параметры в выходной функции, используйте Анонимные функции.

  • Для нескольких выходных функций введите массив ячеек указателей выходной функции: {@myfun1,@myfun2,...}.

В командной строке:

  • options = optimoptions(@simulannealbnd,'OutputFcn',@myfun);

  • Для нескольких выходных функций введите cell-массив указателей на функцию:

    options = optimoptions(@simulannealbnd,...
        'OutputFcn',{@myfun1,@myfun2,...});

Чтобы видеть шаблон, который можно использовать, чтобы записать собственные выходные функции, войти

edit saoutputfcntemplate

в командной строке MATLAB.

Структура выходной функции

Выходная функция имеет следующий синтаксис вызова.

[stop,options,optchanged] = myfun(options,optimvalues,flag)

Функция имеет следующие входные параметры:

  • options — Опции создали использование optimoptions.

  • optimvalues — Структура, содержащая информацию о текущем состоянии решателя. Структура содержит следующие поля:

    • x CurrentPoint

    • fval — Значение целевой функции в x

    • bestx — Лучшая точка найдена до сих пор

    • bestfval — Значение целевой функции в лучшем случае указывает

    • temperature — Текущая температура, вектор та же длина как x

    • iteration — Текущая итерация

    • funccount — Количество вычислений функции

    • t0 — Время начала для алгоритма

    • k — Отжигая параметр, вектор та же длина как x

  • flag — Текущее состояние, в котором называется выходная функция. Возможные значения для flag

    • 'init' — Состояние инициализации

    • 'iter' — Состояние итерации

    • 'done' — Конечное состояние

Передача Дополнительных Параметров объясняет, как предоставить дополнительные параметры выходной функции.

Выходная функция возвращает следующие аргументы:

  • stop — Обеспечивает способ остановить алгоритм в текущей итерации. stop может иметь следующие значения:

    • false — Алгоритм продолжается к следующей итерации.

    • true — Алгоритм останавливается в текущей итерации.

  • options — Опции, как изменено выходной функцией.

  • optchanged — Булев флаг, указывающий на изменения, был сделан к options. Это должно быть установлено в true если опции изменяются.

Параметры экрана

Используйте Display опция, чтобы задать, сколько информации отображено в командной строке, в то время как алгоритм запускается. Доступные параметры

  • off — Никакой вывод не отображен. Это - значение по умолчанию для options экспортируемый из приложения Оптимизации.

  • iter — Информация отображена в каждой итерации.

  • diagnose — Информация отображена в каждой итерации. Кроме того, диагностика перечисляет некоторую информацию о задаче и опции, которые были изменены от значений по умолчанию.

  • final — Причина остановки отображена. Это - значение по умолчанию для опций, созданных с помощью optimoptions.

Оба iter и diagnose отобразите следующую информацию:

  • Iteration — Номер итерации

  • f-count — Совокупное число оценок целевой функции

  • Best f(x) — Лучшее значение целевой функции

  • Current f(x) — Текущее значение целевой функции

  • Mean Temperature — Значение функции средней температуры