Найти несколько локальных минимумов
A MultiStart объект содержит свойства (параметры), влияющие на run многократно запускает локальный решатель для генерации GlobalOptimSolution объект. При выполнении решатель пытается найти несколько локальных решений проблемы, начиная с различных точек.
ms = MultiStart создает ms, a MultiStart решатель, для свойств которого установлены значения по умолчанию.
ms = MultiStart(Name,Value) задает свойства, используя пары имя-значение.
ms = MultiStart(oldMS,Name,Value) создает копию oldMS
MultiStart решатель и задает свойства, используя пары имя-значение.
ms = MultiStart(gs) создает ms, a MultiStart решатель с общими значениями параметров из gs
GlobalSearch решатель.
Display - Уровень отображения в окне команд'final' (по умолчанию) | 'iter' | 'off'Уровень отображения в окне команд, определяемый как один из следующих векторов символов или строк:
'final' - Сводные результаты отчета после run заканчивает.
'iter' - Результаты отчета после первоначального fmincon прогон, после этапа 1, после каждых 200 стартовых точек и после каждого прогона fmincon, в дополнение к окончательному резюме.
'off' - Нет дисплея.
Пример:
'iter'
Типы данных: char | string
FunctionTolerance - Допуск на значения функций для учета решений, равных1e-6 (по умолчанию) | неотрицательный скалярДопуск на значения функций для рассмотрения решений равным, заданный как неотрицательный скаляр. Решатели рассматривают два идентичных решения, если они находятся в пределах XTolerance относительное расстояние друг от друга и иметь значения целевой функции в пределах FunctionTolerance относительная разница друг от друга. Если оба условия не выполнены, решатели сообщают о решениях как об отличии. Набор FunctionTolerance кому 0 для получения результатов каждого локального прогона решателя. Набор FunctionTolerance к большему значению, чтобы иметь меньше результатов. Для GlobalSearch подробности см. в разделе Обновление набора решений при выполнении fmincon. Для MultiStart подробные сведения см. в разделе Создание объекта StartOptimSolution.
Пример:
1e-4
Типы данных: double
MaxTime - Максимальное время запуска MultiStart в секундахInf (по умолчанию) | положительный скалярМаксимальное время в секундах выполнения MultiStart, указанное как положительный скаляр. MultiStart и его локальные решатели останавливаются, когда MaxTime секунд прошло с начала пробега, как измерено tic и toc.
MaxTime не прерывает локальные решатели во время выполнения, поэтому общее время может превышать MaxTime.
Пример: 180 останавливает решатель при первом завершении вызова локального решателя через 180 секунд.
Типы данных: double
OutputFcn - Отчет о ходе выполнения решателя или останове решателя[] (по умолчанию) | дескриптор функции | массив ячеек дескрипторов функцииОтчет о ходе выполнения решателя или останове решателя, указанного как дескриптор функции или массив ячеек дескрипторов функции. Функции вывода выполняются после каждого вызова локального решателя. Они также запускаются при запуске и завершении работы глобального решателя. Запись выходных функций с использованием синтаксиса, описанного в OutputFcn. Посмотрите, что продукция GlobalSearch функционирует.
Типы данных: cell | function_handle
PlotFcn - Ход выполнения решателя графика[] (по умолчанию) | дескриптор функции | массив ячеек дескрипторов функцииГрафик выполнения решателя, заданный как дескриптор функции или массив ячеек дескрипторов функции. Функции графика выполняются после каждого вызова локального решателя. Они также запускаются при запуске и завершении работы глобального решателя. Запишите функции графика, используя синтаксис, описанный в OutputFcn.
Существует две встроенные функции графика:
@gsplotbestf строит график наилучшего значения целевой функции.
@gsplotfunccount строит график количества оценок функций.
См. раздел Мультизапусковая функция печати.
Пример:
@gsplotbestf
Типы данных: cell | function_handle
StartPointsToRun - Начальные точки для выполнения'all' (по умолчанию) | 'bounds' | 'bounds-ineqs'Начальные точки для выполнения, указанные как:
'all' - Выполнить все начальные точки.
'bounds' - Выполнять только начальные точки, удовлетворяющие границам.
'bounds-ineqs' - выполнять только начальные точки, удовлетворяющие ограничениям и ограничениям неравенства.
Пример:
'bounds' запускает только точки, удовлетворяющие всем границам.
Типы данных: char | string
UseParallel - Распределение вызовов локального решателя по нескольким процессорамfalse (по умолчанию) | trueРаспределение вызовов локального решателя по нескольким процессорам, указанным как false или true.
false - Не запускать параллельно.
true - Распределение вызовов локального решателя по нескольким процессорам.
Пример: true
Типы данных: logical
XTolerance - Допуск на расстояние для рассмотрения решений равным1e-6 (по умолчанию) | неотрицательный скалярДопуск на расстояние для рассмотрения решений равным, определяемый как неотрицательный скаляр. Решатели рассматривают два идентичных решения, если они находятся в пределах XTolerance относительное расстояние друг от друга и иметь значения целевой функции в пределах FunctionTolerance относительная разница друг от друга. Если оба условия не выполнены, решатели сообщают о решениях как об отличии. Набор XTolerance кому 0 для получения результатов каждого локального прогона решателя. Набор XTolerance к большему значению, чтобы иметь меньше результатов. Для GlobalSearch подробности см. в разделе Обновление набора решений при выполнении fmincon. Для MultiStart подробные сведения см. в разделе Создание объекта StartOptimSolution.
Пример: 2e-4
Типы данных: double
run | Запуск решателя с несколькими запусками |
MultiStartРассмотрим функцию с несколькими локальными минимумами.
fun = @(x) x.^2 + 4*sin(5*x); fplot(fun,[-5,5])

