Метод Нелдера – Мида - Nelder–Mead method

Поиск по функции Химмельблау
Поиск минимума Нелдера – Мида функции Симионеску . Вершины симплекса упорядочены по их значению, где 1 имеет наименьшее (лучшее) значение.

Нелдера-Мид метод (также под гору симплекс - метод , амебы метод , или метод многогранник ) является широко применяется метод численного используется , чтобы найти минимум или максимум в целевой функции в многомерном пространстве. Это метод прямого поиска (основанный на сравнении функций), который часто применяется к задачам нелинейной оптимизации, для которых производные могут быть неизвестны. Однако метод Нелдера – Мида - это метод эвристического поиска, который может сходиться к нестационарным точкам на задачах, которые можно решить альтернативными методами.

Техника Нелдера-Мида была предложена Джоном Нелдером и Роджером Мидом в 1965 году как развитие метода Спендли и др.

Обзор

В методе используется концепция симплекса , который представляет собой специальный многогранник из n  + 1 вершин в n измерениях. Примеры симплексов включают отрезок прямой на прямой, треугольник на плоскости, тетраэдр в трехмерном пространстве и так далее.

Метод аппроксимирует локальный оптимум задачи с n переменными, когда целевая функция изменяется плавно и является унимодальной . Типичные реализации минимизируют функции, а мы максимизируем их минимизацией .

Например, инженер по подвесному мосту должен выбрать толщину каждой стойки, троса и опоры. Эти элементы взаимозависимы, но непросто визуализировать влияние изменения какого-либо конкретного элемента. Моделирование таких сложных структур часто требует чрезвычайно больших вычислительных затрат и, возможно, занимает более часов на выполнение. В исходном варианте метод Нелдера – Мида требует не более двух вычислений на итерацию, за исключением операции сжатия, описанной ниже, которая привлекательна по сравнению с некоторыми другими методами оптимизации прямого поиска. Однако общее количество итераций до предложенного оптимума может быть большим.

Нелдер – Мид в n измерениях поддерживает набор из n  + 1 контрольных точек, организованных в виде симплекса . Затем он экстраполирует поведение целевой функции, измеренной в каждой контрольной точке, чтобы найти новую контрольную точку и заменить одну из старых контрольных точек на новую, и таким образом методика прогрессирует. Самый простой подход - заменить наихудшую точку точкой, отраженной через центр тяжести оставшихся n точек. Если эта точка лучше, чем лучшая текущая точка, то мы можем попробовать экспоненциально растянуться вдоль этой линии. С другой стороны, если эта новая точка не намного лучше, чем предыдущее значение, тогда мы переходим через долину, поэтому мы сжимаем симплекс в сторону лучшей точки. Интуитивное объяснение алгоритма из «Численных рецептов»:

Симплексный метод спуска теперь включает серию шагов, большинство из которых просто перемещают точку симплекса, где функция наибольшая («самая высокая точка»), через противоположную сторону симплекса в нижнюю точку. Эти шаги называются отражениями, и они построены так, чтобы сохранить объем симплекса (и, следовательно, сохранить его невырожденность). Когда это возможно, метод расширяет симплекс в том или ином направлении, чтобы сделать более крупные шаги. Когда он достигает «дна долины», метод сжимается в поперечном направлении и пытается просочиться вниз по долине. Если возникает ситуация, когда симплекс пытается «пройти сквозь игольное ушко», он сжимается во всех направлениях, втягиваясь вокруг своей самой нижней (лучшей) точки.

В отличие от современных методов оптимизации, эвристика Нелдера – Мида может сходиться к нестационарной точке, если задача не удовлетворяет более строгим условиям, чем это необходимо для современных методов. Современные усовершенствования эвристики Нелдера – Мида известны с 1979 года.

Существует множество вариантов в зависимости от фактического характера решаемой проблемы. В распространенном варианте используется небольшой симплекс постоянного размера, который примерно следует направлению градиента (что дает самый крутой спуск ). Визуализируйте небольшой треугольник на карте высот, переворачивающийся вниз по долине к местному дну. Этот метод также известен как метод гибкого многогранника . Это, однако, имеет тенденцию плохо работать по сравнению с методом, описанным в этой статье, потому что он выполняет небольшие ненужные шаги в областях, которые не представляют особого интереса.

Один из возможных вариантов алгоритма NM

(Это примерно соответствует процедуре, описанной в исходной статье Нелдера – Мида.)

Применение метода Нелдера – Мида к функции Розенброка

Мы пытаемся минимизировать функцию , где . Наши текущие контрольные точки .

1. Порядок согласно значениям в вершинах:

Проверьте, должен ли метод останавливаться. См. Раздел « Прекращение действия» ниже. Иногда неадекватно называют «конвергенцией».

2. Вычислить , то медианы всех точек , за исключением .

3. Отражение

Вычислить отраженную точку с помощью .
Если отраженная точка лучше , чем второй худший, но не лучше , чем самое лучшее, то есть ,
затем получите новый симплекс, заменив наихудшую точку отраженной точкой , и перейдите к шагу 1.

4. Расширение

Если отраженная точка лучшая точка до сих пор ,
затем вычислите расширенную точку с помощью .
Если расширенная точка лучше , чем отраженные точки, ,
затем получить новый симплекс, заменив худшую точку развернутой, и перейти к шагу 1;
иначе получите новый симплекс, заменив худшую точку отраженной точкой и перейдите к шагу 1.

5. Сокращение

Вот это точно . (Обратите внимание, что это второй или "следующий" за высшим.)
Вычислить сжатую точку с помощью .
Если контракт точка лучше , чем худший момент, то есть ,
затем получить новый симплекс, заменив худшую точку сжатой точкой, и перейти к шагу 1;

6. Сжатие

Замените все точки, кроме лучшего ( ), на
и переходите к шагу 1.

Примечание : , , и , соответственно , отражение, расширение, сжатие и уменьшить коэффициенты. Стандартные значения , , и .

Для отражения , поскольку это вершина с более высоким ассоциированным значением среди вершин, мы можем ожидать найти более низкое значение при отражении на противоположной грани, образованной всеми вершинами, кроме .

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

Что касается сжатия , если мы можем ожидать, что лучшее значение будет внутри симплекса, образованного всеми вершинами .

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

Начальный симплекс

Начальный симплекс важен. Действительно, слишком маленький начальный симплекс может привести к локальному поиску, следовательно, NM может легко застрять. Итак, этот симплекс должен зависеть от характера проблемы. Однако в исходной статье был предложен симплекс, в котором начальная точка задается как , а остальные генерируются с фиксированным шагом по каждому измерению по очереди. Таким образом, метод чувствителен к масштабированию составляющих переменных .

Прекращение

Критерии необходимы, чтобы разорвать итерационный цикл. Нелдер и Мид использовали выборочное стандартное отклонение значений функции текущего симплекса. Если они падают ниже некоторого допуска, то цикл останавливается, и самая низкая точка в симплексе возвращается в качестве предлагаемого оптимума. Обратите внимание, что очень «плоская» функция может иметь почти одинаковые значения функции в большой области, так что решение будет чувствительно к допуску. Нэш добавляет тест на усадку в качестве еще одного критерия завершения. Обратите внимание, что программы завершаются, а итерации могут сходиться.

Смотрите также

использованная литература

дальнейшее чтение

внешние ссылки