Найдите несколько локальных минимумов
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
Типы данных: логический
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
Создайте 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
.
опции = optimoptions ('
solvername
', 'UseParallel', верный)
Для получения дополнительной информации смотрите, Как Использовать Параллельную обработку в Global Optimization Toolbox.
CustomStartPointSet
| GlobalOptimSolution
| GlobalSearch
| RandomStartPointSet
| run
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.