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