GlobalSearch

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

Описание

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

Создание

Синтаксис

gs = GlobalSearch
gs = GlobalSearch(Name,Value)
gs = GlobalSearch(oldGS,Name,Value)
gs = GlobalSearch(ms)

Описание

пример

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

пример

gs = GlobalSearch(Name,Value) свойства наборов с помощью пар "имя-значение".

пример

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

пример

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

Свойства

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

Радиус бассейна уменьшает фактор, заданный как скаляр от 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 смотрите Update Solution Set в Когда Выполнения fmincon. Для получения дополнительной информации MultiStart смотрите, Создают Объект GlobalOptimSolution.

Пример: 1e-4

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

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

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

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

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

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

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

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

Пример: 40

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

Количество точек Этапа 1, заданных как положительное целое число. Для получения дополнительной информации смотрите, Получают Стартовую точку Этапа 1, Выполнение.

Пример: 1000

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

Количество потенциальных стартовых точек, заданных как положительное целое число.

Пример: 3e4

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

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

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

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

Пример: 0.4

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

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

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

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

  • @gsplotfunccount строит количество функциональных оценок.

Смотрите функцию построения графика MultiStart.

Пример: @gsplotbestf

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

Стартовые точки, чтобы запуститься, заданный как:

  • все Запустите все стартовые точки.

  • границы Запустите только стартовые точки, которые удовлетворяют границы.

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

GlobalSearch проверяет свойство StartPointsToRun только во время Этапа 2 алгоритма GlobalSearch (основной цикл). Для получения дополнительной информации см. Алгоритм GlobalSearch.

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

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

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

Пример: 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])

Чтобы искать минимальную глобальную переменную, запустите GlobalSearch с помощью алгоритма 'sqp' fmincon.

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

Алгоритмы

Для подробного описания алгоритма см. Алгоритм GlobalSearch. Ugray и др. [1] описывают и алгоритм и поля точек метод поиска генерации испытательных точек.

Ссылки

[1] Ugray, Zsolt, Леон Лэсдон, Джон Пламмер, Фред Гловер, Джеймс Келли и Рафаэль Марти. Рассейте Поиск и Локальные Решатели NLP: A Мультизапускают Среду для Глобальной Оптимизации. Журнал INFORMS на Вычислении, Издании 19, № 3, 2007, стр 328–340.

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