Для поиска глобального минимума выполните команду MultiStart в 20 случаях проблемы с использованием fmincon 'sqp' алгоритм.
rng default % For reproducibility opts = optimoptions(@fmincon,'Algorithm','sqp'); problem = createOptimProblem('fmincon','objective',... fun,'x0',3,'lb',-5,'ub',5,'options',opts); ms = MultiStart; [x,f] = run(ms,problem,20)
MultiStart completed the runs from all start points. All 20 local solver runs converged with a positive local solver exit flag.
x = -0.3080
f = -3.9032
MultiStart ОбъектСоздать MultiStart со свойствами по умолчанию.
ms = MultiStart
ms =
MultiStart with properties:
UseParallel: 0
Display: 'final'
FunctionTolerance: 1.0000e-06
MaxTime: Inf
OutputFcn: []
PlotFcn: []
StartPointsToRun: 'all'
XTolerance: 1.0000e-06
MultiStart ОбъектСоздать MultiStart объект с меньшими допусками, чем по умолчанию, поэтому решатель возвращает меньшее количество решений, близких друг к другу. Также, иметь MultiStart выполнять только начальные точки, которые осуществимы в отношении границ и ограничений неравенства.
ms = MultiStart('FunctionTolerance',2e-4,'XTolerance',5e-3,... 'StartPointsToRun','bounds-ineqs')
ms =
MultiStart with properties:
UseParallel: 0
Display: 'final'
FunctionTolerance: 2.0000e-04
MaxTime: Inf
OutputFcn: []
PlotFcn: []
StartPointsToRun: 'bounds-ineqs'
XTolerance: 0.0050
MultiStart Использование общих свойств из GlobalSearchСоздание значения по умолчанию GlobalSearch объект.
gs = GlobalSearch('FunctionTolerance',2e-4,'NumTrialPoints',2000)
gs =
GlobalSearch with properties:
NumTrialPoints: 2000
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
Создать MultiStart объект, использующий доступные свойства из gs.
ms = MultiStart(gs)
ms =
MultiStart with properties:
UseParallel: 0
Display: 'final'
FunctionTolerance: 2.0000e-04
MaxTime: Inf
OutputFcn: []
PlotFcn: []
StartPointsToRun: 'all'
XTolerance: 1.0000e-06
ms имеет то же значение по умолчанию, что и FunctionTolerance как gs. Но ms не использует NumTrialPoints собственность.
MultiStart СвойстваСоздать MultiStart объект с FunctionTolerance из 1e-4.
ms = MultiStart('FunctionTolerance',1e-4)ms =
MultiStart with properties:
UseParallel: 0
Display: 'final'
FunctionTolerance: 1.0000e-04
MaxTime: Inf
OutputFcn: []
PlotFcn: []
StartPointsToRun: 'all'
XTolerance: 1.0000e-06
Обновить XTolerance свойство для 1e-3, и StartPointsToRun свойство для 'bounds'.
ms = MultiStart(ms,'XTolerance',1e-3,'StartPointsToRun','bounds')
ms =
MultiStart with properties:
UseParallel: 0
Display: 'final'
FunctionTolerance: 1.0000e-04
MaxTime: Inf
OutputFcn: []
PlotFcn: []
StartPointsToRun: 'bounds'
XTolerance: 1.0000e-03
Можно также обновлять свойства по одному, используя точечную нотацию.
ms.MaxTime = 1800
ms =
MultiStart with properties:
UseParallel: 0
Display: 'final'
FunctionTolerance: 1.0000e-04
MaxTime: 1800
OutputFcn: []
PlotFcn: []
StartPointsToRun: 'bounds'
XTolerance: 1.0000e-03
Подробное описание алгоритма см. в разделе Алгоритм MultiStart.
Для параллельного выполнения установите 'UseParallel' опция для true.
options = optimoptions('solvername','UseParallel',true)
Дополнительные сведения см. в разделе Использование параллельной обработки в инструментарии глобальной оптимизации.
CustomStartPointSet | GlobalOptimSolution | GlobalSearch | RandomStartPointSet | run
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.