![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Метод Нелдера-Мида. Метод не позволяет учесть ограничения, которые могут быть наложены на оптимизируемые параметры
Метод не позволяет учесть ограничения, которые могут быть наложены на оптимизируемые параметры. Математическая постановка задачи такова. Требуется найти безусловный минимум функции x*Î Rn, что где n – число параметров оптимизации, f – скалярная нелинейная функция. Описание алгоритма. В методе Нелдера–Мида вокруг начальной точки поиска в пространстве переменных размещается начальный симплекс – конфигурация из (n+1)- й точки. Для двух переменных симплексом является треугольник, а для трех переменных симплексом является пирамида. Вершина треугольника или пирамиды, в которой функция принимает наибольшее значение, отбрасываются. Формируется новый симплекс и поиск продолжается. В процессе поиска уменьшается размер треугольника и значение функции в его вершинах. Конкретные действия сводятся к следующим операциям, которые описаны применительно к функции двух переменных. Операция отражения. Первоначально задаются три вершины треугольника A, B и C. В них вычисляются значение функции. Точки упорядочиваются по возрастанию функций. Пусть A наихудшая вершина, а B и C, соответственно, наилучшая и хорошая. Определяется средняя точка лучшей стороны Операция растяжения. Если функция в точке M меньше, чем в точке A, то прямая продолжается до точки E. Если функция в точке E меньше, чем в точке R, то найдена лучшая вершина. Операция сжатия. Если функции в точках R и A совпадают, то необходимо обследовать две точки D1 и D2. Они располагаются на серединах отрезков AM и MR. Симплекс всегда должен состоять из трех точек и поэтому новая точка не может занять место точки M. Из точек D1 и D2 выбирается лучшая и обозначается D. Получим новый треугольник BCD. Операция сокращения. Если функция в точке D не меньше, чем значение функции в точке A, то производим сокращение треугольника ABС до треугольника SBM. Стороны сокращаются вдвое. На каждом шаге вычислений определяется лишь одна вершина. На рис. 5.5 описанные операции проиллюстрированы графически. Точки А, В и С являются точками исходного симплекса. Значения функций в этих точках обозначены f(А), f(В), f(С). В зависимости от соотношений между функциями происходит выполнение соответствующей операции. Алгоритм выполнения операций показан в таблице № 5.1.
Таблица № 5.1
Если f(R)< f(B), то выполняется случай (i) (либо отражение, либо растяжение) Иначе выполняется случай (ii) (либо сжатие, либо сокращение). На рис.5.5 смысл описанных операций пояснен графически.
Рис. 5.5 Опишем алгоритм метода более подробно применительно к функции двух переменных.
(A) Определим значения функции:
(Б).Найдем наибольшее значение функции и обозначим его fh,, следующее за ним по величине значение функции обозначим fg и наименьшее значение функции обозначим fl. Соответствующие им точки вершин обозначим (B) Найдем центр тяжести всех точек, за исключением точки хh. Пусть центром тяжести будет:
(Г) Удобнее всего начать перемещение от точки xh. Отразив точку х h относительно точки х 0, получим точку хг и найдем f(xr) = fr. Операция отражения иллюстрируется рис. 5.6. Если α > 0 — коэффициент отражения, то положение точки
Замечание, α = (Д) Сравним значения функций fr и fl. 1. Если fr < fl, то мы получили наименьшее значение функции. Направление из точки
Рис. 5.6 Рис. 5.7 хе – х 0 = γ (хr-х0), т. е. хе=γ хr + (1-γ) хо. (5.4) Замечание, γ = | хe —х0| / |хr -х0 |. а) Если fе < fl, то заменяем точку х h на точку хе и проверяем (n +1)-ую точку симплекса на сходимость к минимуму (см. шаг З). Если б) Если fe > fl, то отбрасываем точку хе. Очевидно, мы переместились 2. Если fr > fl, но fr < = fg, то хr является лучшей точкой по сравнению с другими двумя точками симплекса и мы заменяем точку xh на точку хr и, если сходимость не достигнута, возвращаемся на шаг Б, т. е. выполняем пункт 1, б, описанный выше. 3. Если fr > fl и fr > fg, то перейдем на шаг Е. (E) Сравним значения функций fr и fh. 1. Если fr > fh, то переходим непосредственно к шагу сжатия Е, 2. Если fr < fh то заменяем точку xh на точку х r и значение функции fh на значение функции fr. Запоминаем значение fr > fg из шага Д, 2, приведенного выше. Затем переходим на шаг Е, 2. 2. В этом случае fr > fh, поэтому ясно, что мы переместились слишком далеко от точки xh к точке х0. Попытаемся исправить это, найдя точку хс (а затем fc) с помощью шага сжатия, показанного на рис. 5.8. Если fr > fh, то сразу переходим к шагу сжатия и находим точку хс из соотношения xc-x0=β (xh - х0), где β (0 < β < 1) — коэффициент сжатия. Тогда xc= β xh + (l - β) x o. (5.5) Если fr < fh, то сначала заменим точку xh на точку хr, а затем произведем сжатие. Тогда точку хс найдем из соотношения хс -xо = β (хr - x о), т. е. хс= β хr + (1- β)х0 (см. рис. 5.9). (5.6)
Рис. 5.8 Рис. 5.9
(Ж) Сравним значения функций fc и fh. 1. Если fc < fh, то заменяем точку хh на точку хс, и, если сходимость не достигнута, то возвращаемся на шаг Б. 2. Если fc > fh, то очевидно, что все наши попытки найти значение меньшее Д закончились неудачей, поэтому мы переходим на шаг З. (З) На этом шаге мы уменьшаем размерность симплекса делением пополам расстояния от каждой точки симплекса до хl — точки, определяющей наименьшее значение функции. Таким образом, точка xi заменяется на точку xi + ½ (xi – хl), т. е. заменяем точку xl- точкой ½ (хi+xl). (5.7) Затем вычисляем fi для i = 1, 2,..., (п +1), проверяем сходимость и, если она не достигнута, возвращаемся на шаг В. (И) Проверка сходимости основана на том, чтобы стандартное отклонение (п + 1)-го значения функции было меньше некоторого заданного малого значения ε. В этом случае вычисляется
где Эта процедура представлена далее в виде программы №1 на языке Турбо Паскаль. Коэффициенты α, β, γ в вышеприведенной процедуре являются соответственно коэффициентами отражения, сжатия и растяжения. Нелдер и Мид рекомендуют брать α = 1, β = 0, 5 и γ = 2. Рекомендация основана на результатах экспериментов с различными комбинациями значений. Эти значения параметров позволяют методу быть эффективным, но работать в различных сложных ситуациях. Начальный симплекс выбирается так: х2 = х3 = хn+1 = где точка Метод эффективен до n
|