simulannealbnd

Найдите минимум функции с помощью симулированного алгоритма отжига

Описание

пример

x = simulannealbnd(fun,x0) находит локальный минимум, x, к указателю на функцию fun это вычисляет значения целевой функции. x0 начальная точка для симулированного алгоритма отжига, вектора действительных чисел.

Примечание

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

пример

x = simulannealbnd(fun,x0,lb,ub) задает набор нижних и верхних границ на переменных проекта в x, так, чтобы решением всегда был в области значений lb  x  ub. Если x(i) неограниченно ниже, установите lb(i) = -Inf, и если x(i) неограниченно выше, установите ub(i) = Inf.

пример

x = simulannealbnd(fun,x0,lb,ub,options) минимизирует с опциями оптимизации, заданными в options. Создайте options использование optimoptions. Если никакие границы не существуют, устанавливают lb = [] и/или ub = [].

x = simulannealbnd(problem) находит минимум для problem, структура описана в problem.

[x,fval] = simulannealbnd(___), для любого синтаксиса, возвращает значение целевой функции fun в решении x.

пример

[x,fval,exitflag,output] = simulannealbnd(___) дополнительно возвращает значение exitflag это описывает выходное условие simulannealbnd, и структура output с информацией о процессе оптимизации.

Примеры

свернуть все

Минимизируйте пятую функцию Де Йонга, двумерную функцию со многими локальными минимумами.

Постройте пятую функцию Де Йонга.

dejong5fcn

Figure contains an axes. The axes contains 2 objects of type surface, contour.

Минимизируйте пятую функцию Де Йонга с помощью simulannealbnd запуск с точки [0,0].

fun = @dejong5fcn;
x0 = [0 0];
x = simulannealbnd(fun,x0)
Optimization terminated: change in best function value less than options.FunctionTolerance.
x = 1×2

  -32.0285   -0.1280

simulannealbnd алгоритм использует поток MATLAB® случайных чисел, таким образом, вы можете получить различный результат.

Минимизируйте пятую функцию Де Йонга в ограниченной области.

Постройте пятую функцию Де Йонга.

dejong5fcn

Figure contains an axes. The axes contains 2 objects of type surface, contour.

Запустите simulannealbnd запуск в точке [0,0], и нижние границы набора-64 и верхние границы 64 на каждом компоненте.

fun = @dejong5fcn;
x0 = [0 0];
lb = [-64 -64];
ub = [64 64];
x = simulannealbnd(fun,x0,lb,ub)
Optimization terminated: change in best function value less than options.FunctionTolerance.
x = 1×2

  -15.9790  -31.9593

simulannealbnd алгоритм использует поток MATLAB® случайных чисел, таким образом, вы можете получить различный результат.

Наблюдайте прогресс simulannealbnd устанавливая опции использовать некоторые функции построения графика.

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

options = optimoptions('simulannealbnd','PlotFcns',...
          {@saplotbestx,@saplotbestf,@saplotx,@saplotf});

Запустите simulannealbnd запуск в точке [0,0], и нижние границы набора-64 и верхние границы 64 на каждом компоненте.

rng default % For reproducibility
fun = @dejong5fcn;
x0 = [0,0];
lb = [-64,-64];
ub = [64,64];
x = simulannealbnd(fun,x0,lb,ub,options)

Figure Simulated Annealing contains 4 axes. Axes 1 with title Best point contains an object of type bar. Axes 2 with title Best Function Value: 1.99203 contains an object of type line. Axes 3 with title Current Point contains an object of type bar. Axes 4 with title Current Function Value: 1.99203 contains an object of type line.

Optimization terminated: change in best function value less than options.FunctionTolerance.
x = 1×2

  -15.9790  -31.9593

Получите все выходные параметры симулированной минимизации отжига.

Постройте пятую функцию Де Йонга.

dejong5fcn

Figure contains an axes. The axes contains 2 objects of type surface, contour.

