exponenta event banner

GlobalSearch

Найти глобальный минимум

Описание

A GlobalSearch объект содержит свойства (параметры), влияющие на run многократно запускает локальный решатель для генерации GlobalOptimSolution объект. При выполнении решатель пытается найти решение, имеющее наименьшее значение целевой функции.

Создание

Описание

пример

gs = GlobalSearch создает gs, a GlobalSearch решатель, для свойств которого установлены значения по умолчанию.

пример

gs = GlobalSearch(Name,Value) задает свойства, используя пары имя-значение.

пример

gs = GlobalSearch(oldGS,Name,Value) создает копию oldGS GlobalSearch решатель и задает свойства, используя пары имя-значение.

пример

gs = GlobalSearch(ms) создает gs, a GlobalSearch решатель со значениями общих свойств из ms MultiStart решатель.

Свойства

развернуть все

Коэффициент уменьшения радиуса бассейна, заданный как скаляр из 0 через 1. Радиус бассейна уменьшается после MaxWaitCycle последовательные начальные точки находятся в пределах бассейна. Радиус бассейна уменьшается в 1 - BasinRadiusFactor.

Набор BasinRadiusFactor кому 0 для отключения обновлений радиуса бассейна.

Пример: 0.5

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

Уровень отображения в окне команд, определяемый как один из следующих векторов символов или строк:

  • 'final' - Сводные результаты отчета после run заканчивает.

  • 'iter' - Результаты отчета после первоначального fmincon прогон, после этапа 1, после каждых 200 стартовых точек и после каждого прогона fmincon, в дополнение к окончательному резюме.

  • 'off' - Нет дисплея.

Пример: 'iter'

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

Множитель для определения того, находится ли пробная точка в существующем бассейне притяжения, указанный как неотрицательный скаляр. Дополнительные сведения см. в разделе Изучение пробной точки на этапе 2, чтобы узнать, выполняется ли fmincon.

Пример: 0.5

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

Допуск на значения функций для рассмотрения решений равным, заданный как неотрицательный скаляр. Решатели рассматривают два идентичных решения, если они находятся в пределах XTolerance относительное расстояние друг от друга и иметь значения целевой функции в пределах FunctionTolerance относительная разница друг от друга. Если оба условия не выполнены, решатели сообщают о решениях как об отличии. Набор FunctionTolerance кому 0 для получения результатов каждого локального прогона решателя. Набор FunctionTolerance к большему значению, чтобы иметь меньше результатов. Для GlobalSearch подробности см. в разделе Обновление набора решений при выполнении fmincon. Для MultiStart подробные сведения см. в разделе Создание объекта StartOptimSolution.

Пример: 1e-4

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

Максимальное время (в секундах), заданное как положительный скаляр. При остановке StartSearch и его локальных решателей MaxTime секунд прошло с начала пробега, как измерено tic и toc.

MaxTime не прерывает локальные решатели во время выполнения, поэтому общее время может превышать MaxTime.

Пример: 180 останавливает решатель при первом завершении вызова локального решателя через 180 секунд.

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

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

  • Если наблюдаемая функция штрафа MaxWaitCycle последовательные пробные баллы - это, по крайней мере, порог штрафа, а затем порог штрафа увеличивается (см. ThresholdFactor).

  • Если MaxWaitCycle последовательные пункты испытания находятся в бассейне, затем обновляют радиус того бассейна (см. BasinRadiusFactor).

Пример: 40

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

Число точек этапа 1, указанное как положительное целое число. Дополнительные сведения см. в разделе Получение начальной точки этапа 1, выполнение.

Пример: 1000

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

Число потенциальных начальных точек, указанное как положительное целое число.

Пример: 3e4

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

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

Типы данных: cell | function_handle

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

Пример: 0.4

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

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

Существует две встроенные функции графика:

  • @gsplotbestf строит график наилучшего значения целевой функции.

  • @gsplotfunccount строит график количества оценок функций.

См. раздел Мультизапусковая функция печати.

Пример: @gsplotbestf

Типы данных: cell | function_handle

Начальные точки для выполнения, указанные как:

  • 'all' - Выполнить все начальные точки.

  • 'bounds' - Выполнять только начальные точки, удовлетворяющие границам.

  • 'bounds-ineqs' - выполнять только начальные точки, удовлетворяющие ограничениям и ограничениям неравенства.

GlobalSearch проверяет StartPointsToRun только во время этапа 2 GlobalSearch алгоритм (основной контур). Дополнительные сведения см. в разделе Алгоритм, используемый при поиске.

Пример: 'bounds' запускает только точки, удовлетворяющие всем границам.

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

Допуск на расстояние для рассмотрения решений равным, определяемый как неотрицательный скаляр. Решатели рассматривают два идентичных решения, если они находятся в пределах XTolerance относительное расстояние друг от друга и иметь значения целевой функции в пределах FunctionTolerance относительная разница друг от друга. Если оба условия не выполнены, решатели сообщают о решениях как об отличии. Набор XTolerance кому 0 для получения результатов каждого локального прогона решателя. Набор XTolerance к большему значению, чтобы иметь меньше результатов. Для GlobalSearch подробности см. в разделе Обновление набора решений при выполнении fmincon. Для MultiStart подробные сведения см. в разделе Создание объекта StartOptimSolution.

Пример: 2e-4

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

Функции объекта

runЗапуск решателя с несколькими запусками

Примеры

