Найти глобальный минимум
A 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 решатель.
BasinRadiusFactor - Коэффициент уменьшения радиуса умывальной раковины0.2 (по умолчанию) | скаляр из 0 через 1Коэффициент уменьшения радиуса умывальной раковины, заданный как скаляр от 0 через 1. Радиус умывальной раковины уменьшается после MaxWaitCycle последовательные начальные точки находятся в умывальных раковинах. Радиус умывальной раковины уменьшается в 1 - BasinRadiusFactor раз.
Задайте BasinRadiusFactor на 0 отключить обновление радиуса умывальной раковины.
Пример:
0.5
Типы данных: double
Display - Level of display в Командном окне'final' (по умолчанию) | 'iter' | 'off'Level of display в Командном окне, заданный как один из следующих векторов символов или строк:
'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 последовательные пробные точки - это, по крайней мере, порог штрафа, затем повышайте порог штрафа (см. PenseThresholdFactor).
Если MaxWaitCycle последовательные пробные точки находятся в умывальной раковине, затем обновляется радиус умывальной раковины (см. BasinRadiusFactor).
Пример: 40
Типы данных: double
NumStageOnePoints - Количество точек 1 этапа200 (по умолчанию) | положительное целое числоКоличество точек 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'Начальные точки для запуска, заданные как:
'all' - Запуск всех начальных точек.
'bounds' - Выполнение только тех начальных точек, которые удовлетворяют границам.
'bounds-ineqs' - Запускать только стартовые точки, которые удовлетворяют границам и ограничениям неравенства.
GlobalSearch проверяет StartPointsToRun свойство только во время Этапа 2 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 по 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Создайте nondefault 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 имеет то же значение, что и nondefault, 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 Algorithm. Ugrey et al. [1] описывают как алгоритм, так и метод поиска рассеяния для генерации пробных точек.
[1] Угрей, Жолт, Леон Ласдон, Джон Пламмер, Фред Гловер, Джеймс Келли и Рафаэль Марти. Рассеяние и локальные решатели NLP: мультистартовая среда для глобальной оптимизации. Журнал ИНФОРМС по вычислению, том 19, № 3, 2007, стр. 328-340.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.