Выпуклый симплексный метод Зангвилла (АОИ)

Рассмотрим алгоритм выпуклого симплексного метода Зангвилла для решения задачи минимизации 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)

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru n = индекс, для которого a = -rn ; (7)

или (!!!)

индекс, для которого b = xnrn ( 8)

Если a = b = 0, то остановиться.

Если a > b, то вычислить dN в соответствии с (7) и (9):

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru 0, если j Ï Ik; j ¹ n

dj = (9)

1, если j Ï Ik; j = n ,

т.е.для данного случая(a > b) из множества N только

одному направлению( j = n ) придается значение 1,

остальным 0.

Если a < b , то вычислить dN по формулам (8), (10) :

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru 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 ,

где Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru

Пусть lk - оптимальное решение этой задачи.

Положить

xk+1 = xk + lkdk,

(заменить k на k+1,т.е.задать новые начальные условия поиска)

И перейти к шагу 1.

Пример

Минимизировать

I = 2x12 + 2x22 – 2x1x2 – 4x1 – 6x2

при условиях

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru 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}, поэтому

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru .

Приведенный градиент вычисляется в соответствии с (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 допустима, определяется по формуле :

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru

Кроме того, имеем 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},

Т.е.

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru ,

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru

Ñf(x2) = (-6; -2; 0; 0)T.

При этом приведенный градиент (4)

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru

В соответствии с (5) и (6) имеем

a = max{-r1, -r2, -r3} = -r1=

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru ;

b = max{x2r2; x3r3; x4r4} = 0,

т.е. a > b, и тогда получаем

согласно (7) : n = 1.

Согласно (9), (11) имеем

dNT = (d1, d4) = (1; 0) .

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru

Тогда 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):

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru .

Кроме того, f(x2 + xd2) = 2,48l2 – 5,6l - 4.

Следовательно, нужно решить следующую задачу: минимизировать 2,48l2 – 5,6l - 4 при условии 0 £ l £ Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru

Оптимальное решение равно l2= Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru ,

т.е. x3 = x2 + l2d2 =

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru

Итерация 3

Поиск направления.

В точке x3 множество I3 = (1,2) , т.е.

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru

Выпуклый симплексный метод Зангвилла (АОИ) - student2.ru

Из (4) получаем rT = (0;0;0;1). В этом случае a = max{-r1, -r2, -r3} = 0,

b = max(x1r1; x2r2; x3r3; x4r4) = 0.

Таким образом, точка x3 оптимальна. Оптимальное значение целевой функции

I = -7,16.

Для практических расчетов целесообразно сочетать метод Зангвилла и метод ДФП.Метод Зангвилла более прост для определения направления минимизации, а для поиска минимума в выбранном направлении удобен метод ДФП.

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