свернуть все

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

rng default % For reproducibility
gs = GlobalSearch;
sixmin = @(x)(4*x(1)^2 - 2.1*x(1)^4 + x(1)^6/3 ...
    + x(1)*x(2) - 4*x(2)^2 + 4*x(2)^4);
problem = createOptimProblem('fmincon','x0',[-1,2],...
    'objective',sixmin,'lb',[-3,-3],'ub',[3,3]);
x = run(gs,problem)
GlobalSearch stopped because it analyzed all the trial points.

All 8 local solver runs converged with a positive local solver exit flag.
x = 1×2

   -0.0898    0.7127

Значение целевой функции можно запросить в x при звонке run используя следующий синтаксис:

[x,fval] = run(gs,problem)

Однако, если вы пренебрегли запросом fval, вы по-прежнему можете вычислить значение целевой функции в x.

fval = sixmin(x)
fval = -1.0316

Рассмотрим функцию с несколькими локальными минимумами.

fun = @(x) x.^2 + 4*sin(5*x);
fplot(fun,[-5,5])

Figure contains an axes. The axes contains an object of type functionline.

Для поиска глобального минимума выполните команду GlobalSearch с использованием fmincon 'sqp' алгоритм.

rng default % For reproducibility
opts = optimoptions(@fmincon,'Algorithm','sqp');
problem = createOptimProblem('fmincon','objective',...
    fun,'x0',3,'lb',-5,'ub',5,'options',opts);
gs = GlobalSearch;
[x,f] = run(gs,problem)
GlobalSearch stopped because it analyzed all the trial points.

All 23 local solver runs converged with a positive local solver exit flag.
x = -0.3080
f = -3.9032

Создание значения по умолчанию MultiStart объект.

ms = MultiStart('FunctionTolerance',2e-4,'UseParallel',true)
ms = 
  MultiStart with properties:

          UseParallel: 1
              Display: 'final'
    FunctionTolerance: 2.0000e-04
              MaxTime: Inf
            OutputFcn: []
              PlotFcn: []
     StartPointsToRun: 'all'
           XTolerance: 1.0000e-06

Создать GlobalSearch объект, использующий доступные свойства из ms.

gs = GlobalSearch(ms)
gs = 
  GlobalSearch with properties:

             NumTrialPoints: 1000
          BasinRadiusFactor: 0.2000
    DistanceThresholdFactor: 0.7500
               MaxWaitCycle: 20
          NumStageOnePoints: 200
     PenaltyThresholdFactor: 0.2000
                    Display: 'final'
          FunctionTolerance: 2.0000e-04
                    MaxTime: Inf
                  OutputFcn: []
                    PlotFcn: []
           StartPointsToRun: 'all'
                 XTolerance: 1.0000e-06

gs имеет то же значение по умолчанию, что и FunctionTolerance как ms. Но gs не использует UseParallel собственность.

Создать GlobalSearch объект с FunctionTolerance из 1e-4.

gs = GlobalSearch('FunctionTolerance',1e-4)
gs = 
  GlobalSearch with properties:

             NumTrialPoints: 1000
          BasinRadiusFactor: 0.2000
    DistanceThresholdFactor: 0.7500
               MaxWaitCycle: 20
          NumStageOnePoints: 200
     PenaltyThresholdFactor: 0.2000
                    Display: 'final'
          FunctionTolerance: 1.0000e-04
                    MaxTime: Inf
                  OutputFcn: []
                    PlotFcn: []
           StartPointsToRun: 'all'
                 XTolerance: 1.0000e-06

Обновить XTolerance свойство для 1e-3 и StartPointsToRun свойство для 'bounds'.

gs = GlobalSearch(gs,'XTolerance',1e-3,'StartPointsToRun','bounds')
gs = 
  GlobalSearch with properties:

             NumTrialPoints: 1000
          BasinRadiusFactor: 0.2000
    DistanceThresholdFactor: 0.7500
               MaxWaitCycle: 20
          NumStageOnePoints: 200
     PenaltyThresholdFactor: 0.2000
                    Display: 'final'
          FunctionTolerance: 1.0000e-04
                    MaxTime: Inf
                  OutputFcn: []
                    PlotFcn: []
           StartPointsToRun: 'bounds'
                 XTolerance: 1.0000e-03

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

gs.MaxTime = 1800
gs = 
  GlobalSearch with properties:

             NumTrialPoints: 1000
          BasinRadiusFactor: 0.2000
    DistanceThresholdFactor: 0.7500
               MaxWaitCycle: 20
          NumStageOnePoints: 200
     PenaltyThresholdFactor: 0.2000
                    Display: 'final'
          FunctionTolerance: 1.0000e-04
                    MaxTime: 1800
                  OutputFcn: []
                    PlotFcn: []
           StartPointsToRun: 'bounds'
                 XTolerance: 1.0000e-03

Алгоритмы

Подробное описание алгоритма см. в разделе Алгоритм, используемый при поиске. Ugray et al. [1] описывают как алгоритм, так и способ поиска рассеяния для генерации пробных точек.

Ссылки

[1] Угрей, Зсолт, Леон Ласдон, Джон Пламмер, Фред Гловер, Джеймс Келли и Рафаэль Марти. Spatter Search and Local NLP Solvers: Многозаходная структура для глобальной оптимизации. INFORMS Journal on Computing, том 19, № 3, 2007, стр. 328-340.

Представлен в R2010a