Выпуклый симплексный метод Зангвилла (АОИ)
Рассмотрим алгоритм выпуклого симплексного метода Зангвилла для решения задачи минимизации f(x) при условии
А(1,1)Х(1,0) = b(1,0);
Х(1,0) ³ 0.
Начальный этап.
Выбрать точку Х1, для которой
АХ1 = b ;
Х1 ³ 0.
Положить k = 1 и перейти к основному этапу.
Основной этап.
Шаг 1. При заданном Xk определить Ik – множество индексов m
наибольших (арифметически,т.е. не по модулю) компонент вектора Xk;
B(1,1) = {aj½j Î Ik};
N(1,1) = {aj½j Ï Ik} ; (3)
r(0,1) = Ñf(Xk)T - Ñbf(Xk)T ×B-1 × A ; (4)
a = max{-rj½выбирать из rj £ 0}; (5)
b = max{xiri½ выбирать из rj ³ 0}; (6)
n = индекс, для которого a = -rn ; (7)
или (!!!)
индекс, для которого b = xnrn ( 8)
Если a = b = 0, то остановиться.
Если a > b, то вычислить dN в соответствии с (7) и (9):
0, если j Ï Ik; j ¹ n
dj = (9)
1, если j Ï Ik; j = n ,
т.е.для данного случая(a > b) из множества N только
одному направлению( j = n ) придается значение 1,
остальным 0.
Если a < b , то вычислить dN по формулам (8), (10) :
0, если j Ï Ik; j ¹ n
dj = -1, если j Ï Ik; j = n (10),
т.е.для данного случая(a < b) из множества N только
одному направлению( j = n ) придается значение( -1),
остальным 0.
Если a = b ¹ 0, то вычислить dN либо по формулам (7), (9), либо по формулам (8), (10).
В любом случае определить dB в соответствии с (11)
dB = B-1 × N × dN (11)
И перейти к шагу 2.
Шаг 2
Минимизировать f(xk + ldk) при условии 0 £ l £ lmax ,
где
Пусть lk - оптимальное решение этой задачи.
Положить
xk+1 = xk + lkdk,
(заменить k на k+1,т.е.задать новые начальные условия поиска)
И перейти к шагу 1.
Пример
Минимизировать
I = 2x12 + 2x22 – 2x1x2 – 4x1 – 6x2
при условиях
x1 + x2 + x3 = 2 ,
x1 + 5x2 + x4 = 5 ,
x1, x2, x3, x4 ³ 0 .
Решим задачу выпуклым симплексным методом Зангвилла.
Возьмем в качестве начальной точки x1 = (0;0;2;5)T. Заметим, что
Ñf(x) = (4x1 – 2x2 – 4; 4x2 – 2x1 – 6; 0; 0)T.
Итерация 1
Поиск направления минимизации.
В точке х1 имеем r(0,1) =Ñf(x1)={-4; -6; 0; 0}.
Соответственно алгоритму I1 = {3,4}, поэтому
.
Приведенный градиент вычисляется в соответствии с (4) :
rT = (-4; -6; 0; 0) .
В соответствии с (5) получаем
a = max{-r1, -r2, -r3, -r4} = -r2 = 6.
Из (6) имеем b = max{x3 r3, x4r4} = 0
ИТАК, a > b,
И, следовательно, из (7) получаем, что
n = 2.
Построение направления проводится по формулам (9) и (11).
Из (9) имеем dNT = (d1, d2) = (0;1), а из (11) следует, что
dBT = {d3, d4} = =(-1; -5).
Линейный поиск из точки х1(0,0,2,5)Т осуществляется по направлению d1 = {0;1;-1;-5}T. Максимальное значение l, для которого точка x1 + ld1 допустима, определяется по формуле :
Кроме того, имеем f(x1 + ld1) = 2l2 - 6l . Следовательно, нужно решить задачу минимизации 2l2 - 6l при условии
0 £ l £ 1. Оптимальным решением является l =1, так что х2 = х1 + ld1 = (0,1,1,0)T.
Итерация 2
Поиск направления минимизации.
В точке х2 = (0, 1, 1, 0) множество I2 = {2;3},
Т.е.
,
Ñf(x2) = (-6; -2; 0; 0)T.
При этом приведенный градиент (4)
В соответствии с (5) и (6) имеем
a = max{-r1, -r2, -r3} = -r1=
;
b = max{x2r2; x3r3; x4r4} = 0,
т.е. a > b, и тогда получаем
согласно (7) : n = 1.
Согласно (9), (11) имеем
dNT = (d1, d4) = (1; 0) .
Тогда d2 = (1; -0,2; -0,8; 0).
Линейный поиск.
Из точки x2 = (0,1,1,0)T по направлению
d2 = (1, -0,2; -0,8; 0)T.
Максимальное значение l, для которого точка (x2 + ld2) допустима, определяется по формуле (32):
.
Кроме того, f(x2 + xd2) = 2,48l2 – 5,6l - 4.
Следовательно, нужно решить следующую задачу: минимизировать 2,48l2 – 5,6l - 4 при условии 0 £ l £
Оптимальное решение равно l2= ,
т.е. x3 = x2 + l2d2 =
Итерация 3
Поиск направления.
В точке x3 множество I3 = (1,2) , т.е.
Из (4) получаем rT = (0;0;0;1). В этом случае a = max{-r1, -r2, -r3} = 0,
b = max(x1r1; x2r2; x3r3; x4r4) = 0.
Таким образом, точка x3 оптимальна. Оптимальное значение целевой функции
I = -7,16.
Для практических расчетов целесообразно сочетать метод Зангвилла и метод ДФП.Метод Зангвилла более прост для определения направления минимизации, а для поиска минимума в выбранном направлении удобен метод ДФП.