Метод Нелдера-Мида
Метод Нелдера-Мида (также метод нисходящего симплекса , метод амебы или метод многогранников ) — численный метод, используемый для поиска минимума или максимума целевой функции в многомерном пространстве. Это метод прямого поиска (основанный на сравнении функций), который часто применяется к задачам нелинейной оптимизации , для которых производные могут быть неизвестны. Однако метод Нелдера-Мида представляет собой эвристический метод поиска, который может сходиться к нестационарным точкам. [1] о проблемах, которые можно решить альтернативными методами. [2]
Методика Нелдера-Мида была предложена Джоном Нелдером и Роджером Мидом в 1965 году. [3] как развитие метода Spendley et al. [4]
Обзор
[ редактировать ]В методе используется понятие симплекса , который представляет собой особый многогранник из n + 1 вершин в n измерениях. Примеры симплексов включают отрезок прямой в одномерном пространстве, треугольник в двумерном пространстве, тетраэдр в трехмерном пространстве и т. д.
Метод аппроксимирует локальный оптимум задачи с n переменными, когда целевая функция изменяется плавно и унимодальна . Типичные реализации минимизируют функции, а мы максимизируем минимизируя .
Например, инженер подвесного моста должен выбрать толщину каждой стойки, троса и опоры. Эти элементы взаимозависимы, но нелегко визуализировать влияние изменения любого конкретного элемента. Моделирование таких сложных структур зачастую чрезвычайно затратно в вычислительном отношении и может занимать несколько часов на одно выполнение. Метод Нелдера-Мида в исходном варианте требует не более двух вычислений на итерацию, за исключением операции сжатия , описанной ниже, которая привлекательна по сравнению с некоторыми другими методами оптимизации прямого поиска. Однако общее количество итераций для достижения предложенного оптимума может быть большим.
Нелдер-Мид в n измерениях поддерживает набор из n + 1 контрольных точек, расположенных в виде симплекса . Затем он экстраполирует поведение целевой функции, измеренной в каждой контрольной точке, чтобы найти новую контрольную точку и заменить одну из старых контрольных точек новой, и таким образом метод развивается. Самый простой подход — заменить худшую точку точкой, отраженной через центр тяжести оставшихся n точек. Если эта точка лучше, чем лучшая текущая точка, то мы можем попробовать экспоненциально растянуть эту линию. С другой стороны, если эта новая точка ненамного лучше предыдущей, то мы пересекаем долину и сжимаем симплекс в сторону лучшей точки. Интуитивное объяснение алгоритма из «Численных рецептов»: [5]
Метод нисходящего симплекса теперь состоит из ряда шагов, причем большинство шагов просто перемещают точку симплекса, в которой функция является наибольшей («самая высокая точка»), через противоположную грань симплекса в более низкую точку. Эти шаги называются отражениями, и они созданы для сохранения объема симплекса (и, следовательно, его невырожденности). Когда это возможно, метод расширяет симплекс в том или ином направлении, чтобы сделать более крупные шаги. Когда он достигает «дна долины», метод сжимается в поперечном направлении и пытается сочиться вниз по долине. Если возникает ситуация, когда симплекс пытается «пройти сквозь игольное ушко», он сжимается во всех направлениях, подтягиваясь вокруг своей нижней (лучшей) точки.
В отличие от современных методов оптимизации, эвристика Нелдера-Мида может сходиться к нестационарной точке, если только задача не удовлетворяет более строгим условиям, чем это необходимо для современных методов. [1] Современные усовершенствования эвристики Нелдера – Мида известны с 1979 года. [2]
Существует множество вариаций в зависимости от фактического характера решаемой проблемы. Распространенный вариант использует небольшой симплекс постоянного размера, который примерно следует направлению градиента (что дает самый крутой спуск ). Визуализируйте небольшой треугольник на карте высот, переворачивающийся вниз по долине к местному дну. Этот метод также известен как метод гибкого многогранника . Однако этот метод имеет тенденцию плохо работать по сравнению с методом, описанным в этой статье, поскольку он делает небольшие ненужные шаги в областях, малоинтересных.
Один из возможных вариантов алгоритма НМ.
[ редактировать ](Это приблизительно соответствует процедуре, описанной в оригинальной статье Нелдера-Мида.)
Мы пытаемся минимизировать функцию , где . Наши текущие контрольные точки: .
1. Упорядочить по значениям в вершинах:
- Проверьте, должен ли метод остановиться. См. Прекращение (иногда называемое «конвергенцией»).
2. Рассчитать , центр тяжести всех точек, кроме .
3. Размышления
- Вычислить отраженную точку с .
- Если отраженная точка лучше второй худшей, но не лучше лучшей, т.е. ,
- затем получим новый симплекс, заменив худшую точку с отраженной точкой и перейдите к шагу 1.
4. Расширение
- Если отраженная точка на данный момент является лучшей точкой, ,
- затем вычислите расширенную точку с .
- Если расширенная точка лучше, чем отраженная точка, ,
- затем получим новый симплекс, заменив худшую точку с расширенной точкой и перейдите к шагу 1;
- иначе получим новый симплекс, заменив худшую точку с отраженной точкой и перейдите к шагу 1.
5. Сокращение
- Вот это точно . (Обратите внимание, что является вторым или «следующим» после худшей точки.)
- Если ,
- затем вычислите сжатую точку снаружи с .
- Если стянутая точка лучше, чем отраженная точка, т.е. ,
- затем получим новый симплекс, заменив худшую точку с контрактной точкой и перейдите к шагу 1;
- В противном случае перейдите к шагу 6;
- Если ,
- затем вычислите сжатую точку внутри с .
- Если сжатая точка лучше, чем худшая точка, т.е. ,
- затем получим новый симплекс, заменив худшую точку с контрактной точкой и перейдите к шагу 1;
- В противном случае перейдите к шагу 6;
6. Сжать
- Заменить все точки кроме лучшей( ) с
- и перейдите к шагу 1.
Примечание : , , и соответственно коэффициенты отражения, расширения, сжатия и сжатия. Стандартные значения , , и .
Для размышления , поскольку является вершиной с более высоким связанным значением среди вершин, мы можем ожидать найти более низкое значение при отражении в противоположной грани, образованной всеми вершинами кроме .
Для расширения , если точка отражения — новый минимум вдоль вершин, мы можем ожидать найти интересные значения в направлении от к .
Что касается сокращения , если , мы можем ожидать, что лучшее значение будет внутри симплекса, образованного всеми вершинами .
Наконец, сжатие обрабатывает тот редкий случай, когда сокращение от наибольшей точки увеличивает , то, что не может произойти достаточно близко к неособому минимуму. В этом случае мы сжимаемся к самой низкой точке в надежде найти более простой ландшафт. Однако Нэш отмечает, что арифметика конечной точности иногда не может фактически сжать симплекс, и реализовал проверку того, что размер действительно уменьшается. [6]
Начальный симплекс
[ редактировать ]Начальный симплекс важен. Действительно, слишком маленький начальный симплекс может привести к локальному поиску, следовательно, НМ может легче застрять. Таким образом, этот симплекс должен зависеть от характера проблемы. Однако в исходной статье предлагался симплекс, в котором начальная точка задается как , а остальные генерируются с фиксированным шагом по каждому измерению по очереди. Таким образом, метод чувствителен к масштабированию переменных, составляющих .
Прекращение действия
[ редактировать ]Критерии необходимы для разрыва итерационного цикла. Нелдер и Мид использовали выборочное стандартное отклонение значений функции текущего симплекса. Если они падают ниже некоторого допуска, то цикл останавливается и самая низкая точка симплекса возвращается в качестве предложенного оптимума. Обратите внимание, что очень «плоская» функция может иметь почти одинаковые значения функции в большой области, поэтому решение будет чувствительно к допуску. Нэш добавляет тест на усадку в качестве еще одного критерия завершения. [6] Обратите внимание, что программы завершаются, а итерации могут сходиться.
См. также
[ редактировать ]- Оптимизация без производных
- КОБИЛА
- С УОА
- ЛИНКОА
- Нелинейный метод сопряженных градиентов
- Алгоритм Левенберга – Марквардта
- Бройдена-Флетчера-Гольдфарба-Шенно или BFGS. Метод
- Дифференциальная эволюция
- Поиск по шаблону (оптимизация)
- СМА-ES
Ссылки
[ редактировать ]- ^ Jump up to: а б
- Пауэлл, Майкл Джей Ди (1973). «О направлениях поиска алгоритмов минимизации». Математическое программирование . 4 : 193–201. дои : 10.1007/bf01584660 . S2CID 45909653 .
- Маккиннон, КИМ (1999). «Сходимость симплексного метода Нелдера – Мида к нестационарной точке». SIAM Journal по оптимизации . 9 : 148–158. CiteSeerX 10.1.1.52.3900 . дои : 10.1137/S1052623496303482 . (сводка алгоритма онлайн).
- ^ Jump up to: а б
- класс методов прямого поиска Ю, Вэнь Ци. 1979. « Позитивный . базис и »
- Ю, Вэнь Ци. 1979. «Конвергентное свойство простой эволюционной техники». Китайская наука [ Чжунго Кэсюэ ]: 69–77.
- Колда Тамара Георгиевна ; Льюис, Роберт Майкл; Торчон, Вирджиния (2003). «Оптимизация прямым поиском: новые взгляды на некоторые классические и современные методы». СИАМ преп . 45 (3): 385–482. CiteSeerX 10.1.1.96.8672 . дои : 10.1137/S003614450242889 .
- Льюис, Роберт Майкл; Шепард, Энн; Торчон, Вирджиния (2007). «Реализация методов поиска генераторного набора для линейно ограниченной минимизации». СИАМ J. Sci. Вычислить . 29 (6): 2507–2530. Бибкод : 2007ГАК...29.2507Л . CiteSeerX 10.1.1.62.8771 . дои : 10.1137/050635432 .
- ^ Нелдер, Джон А.; Р. Мид (1965). «Симплексный метод минимизации функции». Компьютерный журнал . 7 (4): 308–313. дои : 10.1093/comjnl/7.4.308 .
- ^ Спендли, В.; Хект, Греция; Химсворт, Франция (1962). «Последовательное применение симплексных схем в оптимизации и эволюционных операциях». Технометрика . 4 (4): 441–461. дои : 10.1080/00401706.1962.10490033 .
- ^
- Пресс, WH; Теукольский, С.А.; Феттерлинг, WT; Фланнери, BP (2007). «Раздел 10.5. Симплексный метод спуска в многомерных измерениях» . Численные рецепты: искусство научных вычислений (3-е изд.). Нью-Йорк: Издательство Кембриджского университета. ISBN 978-0-521-88068-8 .
- ^ Jump up to: а б Нэш, Дж. К. (1979). Компактные численные методы: линейная алгебра и минимизация функций . Бристоль: Адам Хильгер. ISBN 978-0-85274-330-0 .
Дальнейшее чтение
[ редактировать ]- Авриэль, Мордехай (2003). Нелинейное программирование: анализ и методы . Дуврское издательство. ISBN 978-0-486-43227-4 .
- Куп, ID; Прайс, CJ (2002). «Положительные основы в числовой оптимизации». Вычислительная оптимизация и приложения . 21 (2): 169–176. дои : 10.1023/А:1013760716801 . S2CID 15947440 .
- Гилл, Филип Э.; Мюррей, Уолтер; Райт, Маргарет Х. (1981). «Методы для многомерных негладких функций». Практическая оптимизация . Нью-Йорк: Академическая пресса. стр. 93–96 . ISBN 978-0-12-283950-4 .
- Ковалик, Дж.; Осборн, MR (1968). Методы решения задач безусловной оптимизации . Нью-Йорк: Эльзевир. стр. 24–27 . ISBN 0-444-00041-0 .
- Суонн, штат Вашингтон (1972). «Методы прямого поиска». В Мюррей, В. (ред.). Численные методы неограниченной оптимизации . Нью-Йорк: Академическая пресса. стр. 13–28. ISBN 978-0-12-512250-4 .
Внешние ссылки
[ редактировать ]- Объяснение и визуализация Нелдера-Мида (Downhill Simplex) с помощью банановой функции Розенброка.
- Джон Буркардт: Код Нелдера-Мида в Matlab . Обратите внимание, что вариант метода Нелдера-Мида также реализуется функцией Matlab fminsearch.
- Оптимизация Нелдера-Мида в Python в библиотеке SciPy.
- nelder-mead — реализация метода Нелдера-Мида на Python.
- NelderMead() — реализация Go/Golang.
- SOVA 1.0 (бесплатное ПО) — симплексная оптимизация для различных приложений
- [1] - HillStormer, практический инструмент для нелинейной, многомерной и линейной симплексной оптимизации с ограничениями от Нелдера Мида.