Найдите глобальный минимум
Объект 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
.
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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.