GlobalSearch

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

Описание

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

Создание

Описание

пример

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

пример

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

пример

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

пример

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

Свойства

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

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

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

Пример: 0.5

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

Level of display к Командному окну, заданному как один из следующих векторов символов или строк:

  • '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

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

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

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

  • '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 использование 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

Алгоритмы

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

Ссылки

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

Введен в R2010a