Найдите несколько локальных минимумов
Объект MultiStart
содержит свойства (опции), которые влияют, как run
неоднократно запускает локальный решатель, чтобы сгенерировать объект GlobalOptimSolution
. Когда запущено, решатель пытается найти несколько локальных решений проблемы путем запуска с различных точек.
ms = MultiStart
ms = 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.