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

Начальный этап. Пусть e> 0 - скаляр, используемый в критерии остановки, l – длина ребра симплекса, α – коэффициент уменьшения размеров симплекса. Выбрать начальную точку X1, рассчитать вершины исходного симплекса X1, X2, …, Хn+1, определить значение функции в этих вершинах f(X1),…, f(Xn+1) и перейти к основному этапу.

Основной этап. Шаг 1. Определить из n+1 вершин вершину с максимальным значением функции и соответствующий ей номер j. Рассчитать новую вершину Хn+2= Алгоритм симплекс метода - student2.ru . Если f(Xn+2)≤ f(Xj), то Xj=Xn+2 и перейти к шагу 1. В противном случае перейти к шагу 2.

Шаг 2. Если длина ребра Алгоритм симплекс метода - student2.ru £ e, то остановиться; в противном случае провести редукцию симплекса. Выбрать из n+1 вершин вершину с минимальным значением функции и соответствующий ей номер m. Рассчитать вершины нового симплекса Xi= ((1- α )Xm + Xi)/α для i ≠m, вычислить значения функции f(X1),…, f(Xn+1) и перейти к шагу 1.

Пример расчета экстремума функции симплекс-методом.

Постановка задачи. Минимизировать f(X) = (x1 - 2)4 + (х1 - 2х2)2 с точностью e=0,01. Выбираем начальное приближение X(1) = [2.5, 2.5]Т, длину ребра симплекса l=0.5 и коэффициент сжатия симплекса a = 2.

Результаты расчета для данных условий представлены в таблице 2.4, графическая интерпретация метода – на рисунке 2.4.

Таблица 2.4

Результаты расчета минимума функции f(X) = (x1 - 2)4 + (х1 - 2х2)2 симплекс методом.

№ вершины x1 x2 f(X) № вершины x1 x2 f(X)
2.250 2.360 6.1048 2.500 1.520 0.3541
2.500 2.780 9.4261 2.625 1.310 0.1526
2.750 2.360 4.1973 2.750 1.520 0.4005
2.250 2.360 6.1048 2.500 1.520 0.3541
2.500 1.940 1.9669 2.625 1.310 0.1526
2.750 2.360 4.1973 2.375 1.310 0.0798
3.000 1.940 1.7744 2.500 1.100 0.1525
2.500 1.940 1.9669 2.625 1.310 0.1526
2.750 2.360 4.1973 2.375 1.310 0.0798
3.000 1.940 1.7744 2.500 1.100 0.1525
2.500 1.940 1.9669 2.250 1.100 0.0064
2.750 1.520 0.4005 2.375 1.310 0.0798
3.000 1.940 1.7744 2.125 1.310 0.2453
3.250 1.520 2.4855 2.250 1.100 0.0064
2.750 1.520 0.4005 2.375 1.31 0.0798
Редукция симплекса Редукция симплекса
2.88 1.730 0.9284 2.188 1.205 0.0507
2.63 1.730 0.8498 2.313 1.205 0.0190
2.75 1.520 0.4005 2.375 1.310 0.0798
2.50 1.520 0.3541  
2.63 1.730 0.8498
2.75 1.520 0.4005

Из таблицы видно, что на пятой итерации происходит зацикливание симплекса, так как отраженная вершина № 2 вновь становится «наихудшей». После редукции симплекса реализовано семь итераций, после чего вновь появляется эффект зацикливания. В результате чего вновь производится редукция. Полученный симплекс не находится в области экстремума функции. Поэтому проведенная редукция не дает желаемого результата, что говорит о плохой сходимости метода на функциях "овражного" типа.

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

Алгоритм симплекс метода - student2.ru Рис.2.4. Графическая иллюстрация поиска минимума функции симплекс-методом.

Метод Нелдера и Мида.

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

1. Построение начального многогранника. Выбирается произвольной формы многогранник с координатами вершин

Xi(k) = [xi1(k), …, xij(k), …, xin(k)]Т, i = 1,…, n+1.

Индекс (k) будет обозначать k-й этап поиска. Значение целевой функции в Xi(k) равно f(Xi(k)).

2. Расчет координат центра тяжести. Определяют те векторы х многогранника, которые дают максимальное и минимальное значение f(X), а именно

f(Xh(k)) = max{f(X1(k)), …, f(Xn+1(k)); f(Xl(k)) = min{ f(X1(k)), …, f(Xn+1(k)).

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

Алгоритм симплекс метода - student2.ru , j = 1, …, n,

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

3. Отражение. Представляет проектирование Xh(k) через центр тяжести в соответствии с соотношением

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

где a > 0 - коэффициент отражения;

Xh(k) - вершина, в которой функция f(X) имеет наибольшее значение.

В обычном симплексе a = 1.

4. Растяжение. Происходит в случае, если Алгоритм симплекс метода - student2.ru . Вектор ( Алгоритм симплекс метода - student2.ru ) увеличивается в соответствии с соотношением

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

где g > 1 - коэффициент растяжения.

Если Алгоритм симплекс метода - student2.ru , то Алгоритм симплекс метода - student2.ru заменяется на Алгоритм симплекс метода - student2.ru и процедура продолжается с этапа 2 при k = k + 1. Иначе Алгоритм симплекс метода - student2.ru заменяется на Алгоритм симплекс метода - student2.ru и также осуществляется переход к этапу 2 при k = k + 1.

5. Сжатие. Если Алгоритм симплекс метода - student2.ru для всех i ¹ h, то вектор ( Алгоритм симплекс метода - student2.ru ) уменьшается в соответствии с формулой

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

где 0 < b < 1 - коэффициентом сжатия.

Затем Алгоритм симплекс метода - student2.ru заменить на Алгоритм симплекс метода - student2.ru и происходит возврат к операции 2 при k = k + 1.

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

Алгоритм симплекс метода - student2.ru Алгоритм симплекс метода - student2.ru , i=1, …, n+1.

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

Для окончания поиска Нилдер и Мид используют критерий вида

Алгоритм симплекс метода - student2.ru £ e ,

где e- заданная точность поиска;

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

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