Алгоритм метода покоординатного спуска

1. Задается точность вычисления Алгоритм метода покоординатного спуска - student2.ru , начальный шаг Алгоритм метода покоординатного спуска - student2.ru , минимально допустимый шаг Алгоритм метода покоординатного спуска - student2.ru , точка начального приближения Алгоритм метода покоординатного спуска - student2.ru , порядковый номер итерации k=0 и вычисляется Алгоритм метода покоординатного спуска - student2.ru .

2. Запоминаем Алгоритм метода покоординатного спуска - student2.ru .

3. Начинаем поиск параллельно оси Охi : Алгоритм метода покоординатного спуска - student2.ru ,если Алгоритм метода покоординатного спуска - student2.ru , переходим к п. 11 , иначе к п. 4.

4. Задаем шаг Алгоритм метода покоординатного спуска - student2.ru .

5. Задаем знак Алгоритм метода покоординатного спуска - student2.ru .

6. Вычисляем Алгоритм метода покоординатного спуска - student2.ru в соответствии с формулой (1.6) и значение функции в новой точке.

7. Если новое значение функции меньше предыдущего, то принимаем Алгоритм метода покоординатного спуска - student2.ru как Алгоритм метода покоординатного спуска - student2.ru , Алгоритм метода покоординатного спуска - student2.ru запоминаем как Алгоритм метода покоординатного спуска - student2.ru и возвращаемся к п. 6, иначе меняем знак Алгоритм метода покоординатного спуска - student2.ru на противоположный.

8. Если знак Алгоритм метода покоординатного спуска - student2.ru ,то переходим к п. 6, иначе к п. 9.

9. Уменьшим величину шага Алгоритм метода покоординатного спуска - student2.ru .

10. Если текущий шаг Алгоритм метода покоординатного спуска - student2.ru , то переходим к п. 3, иначе к п. 5.

11. Проверка условия достижения заданной точности: Алгоритм метода покоординатного спуска - student2.ru и если оно выполняется, то переходим к п. 12, иначе к п. 2.

12. Завершить вычисления, приняв за точку минимума Алгоритм метода покоординатного спуска - student2.ru последнее значение Хk, Алгоритм метода покоординатного спуска - student2.ru

4. Текст программы.

Смотри приложение №1.

  1. Метод деформируемого многогранника (метод Нелдера — Мида).

Метод Нелдера — Мида, также известный как метод деформируемого многогранника и симплекс-метод, — метод безусловной оптимизации функции от нескольких переменных, не использующий градиентов функции, а поэтому легко применим к негладким и/или зашумлённым функциям.

В методе Нелдера и Мида минимизируется функция n независимых переменных с использованием n+1 вершин деформируемого многогранника в En. Каждая вершина может быть идентифицирована вектором x. Вершина (точка) в En, в которой значение f(x) максимально, проектируется через центр тяжести (центроид) оставшихся вершин. Улучшенные (более низкие) значения целевой функции находятся последовательной заменой точки с максимальным значением f(x) на более «хорошие точки», пока не будет найден минимум f(x).

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

Параметрами метода являются:

· коэффициент отражения α > 0, обычно выбирается равным 1.

· коэффициент сжатия β > 0, обычно выбирается равным 0,5.

· коэффициент растяжения γ > 0, обычно выбирается равным 2.

Алгоритм метода.

Пусть Алгоритм метода покоординатного спуска - student2.ru , является i-й вершиной (точкой) в En на k-м этапе поиска, k=0, 1, …, и пусть значение целевой функции в x(k)i равно f(x(k)i). Кроме того, отметим те векторы x многогранника, которые дают максимальное и минимальное значения f(x).

Определим

Алгоритм метода покоординатного спуска - student2.ru

Алгоритм метода покоординатного спуска - student2.ru

Алгоритм метода покоординатного спуска - student2.ru