Запустите simulannealbnd запуск в точке [0,0], и нижние границы набора-64 и верхние границы 64 на каждом компоненте.

fun = @dejong5fcn;
x0 = [0,0];
lb = [-64,-64];
ub = [64,64];
[x,fval,exitflag,output] = simulannealbnd(fun,x0,lb,ub)
Optimization terminated: change in best function value less than options.FunctionTolerance.
x = 1×2

  -15.9790  -31.9593

fval = 1.9920
exitflag = 1
output = struct with fields:
     iterations: 1762
      funccount: 1779
        message: 'Optimization terminated: change in best function value less than options.FunctionTolerance.'
       rngstate: [1x1 struct]
    problemtype: 'boundconstraints'
    temperature: [2x1 double]
      totaltime: 0.5595

simulannealbnd алгоритм использует поток MATLAB® случайных чисел, таким образом, вы можете получить различный результат.

Входные параметры

свернуть все

Функция, которая будет минимизирована в виде указателя на функцию или имени функции. fun функция, которая принимает векторный x и возвращает действительный скалярный f, целевая функция выполнена в x.

fun может быть определен функцией указатель для файла:

x = simulannealbnd(@myfun,x0)

где myfun функция MATLAB® такой как

function f = myfun(x)
f = ...            % Compute function value at x

fun может также быть указатель на функцию для анонимной функции:

x = simulannealbnd(@(x)norm(x)^2,x0,lb,ub);

Пример: fun = @(x)sin(x(1))*cos(x(2))

Типы данных: char | function_handle | string

Начальная точка в виде вектора действительных чисел. simulannealbnd использует число элементов в x0 определить количество переменных что fun принимает.

Пример: x0 = [1,2,3,4]

Типы данных: double

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

x(i) >= lb(i) для всех i.

Если numel(lb) < numel(x0), затем lb задает это

x(i) >= lb(i) для 1 <= i <= numel(lb).

В этом случае решатели выдают предупреждение.

Пример: указывать, что все контрольные переменные положительны, lb = zeros(size(x0))

Типы данных: double

Верхние границы в виде вектора действительных чисел или действительного массива. Если число элементов в x0 равно тому из ub, затем ub задает это

x(i) <= ub(i) для всех i.

Если numel(ub) < numel(x0), затем ub задает это

x(i) <= ub(i) для 1 <= i <= numel(ub).

В этом случае решатели выдают предупреждение.

Пример: указывать, что все контрольные переменные меньше один, ub = ones(size(x0))

Типы данных: double

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

optimoptions скрывает опции, перечисленные курсивом; см. Опции, которые Скрывает optimoptions.

{} обозначает значение по умолчанию. Смотрите детали опции в Симулированных Опциях Отжига.

ОпцияОписаниеЗначения

AcceptanceFcn

Функционируют использование алгоритма, чтобы определить, принята ли новая точка. Задайте как 'acceptancesa' или указатель на функцию.

Указатель на функцию | {'acceptancesa'}

AnnealingFcn

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

Указатель на функцию | имя функции | 'annealingboltz' | {'annealingfast'}

DataType

Тип переменной решения

'custom' | {'double'}

Display

Level of display

'off' | 'iter' | 'diagnose' | {'final'}

DisplayInterval

Интервал для итеративного отображения

Положительное целое число | {10}

FunctionTolerance

Допуск завершения на значении функции

Для структуры опций используйте TolFun.

Положительная скалярная величина | {1e-6}

HybridFcn

Автоматически запущенный HybridFcn (другая оптимизационная функция) во время или в конце итераций решателя. Задайте как имя или указатель на функцию.

Смотрите, когда использовать гибридную функцию.

'fminsearch' | 'patternsearch' | 'fminunc' | 'fmincon' | {[]}

или

1 2 массив ячеек | {@solver, hybridoptions}, где solver = fminsearch, patternsearch, fminunc, или fmincon {[]}

HybridInterval

Интервал (если не 'end' или 'never') в котором HybridFcn называется

