MultiStart

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

Описание

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 решатель.

Свойства

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

Level of display к Командному окну, заданному как один из следующих символьных массивов или строк:

  • 'final' – Сообщите об итоговых результатах после run концы.

  • 'iter' – Сообщите о результатах после каждого локального запущенного решателя, в дополнение к итоговым сводным данным.

  • 'off' – Никакое отображение.

Пример: 'iter'

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

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

Пример: 1e-4

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

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

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

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

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

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

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

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

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

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

  • @gsplotfunccount строит количество функциональных оценок.

Смотрите функцию построения графика MultiStart.

Пример: @gsplotbestf

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

Стартовые точки, чтобы запуститься, заданный как:

  • 'all' — Запустите все стартовые точки.

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

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

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

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

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

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

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

Пример: true

Типы данных: логический

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

Пример: 2e-4

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

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

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

Примеры

свернуть все

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

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

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