Найдите несколько локальных минимумов
Объект MultiStart содержит свойства (опции), которые влияют, как run неоднократно запускает локальный решатель, чтобы сгенерировать объект GlobalOptimSolution. Когда запущено, решатель пытается найти несколько локальных решений проблемы путем запуска с различных точек.
ms = MultiStartms = MultiStart(Name,Value)ms = MultiStart(oldMS,Name,Value)ms = MultiStart(gs)ms = MultiStart создает ms, решатель MultiStart с его набором свойств к значениям по умолчанию.
ms = MultiStart(Name,Value) свойства наборов с помощью пар "имя-значение".
ms = MultiStart(oldMS,Name,Value) создает копию
решателя MultiStart oldMS и устанавливает свойства с помощью пар "имя-значение".
ms = MultiStart(gs) создает ms, решатель MultiStart, с общими значениями параметров от
решателя GlobalSearch gs.
Отображение Уровень отображения к Командному окну'final' (значение по умолчанию) | 'iter' | 'off'Уровень отображения к Командному окну, заданному как один из следующих символьных массивов или строк:
'final' – Сообщите об итоговых результатах после того, как run закончится.
'iter' – Сообщите о результатах после каждого локального запущенного решателя, в дополнение к итоговым сводным данным.
'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'Стартовые точки, чтобы запуститься, заданный как:
все Запустите все стартовые точки.
границы Запустите только стартовые точки, которые удовлетворяют границы.
'bounds-ineqs' — Запустите только стартовые точки, которые удовлетворяют границы и ограничения неравенства.
Пример:
'bounds' запускает только точки, которые удовлетворяют все границы.
Типы данных: char | string
'UseParallel' Распределите локальные вызовы решателя нескольких процессоровfalse (значение по умолчанию) | trueРаспределите локальные вызовы решателя нескольких процессоров, заданных как false или true.
ложь Не запускайтесь параллельно.
tRUE Распределите локальные вызовы решателя нескольких процессоров.
Пример: true
Типы данных: логический
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 экземплярах проблемы с помощью алгоритма 'sqp' fmincon.
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)
Для получения дополнительной информации смотрите, Как Использовать Параллельную обработку в Global Optimization Toolbox.
CustomStartPointSet | GlobalOptimSolution | GlobalSearch | RandomStartPointSet | run
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.