Положительное целое число | 'never' | {'end'}

InitialTemperature

Начальное значение температуры

Положительная скалярная величина | положительный вектор | {100}

MaxFunctionEvaluations

Максимальное количество оценок целевой функции позволено

Для структуры опций используйте MaxFunEvals.

Положительное целое число | {3000*numberOfVariables}

MaxIterations

Максимальное количество итераций позволено

Для структуры опций используйте MaxIter.

Положительное целое число | {Inf}

MaxStallIterations

Количество итераций, по которым среднее изменение в значении функции фитнеса в текущей точке меньше options.FunctionTolerance

Для структуры опций используйте StallIterLimit.

Положительное целое число | {500*numberOfVariables}

MaxTime

Остановки алгоритма после выполнения для MaxTime секунды

Для структуры опций используйте TimeLimit.

Положительная скалярная величина | {Inf}

ObjectiveLimit

Минимальное значение целевой функции желаемо

Скаляр | {-Inf}

OutputFcn

Функция (функции) получает (s) итеративные данные и может изменить опции во время выполнения

Для структуры опций используйте OutputFcns.

Указатель на функцию | cell-массив указателей на функцию | {[]}

PlotFcn

Функция (функции) построения графика называется во время итераций

Для структуры опций используйте PlotFcns.

Указатель на функцию | встроенное имя функции построения графика | cell-массив указателей на функцию | массив ячеек встроенной функции построения графика называет | 'saplotbestf' | 'saplotbestx' | 'saplotf' | 'saplotstopping' | 'saplottemperature' | {[]}

PlotInterval

Функции построения графика называются в каждом интервале

Положительное целое число | {1}

ReannealInterval

Переотжиг интервала

Положительное целое число | {100}

TemperatureFcn

Функция раньше обновляла температурное расписание

Указатель на функцию | встроенное температурное имя функции | 'temperatureboltz' | 'temperaturefast' | {'temperatureexp'}

Пример: options = optimoptions(@simulannealbnd,'MaxIterations',150)

Типы данных: struct

Структура задачи в виде структуры со следующими полями:

  • objective — Целевая функция

  • x0 — Начальная точка

  • lb — Нижняя граница для x

  • ub — Верхняя граница для x

  • solver'simulannealbnd'

  • options — Опции, созданные с optimoptions или структура опций

  • rngstate — Дополнительное поле, чтобы сбросить состояние генератора случайных чисел

Примечание

problem должен иметь все поля, как задано выше.

Типы данных: struct

Выходные аргументы

свернуть все

Решение, возвращенное как вектор действительных чисел. Размер x совпадает с размером x0. Как правило, x локальное решение проблемы когда exitflag положительно.

Значение целевой функции в решении, возвращенном как вещественное число. Обычно fval = fun(x).

Причина simulannealbnd остановленный, возвращенный как целое число.

Exitflag Значение
1

Среднее изменение в значении целевой функции по options.MaxStallIterations итерации меньше options.FunctionTolerance.

5

Значение целевой функции меньше options.ObjectiveLimit.

0

Максимальное количество вычислений функции или достигнутых итераций.

-1

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

-2

Никакая допустимая точка не найдена.

-5

Ограничение по времени превышено.

Информация о процессе оптимизации, возвращенном как структура с полями:

  • problemtype — Тип проблемы: неограниченный или связанный ограниченный.

  • iterations — Количество итераций вычисляется.

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

  • message — Причина завершения алгоритма.

  • temperature — Температура, когда отключенный решатель.

  • totaltime — Общее время для решателя, чтобы запуститься.

  • rngstate — Состояние генератора случайных чисел MATLAB, незадолго до запущенного алгоритма. Можно использовать значения в rngstate воспроизвести выход simulannealbnd. Смотрите воспроизводят ваши результаты.

Альтернативная функциональность

Приложение

Оптимизировать задача Live Editor обеспечивает визуальный интерфейс для simulannealbnd.

Представленный в R2007a