Найдите глобальный минимум
Объект GlobalSearch содержит свойства (опции), которые влияют, как run неоднократно запускает локальный решатель, чтобы сгенерировать объект GlobalOptimSolution. Когда запущено, решатель пытается определить местоположение решения, которое имеет самое низкое значение целевой функции.
gs = GlobalSearchgs = 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.
BasinRadiusFactor — Радиус бассейна уменьшает фактор0.2 (значение по умолчанию) | скаляр от 0 до 1Радиус бассейна уменьшает фактор, заданный как скаляр от 0 до 1. Радиус бассейна уменьшается после MaxWaitCycle последовательные стартовые точки в бассейне. Радиус бассейна уменьшается фактором 1 – BasinRadiusFactor.
Установите BasinRadiusFactor на 0 отключать обновления радиуса бассейна.
Пример:
0.5
Типы данных: double
Отображение Уровень отображения к Командному окну'final' (значение по умолчанию) | 'iter' | 'off'Уровень отображения к Командному окну, заданному как один из следующих векторов символов или строк:
'final' – Сообщите об итоговых результатах после того, как run закончится.
'iter' – Сообщите о результатах после начального запущенного fmincon, после Этапа 1, после каждых 200 стартовых точек, и после каждого выполнения fmincon, в дополнение к итоговым сводным данным.
'off' Никакое отображение.
Пример:
'iter'
Типы данных: char | string
DistanceThresholdFactor — Множитель для определения испытательной точки находится в существующем бассейне0.75 (значение по умолчанию) | неотрицательный скалярМножитель для определения, является ли испытательная точка в существующем бассейне привлекательности, заданной как неотрицательный скаляр. Для получения дополнительной информации смотрите, Исследуют Испытательную Точку Этапа 2, чтобы Видеть если Выполнения fmincon.
Пример: 0.5
Типы данных: double
FunctionTolerance — Допуск на значениях функции для рассмотрения равных решений1e-6 (значение по умолчанию) | неотрицательный скалярДопуск на значениях функции для рассмотрения решений, равных, заданных как неотрицательный скаляр. Решатели считают два решения идентичными, если они на расстоянии родственника XTolerance друг друга и имеют значения целевой функции в относительной разнице FunctionTolerance друг друга. Если оба условия не соблюдают, решатели сообщают о решениях как отличных. Установите FunctionTolerance на 0 получать результаты каждого локального запущенного решателя. Установите FunctionTolerance на большее значение иметь меньше результатов. Для получения дополнительной информации GlobalSearch смотрите Update Solution Set в Когда Выполнения fmincon. Для получения дополнительной информации MultiStart смотрите, Создают Объект GlobalOptimSolution.
Пример:
1e-4
Типы данных: double
MaxTime — Максимальное время в секундах, которые запускает GlobalSearchInf (значение по умолчанию) | положительная скалярная величинаМаксимальное время в секундах, которые GlobalSearch запускает, заданный как положительная скалярная величина. GlobalSearch и его локальные решатели останавливаются, когда секунды MaxTime передали с начала выполнения, как измерено tic и toc.
MaxTime не прерывает локальные решатели во время выполнения, таким образом, общее время может превысить MaxTime.
Пример: 180 останавливает решатель в первый раз, когда локальный вызов решателя заканчивается после 180 секунд.
Типы данных: double
MaxWaitCycle — Параметр управления алгоритмом20 (значение по умолчанию) | положительное целое числоПараметр управления алгоритмом, заданный как положительное целое число.
Если наблюдаемая функция штрафа MaxWaitCycle, последовательные испытательные точки являются, по крайней мере, порогом штрафа, то повысьте порог штрафа (см. PenaltyThresholdFactor).
Если MaxWaitCycle, последовательные испытательные точки находятся в бассейне, то обновляют радиус того бассейна (см. BasinRadiusFactor).
Пример: 40
Типы данных: double
NumStageOnePoints — Количество точек Этапа 1200 (значение по умолчанию) | положительное целое числоКоличество точек Этапа 1, заданных как положительное целое число. Для получения дополнительной информации смотрите, Получают Стартовую точку Этапа 1, Выполнение.
Пример: 1000
Типы данных: double
NumTrialPoints — Количество потенциальных стартовых точек1000 (значение по умолчанию) | положительное целое числоКоличество потенциальных стартовых точек, заданных как положительное целое число.
Пример: 3e4
Типы данных: double
'OutputFcn' Сообщите относительно прогресса решателя или решателя останова[] (значение по умолчанию) | указатель на функцию | cell-массив указателей на функциюСообщите относительно прогресса решателя или решателя останова, заданного как указатель на функцию или cell-массив указателей на функцию. Выходные функции выполняются после каждого локального вызова решателя. Они также запускаются, когда глобальный решатель запускается и заканчивается. Запишите выходные функции с помощью синтаксиса, описанного в OutputFcn. Смотрите Выходную функцию GlobalSearch.
Типы данных: cell | function_handle
PenaltyThresholdFactor — Увеличение порога штрафа0.2 (значение по умолчанию) | положительная скалярная величинаУвеличение порога штрафа, заданного как положительная скалярная величина. Для получения дополнительной информации смотрите, Реагируют на Большие Встречные Значения.
Пример: 0.4
Типы данных: double
PlotFcn — Постройте прогресс решателя[] (значение по умолчанию) | указатель на функцию | cell-массив указателей на функциюПостройте прогресс решателя, заданный как указатель на функцию или cell-массив указателей на функцию. Функции построения графика выполняются после каждого локального вызова решателя. Они также запускаются, когда глобальный решатель запускается и заканчивается. Запишите функции построения графика с помощью синтаксиса, описанного в OutputFcn.
Существует две встроенных функции построения графика:
@gsplotbestf строит лучшее значение целевой функции.
@gsplotfunccount строит количество функциональных оценок.
Смотрите функцию построения графика MultiStart.
Пример:
@gsplotbestf
Типы данных: cell | function_handle
StartPointsToRun — Стартовые точки, чтобы запуститься'all' (значение по умолчанию) | 'bounds' | 'bounds-ineqs'Стартовые точки, чтобы запуститься, заданный как:
все Запустите все стартовые точки.
границы Запустите только стартовые точки, которые удовлетворяют границы.
'bounds-ineqs' — Запустите только стартовые точки, которые удовлетворяют границы и ограничения неравенства.
GlobalSearch проверяет свойство StartPointsToRun только во время Этапа 2 алгоритма GlobalSearch (основной цикл). Для получения дополнительной информации см. Алгоритм GlobalSearch.
Пример:
'bounds' запускает только точки, которые удовлетворяют все границы.
Типы данных: char | string
XTolerance — Допуск на расстоянии для рассмотрения равных решений1e-6 (значение по умолчанию) | неотрицательный скалярДопуск на расстоянии для рассмотрения решений, равных, заданных как неотрицательный скаляр. Решатели считают два решения идентичными, если они на расстоянии родственника XTolerance друг друга и имеют значения целевой функции в относительной разнице FunctionTolerance друг друга. Если оба условия не соблюдают, решатели сообщают о решениях как отличных. Установите XTolerance на 0 получать результаты каждого локального запущенного решателя. Установите XTolerance на большее значение иметь меньше результатов. Для получения дополнительной информации GlobalSearch смотрите Update Solution Set в Когда Выполнения fmincon. Для получения дополнительной информации MultiStart смотрите, Создают Объект GlobalOptimSolution.
Пример: 2e-4
Типы данных: double
run | Запуститесь несколько - запускают решатель |
GlobalSearch на многомерной проблемеСоздайте задачу оптимизации, которая имеет несколько локальных минимумов, и попытайтесь найти глобальный минимум с помощью 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
GlobalSearch на 1D проблемеРассмотрите функцию с несколькими локальными минимумами.
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
GlobalSearch Используя общую собственность от MultiStartСоздайте объект 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Создайте объект 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.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.