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' – Сообщите о результатах после начальной буквы fmincon запуститесь, после Этапа 1, после каждых 200 стартовых точек, и после каждого запуска fmincon, в дополнение к итоговым сводным данным.

  • '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])

Figure contains an axes object. The axes object 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