Найти глобальный минимум
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 решатель.
BasinRadiusFactor - Коэффициент уменьшения радиуса бассейна0.2 (по умолчанию) | скаляр из 0 через 1Коэффициент уменьшения радиуса бассейна, заданный как скаляр из 0 через 1. Радиус бассейна уменьшается после MaxWaitCycle последовательные начальные точки находятся в пределах бассейна. Радиус бассейна уменьшается в 1 - BasinRadiusFactor.
Набор BasinRadiusFactor кому 0 для отключения обновлений радиуса бассейна.
Пример:
0.5
Типы данных: double
Display - Уровень отображения в окне команд'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 подробности см. в разделе Обновление набора решений при выполнении fmincon. Для MultiStart подробные сведения см. в разделе Создание объекта StartOptimSolution.
Пример:
1e-4
Типы данных: double
MaxTime - Максимальное время (в секундах), в течение которого будет выполняться StartSearchInf (по умолчанию) | положительный скалярМаксимальное время (в секундах), заданное как положительный скаляр. При остановке StartSearch и его локальных решателей MaxTime секунд прошло с начала пробега, как измерено tic и toc.
MaxTime не прерывает локальные решатели во время выполнения, поэтому общее время может превышать MaxTime.
Пример: 180 останавливает решатель при первом завершении вызова локального решателя через 180 секунд.
Типы данных: double
MaxWaitCycle - Параметр управления алгоритмом20 (по умолчанию) | положительное целое числоПараметр управления алгоритмом, заданный как положительное целое число.
Если наблюдаемая функция штрафа MaxWaitCycle последовательные пробные баллы - это, по крайней мере, порог штрафа, а затем порог штрафа увеличивается (см. ThresholdFactor).
Если MaxWaitCycle последовательные пункты испытания находятся в бассейне, затем обновляют радиус того бассейна (см. BasinRadiusFactor).
Пример: 40
Типы данных: double
NumStageOnePoints - Количество баллов этапа 1200 (по умолчанию) | положительное целое числоЧисло точек этапа 1, указанное как положительное целое число. Дополнительные сведения см. в разделе Получение начальной точки этапа 1, выполнение.
Пример: 1000
Типы данных: double
NumTrialPoints - Количество потенциальных стартовых точек1000 (по умолчанию) | положительное целое числоЧисло потенциальных начальных точек, указанное как положительное целое число.
Пример: 3e4
Типы данных: double
OutputFcn - Отчет о ходе выполнения решателя или останове решателя[] (по умолчанию) | дескриптор функции | массив ячеек дескрипторов функцииОтчет о ходе выполнения решателя или останове решателя, указанного как дескриптор функции или массив ячеек дескрипторов функции. Функции вывода выполняются после каждого вызова локального решателя. Они также запускаются при запуске и завершении работы глобального решателя. Запись выходных функций с использованием синтаксиса, описанного в OutputFcn. Посмотрите, что продукция GlobalSearch функционирует.
Типы данных: cell | function_handle
PenaltyThresholdFactor - Увеличение порога штрафа0.2 (по умолчанию) | положительный скалярУвеличение порога штрафа, заданного как положительный скаляр. Дополнительные сведения см. в разделе Реакция на значения больших счетчиков.
Пример: 0.4
Типы данных: double
PlotFcn - Ход выполнения решателя графика[] (по умолчанию) | дескриптор функции | массив ячеек дескрипторов функцииГрафик выполнения решателя, заданный как дескриптор функции или массив ячеек дескрипторов функции. Функции графика выполняются после каждого вызова локального решателя. Они также запускаются при запуске и завершении работы глобального решателя. Запишите функции графика, используя синтаксис, описанный в OutputFcn.
Существует две встроенные функции графика:
@gsplotbestf строит график наилучшего значения целевой функции.
@gsplotfunccount строит график количества оценок функций.
См. раздел Мультизапусковая функция печати.
Пример:
@gsplotbestf
Типы данных: cell | function_handle
StartPointsToRun - Начальные точки для выполнения'all' (по умолчанию) | 'bounds' | 'bounds-ineqs'Начальные точки для выполнения, указанные как:
'all' - Выполнить все начальные точки.
'bounds' - Выполнять только начальные точки, удовлетворяющие границам.
'bounds-ineqs' - выполнять только начальные точки, удовлетворяющие ограничениям и ограничениям неравенства.
GlobalSearch проверяет StartPointsToRun только во время этапа 2 GlobalSearch алгоритм (основной контур). Дополнительные сведения см. в разделе Алгоритм, используемый при поиске.
Пример:
'bounds' запускает только точки, удовлетворяющие всем границам.
Типы данных: char | string
XTolerance - Допуск на расстояние для рассмотрения решений равным1e-6 (по умолчанию) | неотрицательный скалярДопуск на расстояние для рассмотрения решений равным, определяемый как неотрицательный скаляр. Решатели рассматривают два идентичных решения, если они находятся в пределах XTolerance относительное расстояние друг от друга и иметь значения целевой функции в пределах FunctionTolerance относительная разница друг от друга. Если оба условия не выполнены, решатели сообщают о решениях как об отличии. Набор XTolerance кому 0 для получения результатов каждого локального прогона решателя. Набор XTolerance к большему значению, чтобы иметь меньше результатов. Для GlobalSearch подробности см. в разделе Обновление набора решений при выполнении fmincon. Для MultiStart подробные сведения см. в разделе Создание объекта StartOptimSolution.
Пример: 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 по проблеме 1-DРассмотрим функцию с несколькими локальными минимумами.
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
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
Подробное описание алгоритма см. в разделе Алгоритм, используемый при поиске. Ugray et al. [1] описывают как алгоритм, так и способ поиска рассеяния для генерации пробных точек.
[1] Угрей, Зсолт, Леон Ласдон, Джон Пламмер, Фред Гловер, Джеймс Келли и Рафаэль Марти. Spatter Search and Local NLP Solvers: Многозаходная структура для глобальной оптимизации. INFORMS Journal on Computing, том 19, № 3, 2007, стр. 328-340.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.