Алгоритм метода покоординатного спуска - student2.ru Поскольку многогранник в En состоит из (n+1) вершин x1, …,xn+1, пусть xn+2 будет центром тяжести всех вершин, исключая xh.

Тогда координаты этого центра определяются формулой

Алгоритм метода покоординатного спуска - student2.ru (1.7)

где индекс j обозначает координатное направление.

Начальный многогранник обычно выбирается в виде регулярного симплекса (но это не обязательно) с точкой 1 в качестве начала координат; можно начало координат поместить в центр тяжести. Процедура отыскания вершины в En, в которой f(x) имеет лучшее значение, состоит из следующих операций:

1. Отражение – проектирование Алгоритм метода покоординатного спуска - student2.ru через центр тяжести в соответствии с соотношением
Алгоритм метода покоординатного спуска - student2.ru (1.8)
где a>0 является коэффициентом отражения; Алгоритм метода покоординатного спуска - student2.ru – центр тяжести, вычисляемый по формуле (1); Алгоритм метода покоординатного спуска - student2.ru – вершина, в которой функция f(x) принимает наибольшее из n+1 значений на k-м этапе.

2. Растяжение. Эта операция заключается в следующем: если Алгоритм метода покоординатного спуска - student2.ru , то вектор Алгоритм метода покоординатного спуска - student2.ru растягивается в соответствии с соотношением
Алгоритм метода покоординатного спуска - student2.ru (1.9)
где g>1 представляет собой коэффициент растяжения. Если Алгоритм метода покоординатного спуска - student2.ru , то Алгоритм метода покоординатного спуска - student2.ru заменяется на Алгоритм метода покоординатного спуска - student2.ru и процедура продолжается снова с операции 1 при k=k+1. В противном случае Алгоритм метода покоординатного спуска - student2.ru заменяется на Алгоритм метода покоординатного спуска - student2.ru и также осуществляется переход к операции 1 при k=k+1.

3. Сжатие. Если Алгоритм метода покоординатного спуска - student2.ru для всех i¹h, то вектор Алгоритм метода покоординатного спуска - student2.ru сжимается в соответствии с формулой
Алгоритм метода покоординатного спуска - student2.ru (1.10)
где 0<b<1 представляет собой коэффициент сжатия. Затем Алгоритм метода покоординатного спуска - student2.ru заменяем на Алгоритм метода покоординатного спуска - student2.ru и возвращаемся к операции 1 для продолжения поиска на (k+1)-м шаге.

4. Редукция. Если Алгоритм метода покоординатного спуска - student2.ru , все векторы Алгоритм метода покоординатного спуска - student2.ru уменьшаются в 2 раза с отсчётом от Алгоритм метода покоординатного спуска - student2.ru в соответствии с формулой
Алгоритм метода покоординатного спуска - student2.ru (1.11)

Затем возвращаемся к операции 1 для продолжения поиска на (k+1)-м шаге.

Критерий окончания поиска, использованный Нелдером и Мидом, состоял в проверке условия

Алгоритм метода покоординатного спуска - student2.ru (1.12)

где e – произвольное малое число, а Алгоритм метода покоординатного спуска - student2.ru – значение целевой функции в центре тяжести Алгоритм метода покоординатного спуска - student2.ru .

На рис.2 приведена блок-схема поиска методом деформируемого многогранника

Алгоритм метода покоординатного спуска - student2.ru Пуск

 
  Алгоритм метода покоординатного спуска - student2.ru

Алгоритм метода покоординатного спуска - student2.ru Вычислить начальные значения

xi(0), i = 1, 2, …, n+1, и f(x(0))

начального симплекса

 
  Алгоритм метода покоординатного спуска - student2.ru

Алгоритм метода покоординатного спуска - student2.ru Алгоритм метода покоординатного спуска - student2.ru Вычислить xh и xl и c

 
  Алгоритм метода покоординатного спуска - student2.ru

Отражение: вычислить

