Найти несколько локальных минимумов
A MultiStart объект содержит свойства (опции), которые влияют на то, как run неоднократно запускает локальный решатель, чтобы сгенерировать GlobalOptimSolution объект. При запуске решатель пытается найти несколько локальных решений задачи, начиная с различных точек.
ms = MultiStart создает ms, а MultiStart решатель со свойствами по умолчанию.
ms = MultiStart(Name,Value) устанавливает свойства с помощью пар "имя-значение".
ms = MultiStart(oldMS,Name,Value) создает копию oldMS
MultiStart решатель и устанавливает свойства с помощью пар "имя-значение".
ms = MultiStart(gs) создает ms, а MultiStart решатель, с общими значениями параметров от gs
GlobalSearch решатель.
Display - Level of display в Командном окне'final' (по умолчанию) | 'iter' | 'off'Level of display в Командном окне, заданный как один из следующих векторов символов или строк:
'final' - Сообщите обобщенные результаты после run концы.
'iter' - Сообщить о результатах после начального fmincon пробежать, после Этапа 1, после каждые 200 стартовых точек, и после каждого запуска fmincon, в дополнение к окончательным сводным данным.
'off' - Нет отображения.
Пример:
'iter'
Типы данных: char | string
FunctionTolerance - Допуск на значения функций для принятия решений равным1e-6 (по умолчанию) | неотрицательной скаляромДопуск на значения функции для принятия решений равным, заданный как неотрицательный скаляр. Решатели считают два решения идентичными, если они находятся в XTolerance относительное расстояние друг от друга и иметь значения целевых функций в FunctionTolerance относительное различие между собой. Если оба условия не выполняются, решатели сообщают о решениях как об отличных. Задайте FunctionTolerance на 0 для получения результатов каждого запуска локального решателя. Задайте FunctionTolerance к большему значению, чтобы иметь меньше результатов. Для GlobalSearch подробности см. Update Solution Set в «Когда fmincon запускается». Для MultiStart см. раздел Создание объекта GlobalOptimSolution.
Пример:
1e-4
Типы данных: double
MaxTime - Максимальное время в секундах, которое запускается MultiStartInf (по умолчанию) | положительная скалярная величинаМаксимальное время в секундах, которое запускается MultiStart, заданное как положительная скалярная величина. MultiStart и его локальные решатели останавливаются, когда MaxTime секунды прошли с начала запуска, как измерено tic и toc.
MaxTime не прерывает локальные решатели во время запуска, поэтому общее время может превысить MaxTime.
Пример: 180 останавливает решатель в первый раз, когда вызов локального решателя заканчивается через 180 секунд.
Типы данных: double
OutputFcn - Отчет о прогрессе решателя или остановке решателя[] (по умолчанию) | указатель на функцию | cell-массив указателей на функциюОтчет о прогрессе решателя или решение остановки, заданный как указатель на функцию или cell-массив указателей на функцию. Выходные функции выполняются после каждого вызова локального решателя. Они также запускаются, когда глобальный решатель запускается и заканчивается. Напишите выходные функции с помощью синтаксиса, описанного в OutputFcn. Смотрите Выходную функцию GlobalSearch.
Типы данных: cell | function_handle
PlotFcn - Постройте график прогресса решателя[] (по умолчанию) | указатель на функцию | cell-массив указателей на функциюПостройте график прогресса решателя, заданный как указатель на функцию или cell-массив указателей на функцию. Функции построения графика выполняются после каждого вызова локального решателя. Они также запускаются, когда глобальный решатель запускается и заканчивается. Напишите функции построения графика с помощью синтаксиса, описанного в OutputFcn.
Существует две встроенные функции построения графика:
@gsplotbestf строит графики наилучшего значения целевой функции.
@gsplotfunccount строит графики количества вычислений функции.
См. раздел Функции построения графика MultiStart.
Пример:
@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 подробности см. Update Solution Set в «Когда fmincon запускается». Для MultiStart см. раздел Создание объекта GlobalOptimSolution.
Пример: 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Создайте nondefault 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 имеет то же значение, что и nondefault, 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 Algorithm.
Чтобы запустить параллельно, установите 'UseParallel' опция для true.
опции = optimoptions ('solvername',' UseParallel ', true)
Для получения дополнительной информации см. раздел «Как использовать параллельную обработку в Global Optimization Toolbox».
CustomStartPointSet | GlobalOptimSolution | GlobalSearch | RandomStartPointSet | run
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.