Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






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

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

x*Î Rn, что , (5.1)

где - вектор параметров оптимизации,

n – число параметров оптимизации, f – скалярная нелинейная функция.

Описание алгоритма.

В методе Нелдера–Мида вокруг начальной точки поиска в пространстве переменных размещается начальный симплекс – конфигурация из (n+1)- й точки. Для двух переменных симплексом является треугольник, а для трех переменных симплексом является пирамида. Вершина треугольника или пирамиды, в которой функция принимает наибольшее значение, отбрасываются. Формируется новый симплекс и поиск продолжается. В процессе поиска уменьшается размер треугольника и значение функции в его вершинах. Конкретные действия сводятся к следующим операциям, которые описаны применительно к функции двух переменных.

Операция отражения. Первоначально задаются три вершины треугольника A, B и C. В них вычисляются значение функции. Точки упорядочиваются по возрастанию функций. Пусть A наихудшая вершина, а B и C, соответственно, наилучшая и хорошая. Определяется средняя точка лучшей стороны . Проводится прямая через худшую вершину A и среднюю точку M до точки R. При этом AM=MR. См. рис. 5.5.

Операция растяжения. Если функция в точке 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

.1 begin {случай (i)} if f(B)< f(R) then замена А на B else вычисление Е и f(E) if f(E)< f(B) then замена А на Е else замена А на R end if end {случай (i)} begin {случай (ii)} if f(R)< f(A) then замена А на R вычисление C=(M+R)/2 или D=(M+R)/2 и f(D) if f(D)< f(A) then замена А на D else вычисление S и f(S) замена А на S замена С на М end if end {случай (ii)}

Если f(R)< f(B), то выполняется случай (i) (либо отражение, либо растяжение)

Иначе выполняется случай (ii) (либо сжатие, либо сокращение).

На рис.5.5 смысл описанных операций пояснен графически.

 

 

Рис. 5.5

Опишем алгоритм метода более подробно применительно к функции двух переменных.

 

(A) Определим значения функции:

в вершинах симплекса.

(Б).Найдем наибольшее значение функции и обозначим его fh,, следующее за ним по величине значение функции обозначим fg и наименьшее значение функции обозначим fl. Соответствующие им точки вершин обозначим .

(B) Найдем центр тяжести всех точек, за исключением точки хh. Пусть цент­ром тяжести будет:

и вычислим f (х0) = f0. (5.2)

(Г) Удобнее всего начать перемещение от точки xh. Отразив точку х h отно­сительно точки х 0, получим точку хг и найдем f(xr) = fr.

Операция отражения иллюстрируется рис. 5.6. Если α > 0 — коэффициент отражения, то положение точки определяется следующим образом:

(5.3)

Замечание, α =

(Д) Сравним значения функций fr и fl.

1. Если fr < fl, то мы получили наименьшее значение функции. Направле­ние из точки в точку хr наиболее удобно для перемещения. Таким об­разом, мы производим растяжение в этом направлении и находим точку хе и значение функции fe = f(xe). Рисунок 5.7 иллюстрирует операцию растяжения симплекса. Коэффициент растяжения γ > 1 можно найти из следующих соотношений:

 

 

Рис. 5.6 Рис. 5.7

хех 0 = γ (хr0),

т. е.

хе=γ хr + (1-γ) хо. (5.4)

Замечание, γ = | хe —х0| / r0 |.

а) Если fе < fl, то заменяем точку х h на точку хе и проверяем (n +1)-ую точку симплекса на сходимость к минимуму (см. шаг З). Если
сходимость достигнута, то процесс останавливается; в противном слу­-
чае возвращаемся на шаг Б.

б) Если fe > fl, то отбрасываем точку хе. Очевидно, мы переместились
слишком далеко от точки х0 к точке хr. Поэтому следует заменить точ­-
ку xh на точку хr, в которой было получено улучшение (шаг Д, 1),
проверить сходимость и, если она не достигнута, вернуться на шаг В.

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)-го значения функции было меньше некоторого заданного малого значения ε. В этом случае вычисляется

(5.8)

где Если σ < ε, то все значения функции очень близки друг к другу, и поэтому они, возможно, лежат вблизи точки минимума функции хl. Исходя из этого, такой критерий сходимости является разумным, хотя Бокс, Дэвис и Свенн [13] предлагают то, что они считают более " безопасной" проверкой.

Эта процедура представлена далее в виде программы №1 на языке Турбо Паскаль.

Коэффициенты α, β, γ в вышеприведенной процедуре являются соответ­ственно коэффициентами отражения, сжатия и растяжения. Нелдер и Мид ре­комендуют брать α = 1, β = 0, 5 и γ = 2. Рекомендация основана на результатах экспериментов с различными комбинациями значений. Эти значения пара­метров позволяют методу быть эффективным, но работать в различных сложных ситуациях.

Начальный симплекс выбирается так:

х2 = + 1 , (5.9)

х3 = + 2,

хn+1 = + n ,

где точка является начальной точкой, k - произвольная длина шага, а e j - единичный вектор.

Метод эффективен до n 6. Для функций, имеющих “овраги”, может происходить вырождение симплекса и тогда продолжать расчеты невозможно. Это чаще всего происходит при числе переменных больше двух.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.