Найдите глобальный минимум
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
через 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
— Множитель для определения испытательной точки находится в существующей области
(значение по умолчанию) | неотрицательный скалярМножитель для определения, является ли испытательная точка в существующей области притяжения, заданной как неотрицательный скаляр. Для получения дополнительной информации смотрите, Исследуют Испытательную Точку Этапа 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
— Параметр управления алгоритмом
(значение по умолчанию) | положительное целое числоПараметр управления алгоритмом, заданный как положительное целое число.
Если наблюдаемая функция штрафа MaxWaitCycle
последовательные испытательные точки являются, по крайней мере, порогом штрафа, затем повысьте порог штрафа (см. PenaltyThresholdFactor).
Если MaxWaitCycle
последовательные испытательные точки находятся в области, затем обновляют радиус той области (см. BasinRadiusFactor).
Пример: 40
Типы данных: double
NumStageOnePoints
— Количество точек Этапа 1
(значение по умолчанию) | положительное целое числоКоличество точек Этапа 1, заданных как положительное целое число. Для получения дополнительной информации смотрите, Получают Стартовую точку Этапа 1, Запуск.
Пример: 1000
Типы данных: double
NumTrialPoints
— Количество потенциальных стартовых точек
(значение по умолчанию) | положительное целое числоКоличество потенциальных стартовых точек, заданных как положительное целое число.
Пример: 3e4
Типы данных: double
OutputFcn
— Сообщите относительно прогресса решателя или решателя останова[]
(значение по умолчанию) | указатель на функцию | cell-массив указателей на функциюСообщите относительно прогресса решателя или решателя останова, определенного функцией указателя или cell-массива указателей на функцию. Выходные функции выполняются после каждого локального вызова решателя. Они также запускаются, когда глобальный решатель запускается и заканчивается. Запишите выходные функции с помощью синтаксиса, описанного в OutputFcn. Смотрите Выходную функцию GlobalSearch.
Типы данных: cell
| function_handle
PenaltyThresholdFactor
— Увеличение порога штрафа
(значение по умолчанию) | положительная скалярная величинаУвеличение порога штрафа, заданного как положительная скалярная величина. Для получения дополнительной информации смотрите, Реагируют на Большие Встречные Значения.
Пример: 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
алгоритм (основной цикл). Для получения дополнительной информации см. Алгоритм 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
использование 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
Для подробного описания алгоритма см. Алгоритм GlobalSearch. Ugray и др. [1] описывают и алгоритм и поля точек метод поиска генерации испытательных точек.
[1] Ugray, Zsolt, Леон Лэсдон, Джон Пламмер, Фред Гловер, Джеймс Келли и Рафаэль Марти. Рассейте Поиск и Локальные Решатели NLP: A Мультизапускают Среду для Глобальной Оптимизации. Журнал INFORMS на Вычислении, Издании 19, № 3, 2007, стр 328–340.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.