GlobalSearch
и MultiStart
имейте аналогичные подходы к нахождению глобальной переменной или нескольких минимумов. Оба алгоритма запускают локальный решатель (такой как fmincon
) от нескольких стартовых точек. Алгоритмы используют несколько стартовых точек, чтобы произвести несколько областей притяжения. Для получения дополнительной информации смотрите Области притяжения.
Обзор Алгоритма GlobalSearch и MultiStart содержит эскиз GlobalSearch
и MultiStart
алгоритмы.
GlobalSearch и обзор алгоритма MultiStart
Основные отличия между GlobalSearch
и MultiStart
:
GlobalSearch
использует поисковый рассеянием механизм в генерации стартовых точек. MultiStart
использует равномерно распределенные стартовые точки внутри границ или предоставленные пользователями стартовые точки.
GlobalSearch
анализирует стартовые точки и отклоняет те точки, которые вряд ли улучшат лучший локальный минимум, найденный до сих пор. MultiStart
запуски все стартовые точки (или, опционально, все стартовые точки, которые выполнимы относительно границ или ограничений неравенства).
MultiStart
дает выбор локального решателя: fmincon
, fminunc
, lsqcurvefit
, или lsqnonlin
. GlobalSearch
алгоритм использует fmincon
.
MultiStart
может запуститься параллельно, распределительные стартовые точки к нескольким процессорам для локального решения. Запускать MultiStart
параллельно, смотрите, Как Использовать Параллельную обработку в Global Optimization Toolbox.
Различия между этими объектами решателя сводятся к следующему решению, на котором можно использовать:
Используйте GlobalSearch
найти один глобальный минимум наиболее эффективно на одном процессоре.
Используйте MultiStart
к:
Найдите несколько локальных минимумов.
RunInParallel.
Используйте решатель кроме fmincon
.
Поиск полностью глобального минимума.
Исследуйте свои собственные стартовые точки.
Для описания алгоритма смотрите Ugray и др. [1].
Когда вы run
GlobalSearch
объект, алгоритм выполняет следующие шаги:
GlobalSearch
запуски fmincon
от стартовой точки вы даете в problem
структура. Если этот запуск сходится, GlobalSearch
записывает стартовую точку и конечную точку для первоначальной оценки на радиусе области притяжения. Кроме того, GlobalSearch
записывает итоговое значение целевой функции для использования в функции score (см., Получают Стартовую точку Этапа 1, Запуск).
Функция счета является суммой значения целевой функции в точке и кратном сумме нарушений ограничений. Таким образом, допустимая точка имеет счет, равный его значению целевой функции. Несколько для нарушений ограничений первоначально 1000. GlobalSearch
обновляет несколько во время запуска.
GlobalSearch
использует поля точек алгоритм поиска, чтобы сгенерировать набор NumTrialPoints
испытательные точки. Испытательные точки являются потенциальными стартовыми точками. Для описания поля точек алгоритма поиска смотрите Перчаточника [2]. GlobalSearch
генерирует испытательные точки в любых конечных границах, которые вы устанавливаете (lb
и ub
). Неограниченным компонентам наложили искусственные границы: lb = -1e4 + 1
, ub = 1e4 + 1
. Эта область значений не симметрична вокруг начала координат так, чтобы источник не был в поля точек поиске. Компонентам с односторонними границами наложили искусственные границы на неограниченную сторону, переключенную конечными границами, чтобы сохранить lb < ub
.
GlobalSearch
выполняет функцию счета набора NumStageOnePoints
испытательные точки. Это затем берет точку с лучшим счетом и запускает fmincon
от той точки. GlobalSearch
удаляет набор NumStageOnePoints
испытайте точки из его списка точек, чтобы исследовать.
localSolverThreshold
первоначально меньшие из двух значений целевой функции в точках решения. Точками решения является fmincon
решения, начинающие с x0
и от стартовой точки Этапа 1. Если обе из этих точек решения не существуют или неосуществимы, localSolverThreshold
первоначально значение функции штрафа стартовой точки Этапа 1.
GlobalSearch
эвристическое предположение - то, что области притяжения являются сферическими. Первоначальная оценка областей притяжения для решения указывает от x0
и точка решения от Этапа 1 является сферами, сосредоточенными в точках решения. Радиус каждой сферы является расстоянием от начальной точки до точки решения. Эти предполагаемые области могут перекрыться.
Существует два набора счетчиков, сопоставленных с алгоритмом. Каждый счетчик является количеством последовательных испытательных точек что:
Лгите в области притяжения. Существует один счетчик для каждой области.
Имейте функцию счета, больше, чем localSolverThreshold
. Для определения счета смотрите Запуск fmincon от x0.
Все счетчики первоначально 0.
GlobalSearch
неоднократно исследует остающуюся испытательную точку из списка и выполняет следующие шаги. Это постоянно контролирует время и останавливает поиск, если прошедшее время превышает MaxTime
секунды.
Вызовите испытательную точку p
. Запустите fmincon
от p
если следующие условия содержат:
p
не находится ни в какой существующей области. Критерий каждой области i
:
|p - center(i)| > DistanceThresholdFactor * radius(i).
DistanceThresholdFactor
опция (значение по умолчанию 0.75
).
radius
предполагаемый радиус, который обновляется в Радиусе Области с Обновлением и Пороге, и Реагируйте на Большие Встречные Значения.
счет (p
) <localSolverThreshold
.
(дополнительный) p
удовлетворяет связанным и/или ограничениям неравенства. Этот тест происходит, если вы устанавливаете StartPointsToRun
свойство GlobalSearch
возразите против 'bounds'
или 'bounds-ineqs'
.
Сбросьте счетчики
Установите счетчики для областей и порога к 0.
Обновите набор решения
Если fmincon
запуски, начинающие с p
, это может дать к положительному выходному флагу, который указывает на сходимость. В этом случае, GlobalSearch
обновляет вектор GlobalOptimSolution
объекты. Вызовите точку решения xp
и значение целевой функции fp
. Существует два случая:
Поскольку любое решение указывает xq
со значением целевой функции fq
,
|xq - xp| > XTolerance * max(1,|xp|)
или
|fq - fp| > FunctionTolerance * max(1,|fp|)
.
В этом случае, GlobalSearch
создает новый элемент в векторе GlobalOptimSolution
объекты. Для получения дополнительной информации информации, содержавшейся в каждом объекте, смотрите GlobalOptimSolution
.
Поскольку некоторое другое решение указывает xq
со значением целевой функции fq
,
|xq - xp| <= XTolerance * max(1,|xp|)
и
|fq - fp| <= FunctionTolerance * max(1,|fp|)
.
В этом случае, GlobalSearch
отношения xp
как эквивалентный xq
. GlobalSearch
алгоритм изменяет GlobalOptimSolution
из xq
путем добавления p
к массиву ячеек X0
'points'.
Существует одна незначительная тонкая настройка, которая может произойти с этим обновлением. Если выходной флаг для xq
больше 1
, и выход отмечает для xp
1
, затем xp
замены xq
. Эта замена может привести к некоторым точкам в той же области, являющейся больше, чем расстояние XTolerance
от xp
.
Обновите радиус области и порог
Если выходной флаг текущего fmincon
запущенный положительно:
Установите порог к значению баллов в стартовой точке p
.
Установите радиус области для xp
равняйтесь максимуму существующего радиуса (если таковые имеются) и расстояние между p
и xp
.
Сообщите итеративному отображению
Когда GlobalSearch
Display
свойством является 'iter'
, каждая точка, что fmincon
запуски создают одну линию в GlobalSearch
итеративное отображение.
Обновите счетчики
Постепенно увеличьте счетчик для каждой области, содержащей p
. Сбросьте счетчик любой области к 0
.
Постепенно увеличьте пороговый счетчик если счет (p
) > = localSolverThreshold
. В противном случае сбросьте в противоречии с 0
.
Реагируйте на большие встречные значения
Поскольку каждая область со счетчиком равняется MaxWaitCycle
, умножьте радиус области на 1
– BasinRadiusFactor
. Сбросьте в противоречии с 0
. (Оба MaxWaitCycle
и BasinRadiusFactor
устанавливаемые свойства GlobalSearch
объект.
Если пороговый счетчик равняется MaxWaitCycle
, увеличьте порог:
новый порог = порог + PenaltyThresholdFactor
*(1 + abs (порог)).
Сбросьте в противоречии с 0
.
Сообщите итеративному отображению
Каждая 200-я испытательная точка создает одну линию в GlobalSearch
итеративное отображение.
После достижения MaxTime
секунды или исчерпывание испытательных точек, GlobalSearch
создает вектор GlobalOptimSolution
объекты. GlobalSearch
заказывает вектор значением целевой функции, от самого низкого (лучше всего) к (худшему) самому высокому. Это завершает алгоритм.
Когда вы run
MultiStart
объект, алгоритм выполняет следующие шаги:
MultiStart
входные параметры проверок для валидности. Проверки включают выполнение локального решателя однажды на проблемных входных параметрах. Даже когда запущено параллельно, MultiStart
выполняет эти проверки последовательно.
Если вы вызываете MultiStart
с синтаксисом
[x,fval] = run(ms,problem,k)
для целочисленного k
, MultiStart
генерирует k - 1
стартовые точки точно так же, как, если вы использовали RandomStartPointSet
объект. Алгоритм также использует x0
стартовая точка от problem
структура, в общей сложности для k
стартовые точки.
RandomStartPointSet
объект не имеет никаких точек сохраненными в объекте. Вместо этого MultiStart
вызовы list
, который генерирует случайные точки в границах, данных problem
структура. Если неограниченный компонент существует, list
использует искусственное, связанное данный ArtificialBound
свойство RandomStartPointSet
объект.
Если вы обеспечиваете CustomStartPointSet
объект, MultiStart
не генерирует стартовые точки, но использует точки в объекте.
Если вы устанавливаете StartPointsToRun
свойство MultiStart
возразите против 'bounds'
или 'bounds-ineqs'
, MultiStart
не запускает локальный решатель от неосуществимых стартовых точек. В этом контексте, “неосуществимом”, означает стартовые точки, которые не удовлетворяют границам или стартовым точкам, которые не удовлетворяют и границам и ограничениям неравенства.
Настройка по умолчанию StartPointsToRun
'all'
. В этом случае, MultiStart
не отбрасывает неосуществимые стартовые точки.
MultiStart
запускает локальный решатель, заданный в problem.solver
, запуск в точках, которые передают StartPointsToRun
фильтр. Если MultiStart
запускается параллельно, это отправляет стартовые точки в процессоры рабочего по одному, и процессоры рабочего запускают локальный решатель.
Локальный решатель проверяет ли MaxTime
секунды протекли в каждой из его итераций. Если так, это выходит из той итерации, не сообщая о решении.
Когда локальный решатель останавливается, MultiStart
хранит результаты и продолжается к следующему шагу.
Сообщите итеративному отображению. Когда MultiStart
Display
свойством является 'iter'
, каждая точка, что локальные запуски решателя создают одну линию в MultiStart
итеративное отображение.
MultiStart
остановки, когда это исчерпывает стартовые точки. Это также останавливается, когда это превышает общее время выполнения MaxTime
секунды.
После MultiStart
достигает останавливающегося условия, алгоритм создает вектор GlobalOptimSolution
объекты можно следующим образом:
Сортировка локальных решений значением целевой функции (Fval
) от самого низкого до самого высокого. Для lsqnonlin
и lsqcurvefit
локальные решатели, целевая функция является нормой невязки.
Цикл по локальным решениям j
начало с самого низкого (лучшего) Fval
.
Найдите все решения k
удовлетворение обоим:
|Fval(k) - Fval(j)| <= FunctionTolerance*max(1,|Fval(j)|)
|x(k) - x(j)| <= XTolerance*max(1,|x(j)|)
j
записи,
Fval(j)
, локальный решатель output
структура для j
, и массив ячеек стартовых точек для j
и весь k
. Удалите те точки k
из списка локальных решений. Эта точка является одной записью в векторе GlobalOptimSolution
объекты.
Итоговый вектор GlobalOptimSolution
объекты в порядке Fval
, от самого низкого (лучше всего) к (худшему) самому высокому.
Сообщите Итеративному Отображению. После исследования всех локальных решений, MultiStart
дает сводные данные итеративному отображению. Эти сводные данные включают количество локальных запусков решателя, которые сходились, номер, которому не удалось сходиться, и номер, который имел ошибки.
[1] Ugray, Zsolt, Леон Лэсдон, Джон К. Пламмер, Фред Гловер, Джеймс Келли и Рафаэль Марти. Рассейте Поиск и Локальные Решатели NLP: A Мультизапускают Среду для Глобальной Оптимизации. Журнал INFORMS на Вычислении, Издании 19, № 3, 2007, стр 328–340.
[2] Перчаточник, F. “Шаблон для поля точек поиска и пересоединения пути”. Искусственная Эволюция (J.-K. Хао, E.Lutton, E.Ronald, M.Schoenauer, D.Snyers, редакторы). Читайте лекции Примечаниям в Информатике, 1363, Спрингер, Берлине/Гейдельберге, 1998, стр 13–54.
[3] Диксон, L. и Г. П. Сзеге. “Глобальная Задача оптимизации: Введение”. К Глобальной Оптимизации 2 (Диксон, L. C. W. и Г. П. Сзеге, редакторы). Амстердам, Нидерланды: Северная Голландия, 1978.