xn+3 = xn+2 + a(xn+2 - xn)

 
  Алгоритм метода покоординатного спуска - student2.ru

Вычислить

f(xn+3)

       
  Алгоритм метода покоординатного спуска - student2.ru
    Алгоритм метода покоординатного спуска - student2.ru

Нет
Выполняется ли

Алгоритм метода покоординатного спуска - student2.ru неравенство

f(xn+3) < f(xh) ?

       
  Алгоритм метода покоординатного спуска - student2.ru
   
Да
 

Алгоритм метода покоординатного спуска - student2.ru Растяжение: вычислить

xn+4 = xn+2 + g(xn+3 - xn+2)

 
  Алгоритм метода покоординатного спуска - student2.ru

Вычислить f(xn+4)

 
  Алгоритм метода покоординатного спуска - student2.ru

Алгоритм метода покоординатного спуска - student2.ru Алгоритм метода покоординатного спуска - student2.ru Выполняется ли

неравенство

f(xn+4) < f(xl) ?

 
  Алгоритм метода покоординатного спуска - student2.ru

Алгоритм метода покоординатного спуска - student2.ru Заменить

xh на xn+4

               
    Алгоритм метода покоординатного спуска - student2.ru
 
   
Нет
 
    Алгоритм метода покоординатного спуска - student2.ru
 
  Алгоритм метода покоординатного спуска - student2.ru

Выполняется ли

неравенство f(xn+3) < f(xi)

для всех i ¹ h ?

                       
    Алгоритм метода покоординатного спуска - student2.ru
     
Нет
 
 
    Алгоритм метода покоординатного спуска - student2.ru
   
Нет
 
 
 
Да
 
   
Нет

Алгоритм метода покоординатного спуска - student2.ru Заменить

xh на xn+3

           
   
Нет
 
    Алгоритм метода покоординатного спуска - student2.ru
 
  Алгоритм метода покоординатного спуска - student2.ru

Алгоритм метода покоординатного спуска - student2.ru Алгоритм метода покоординатного спуска - student2.ru

 

Рис. 2
Выполняется ли

неравенство

f(xn+3) < f(xh) ?

               
 
Да
 
    Алгоритм метода покоординатного спуска - student2.ru   Алгоритм метода покоординатного спуска - student2.ru
   
Да
 
 

Заменить

xh на xn+3

Алгоритм метода покоординатного спуска - student2.ru

Сжатие: вычислить

xn+5 = xn+2 + b(xh - xn+2)

 
  Алгоритм метода покоординатного спуска - student2.ru

Алгоритм метода покоординатного спуска - student2.ru Вычислить f(xn+5)

 
  Алгоритм метода покоординатного спуска - student2.ru

Выполняется ли

неравенство

f(xn+5) > f(xh) ?

       
  Алгоритм метода покоординатного спуска - student2.ru   Алгоритм метода покоординатного спуска - student2.ru
 

Заменить

Да
xh на xn+5

       
  Алгоритм метода покоординатного спуска - student2.ru
    Алгоритм метода покоординатного спуска - student2.ru
 

Редукция: заменить

все xi на xl + 1/2(xi - xl)

           
    Алгоритм метода покоординатного спуска - student2.ru
 
 
Да
    Алгоритм метода покоординатного спуска - student2.ru
 

Останов

7. Текст программы.

Смотри приложение №1.

Задание.

Используя метод покоординатного спуска или метод деформированного многогранника, реализовав их в виде программ на Turbo Pascal, найти минимум следующих функций:

1) f(X)=x12+ x22 +x32+ x1–x1 *x2-2x3

2) f(X)=100( x2 –x12) 2+ (1-x1)2

3) f(X)=( x2 –x12) 2+ (1-x1*x2)2

4) f(X)=5x12+ x22 + 4x1 *x2-16x1-12x2

5) f(X= х12 + 4х22 –4х1 –8х2 + 5

Лабораторная работа №2.

Наши рекомендации