Обоснование метода потенциалов

Метод потенциалов основан на второй теореме двойственности для задачи линейного программирования для двойственной задачи.

Если переменная Xij≠0, то соответствующее решение двойственной задачи:

Xij≠0 Ui + Vj = Cij =› Ui º 0

xlk = 0 Ul + Vk < Clk Clk - Ul - Vk > 0

alk > 0, если нет, то строим новое начальное решение и т.д.

Если alk = 0, то имеет место альтернативный оптимум и выполняется еще одна операция и этот элемент выбирается за разрешающий.

Vj Ui V1 V2 V3 V4
       
U1       2     3 2 4     3
U2 -1 4 5 1   3     1   2
U3 -2 2 2     1 4   4 1   2
U4 -2     0 -1 0 0 0 -1   0

U1 + V1 = 2 U1 = 0

U1 + V2 = 3 V1 = 2

U1 + V3 = 1 V4 = 3

U1 + V4 = 3 V2 = 3

U2 + V3 = 1 U2 = -1

U2 + V4 = 2 V3 = 2

U3 + V2 = 1 U3 = -2

U4 + V1 = 0 U4 = -2

Ui + Vj = Cij

 
 


Ui = Cij - Vj

Vj = Cij – Ui, U1 º 0

Ui + Vj < Cij

Vxij* = 0

Ui + Vj < Cij

alk = Clk - Ui - Vi > 0

alk = 0

Решение не оптимальное, находим следующее решение.

(r, s) = {l; k │ min alk < 0} = (4,2)

min alk = -1

X0=   +20 40-      
           
           
  -30 0*+      

Строим цикл, начиная с разрешающего элемента 0*, таким образом, чтобы в вершинах его были ненулевые элементы.

Помечаем вершины, начиная с разрешающего нуля, чередованием знаков + -.

Θ1 = min {xlk-}= min {40,30} = 30

X1=     +10   30-  
           
           
    -30   0*+  

fo(x1) = 2·50 + 3·10 + 3·30 + 1·20 + 2·10 + 1·40 + 0·30 = 300

fo(x1) = fo(x0) + Θ1 (∑Cpq+ - ∑Cef-) = 330 + 30 · (2 + 0 – 3 + 0) = 300

Vj Ui V1 V2 V3 V4
       
U1       2     3 2 4     3
U2 -1 4 5 1   3     1   2
U3 -2 2 2     1 4   4 4   2
U4 -3 -1   0     0 1 0 -1   0

На каждом этапе необходимо делать проверку:

Cij = Ui + Vj – проверка.

alk = Clk – Ul - Vk

a44 = 0, то имеет место альтернативный оптимум.

Q2 = min [30-; 30-] = 0

X2*=     40      
           
           
    0-      

fo(x2*) = 2·50 + 3·40 + 1·20 + 2·10 + 1·40 + 0·30 = 300

fo(x2*) = fo(x1*) + 30*(3 + 0 – 3 – 0)


Vj Ui V1 V2 V3 V4
       
U1       2     3 2 4     3
U2 -1 4 5 1   3     1   2
U3 -2 2 2     1 4   4 1   2
U4 -3 1   0     0 1 0     0

Ответ: fo(x*) = 300

X2*=            
           
           
           

Для нахождения значимого нуля выбирается минимальное из оставшихся Cij, если при этом нельзя найти потенциалы, то значимый ноль выбирается таким образом, чтобы можно было найти потенциалы.



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: