exponenta event banner

MultiStart

Найти несколько локальных минимумов

Описание

A MultiStart объект содержит свойства (параметры), влияющие на run многократно запускает локальный решатель для генерации GlobalOptimSolution объект. При выполнении решатель пытается найти несколько локальных решений проблемы, начиная с различных точек.

Создание

Описание

пример

ms = MultiStart создает ms, a MultiStart решатель, для свойств которого установлены значения по умолчанию.

пример

ms = MultiStart(Name,Value) задает свойства, используя пары имя-значение.

пример

ms = MultiStart(oldMS,Name,Value) создает копию oldMS MultiStart решатель и задает свойства, используя пары имя-значение.

пример

ms = MultiStart(gs) создает ms, a MultiStart решатель с общими значениями параметров из gs GlobalSearch решатель.

Свойства

развернуть все

Уровень отображения в окне команд, определяемый как один из следующих векторов символов или строк:

  • 'final' - Сводные результаты отчета после run заканчивает.

  • 'iter' - Результаты отчета после первоначального fmincon прогон, после этапа 1, после каждых 200 стартовых точек и после каждого прогона fmincon, в дополнение к окончательному резюме.

  • 'off' - Нет дисплея.

Пример: 'iter'

Типы данных: char | string

Допуск на значения функций для рассмотрения решений равным, заданный как неотрицательный скаляр. Решатели рассматривают два идентичных решения, если они находятся в пределах XTolerance относительное расстояние друг от друга и иметь значения целевой функции в пределах FunctionTolerance относительная разница друг от друга. Если оба условия не выполнены, решатели сообщают о решениях как об отличии. Набор FunctionTolerance кому 0 для получения результатов каждого локального прогона решателя. Набор FunctionTolerance к большему значению, чтобы иметь меньше результатов. Для GlobalSearch подробности см. в разделе Обновление набора решений при выполнении fmincon. Для MultiStart подробные сведения см. в разделе Создание объекта StartOptimSolution.

Пример: 1e-4

Типы данных: double

Максимальное время в секундах выполнения MultiStart, указанное как положительный скаляр. MultiStart и его локальные решатели останавливаются, когда MaxTime секунд прошло с начала пробега, как измерено tic и toc.

MaxTime не прерывает локальные решатели во время выполнения, поэтому общее время может превышать MaxTime.

Пример: 180 останавливает решатель при первом завершении вызова локального решателя через 180 секунд.

Типы данных: double

Отчет о ходе выполнения решателя или останове решателя, указанного как дескриптор функции или массив ячеек дескрипторов функции. Функции вывода выполняются после каждого вызова локального решателя. Они также запускаются при запуске и завершении работы глобального решателя. Запись выходных функций с использованием синтаксиса, описанного в OutputFcn. Посмотрите, что продукция GlobalSearch функционирует.

Типы данных: cell | function_handle

График выполнения решателя, заданный как дескриптор функции или массив ячеек дескрипторов функции. Функции графика выполняются после каждого вызова локального решателя. Они также запускаются при запуске и завершении работы глобального решателя. Запишите функции графика, используя синтаксис, описанный в OutputFcn.

Существует две встроенные функции графика:

  • @gsplotbestf строит график наилучшего значения целевой функции.

  • @gsplotfunccount строит график количества оценок функций.

См. раздел Мультизапусковая функция печати.

Пример: @gsplotbestf

Типы данных: cell | function_handle

Начальные точки для выполнения, указанные как:

  • 'all' - Выполнить все начальные точки.

  • 'bounds' - Выполнять только начальные точки, удовлетворяющие границам.

  • 'bounds-ineqs' - выполнять только начальные точки, удовлетворяющие ограничениям и ограничениям неравенства.

Пример: 'bounds' запускает только точки, удовлетворяющие всем границам.

Типы данных: char | string

Распределение вызовов локального решателя по нескольким процессорам, указанным как false или true.

  • false - Не запускать параллельно.

  • true - Распределение вызовов локального решателя по нескольким процессорам.

Пример: true

Типы данных: logical

Допуск на расстояние для рассмотрения решений равным, определяемый как неотрицательный скаляр. Решатели рассматривают два идентичных решения, если они находятся в пределах XTolerance относительное расстояние друг от друга и иметь значения целевой функции в пределах FunctionTolerance относительная разница друг от друга. Если оба условия не выполнены, решатели сообщают о решениях как об отличии. Набор XTolerance кому 0 для получения результатов каждого локального прогона решателя. Набор XTolerance к большему значению, чтобы иметь меньше результатов. Для GlobalSearch подробности см. в разделе Обновление набора решений при выполнении fmincon. Для MultiStart подробные сведения см. в разделе Создание объекта StartOptimSolution.

Пример: 2e-4

Типы данных: double

Функции объекта

runЗапуск решателя с несколькими запусками

Примеры

свернуть все

Рассмотрим функцию с несколькими локальными минимумами.

fun = @(x) x.^2 + 4*sin(5*x);
fplot(fun,[-5,5])

Figure contains an axes. The axes contains an object of type functionline.

Для поиска глобального минимума выполните команду 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 со свойствами по умолчанию.

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 выполнять только начальные точки, которые осуществимы в отношении границ и ограничений неравенства.

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

Создание значения по умолчанию 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 объект с 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.

Расширенные возможности

Представлен в R2010a