Симплекс

advertisement
Симплекс-метод
Лекции 6, 7
Симплекс-метод с естественным
базисом
Симплекс –метод основан на
переходе от одного опорного плана к
другому, при котором значение целевой
функции возрастает при условии, что
задача имеет оптимальный план и
каждый опорный план является
невырожденным.
Этот переход возможен, если
известен какой-либо опорный план.
В этом случае каноническая задача
линейного программирования должна
содержать единичную подматрицу
порядка m
Тогда очевиден первоначальный
опорный план( неотрицательное
базисное решение системы
ограничений КЗЛП).
Рассмотрим задачу, для которой это возможно.
Пусть требуется найти максимальное значение
функции
F  c1 x1  c2 x2  ...  cn xn
при условиях
 x1  a1m 1 xm 1  ...  a1n xn  b1 ,
 x  a x  ...  a x  b ,
 2 2 m 1 m 1
2n n
2

.............................................,
 xm  amm 1 xm 1  ...  amn xn  bm ,
x j  0, ( j  1, n).
Здесь aij , bi , c j (i  1, m, j  1, n) -заданные
постоянные числа, причем m  n, bi  0.
Перепишем ЗЛП в векторной
форме: найти максимум
n
функции
F  cjxj
j 1
при условиях
Здесь
x1 P1  x2 P2  ...  xn Pn  P0 ,
x j  0 ( j  1, n).
 b1 
1
0
 
 
 
b
0
1
2 




P0 
; P1 
; P2 
;...;
 ... 
 ... 
 ... 
 
 
 
0
0
 bm 
 a1m 1 
 a1n 
0




 
a
a
0
Pm    ; Pm 1   2 m 1  ; Pn   2 n  .
 ... 
 ... 
 ... 




 
a
a
1
 
 mm 1 
 mn 
Так как b1P1  b2 P2  ...  bm Pm  P0
,
то по определению опорного плана
X  (b1 , b2 ,..., bm ,0,0,...,0)
,
где последние компоненты вектора
равны нулю, является опорным планом
Опорный план называется
невырожденным, если он содержит m
положительных компонент. В противном
случае он называется вырожденным.
План, при котором целевая функция
ЗЛП принимает свое максимальное
(минимальное ) значение , называется
оптимальным
Этот план определяется системой
единичных векторов , которые образуют
базис m-векторного пространства.
Проверка на оптимальность
опорного плана происходит с помощью
критерия оптимальности.
Признак оптимальности.
1)Опорный план ЗЛП является
оптимальным, если
m
 j  z j  c j   ci aij  c j  0
i 1
для любого
j  1, n
.
2)Если для некоторого j=k  k  0
и среди чисел aik (i  1, m)
нет положительных, т.е. aik  0 , то
целевая функция ЗЛП не ограничена на
множестве ее планов, т.е. ЗЛП не имеет
решения, так как нет конечного
оптимума.
3)Если же для некоторого k
выполняется условие  k  0 , но среди
чисел aik есть положительные, т.е. не
все aik  0, то можно получить новый
опорный план, для которого значения
целевой функции
F ( X )  F ( X ) .
На основании признака оптимальности
делаем вывод о целесообразности
перехода к новому опорному плану.
Симплекс-таблица
Симплекс-таблица
В столбце Сб записывают коэффициенты при
неизвестных целевой функции, имеющие те же
индексы, что и векторы данного базиса.
В столбце P0 -положительные компоненты исходного
опорного плана, в нем же в результате вычислений
получают положительные компоненты оптимального
плана.
Первые m строк заполняют по исходным данным
задачи, а показатели (m+1)-й строки вычисляют. В
этой строке в столбце вектора P0 записывают
значение целевой функции, которое она принимает
при данном опорном плане, а в столбце вектора Pj значение  j  z j  c j .
Здесь
z  cá  Pj
, т.е.
m
z j   ci aij  c1a1 j  c2 a2 j  ...  cm amj ( j  1, n)
i 1
Значение
F0  P0  cá  c1b1  c2b2  ...  cmbm .
После заполнения таблицы исходный
опорный план проверяют на оптимальность.
Для этого просматривают элементы (m+1)-й
строки. Может иметь место один из 3-х
случаев.
1) Все  j  0. Тогда составленный
план оптимален.
2)  j  0 для некоторого j и все
соответствующие этому j aij  0 . Тогда
целевая функция неограничена.
3)  j  0 для некоторых индексов j и
для каждого такого j по крайней мере
одно из чисел aij положительно.
Здесь можно перейти к новому
опорному плану.
Этот переход осуществляется
исключением из базиса какого-нибудь
из векторов и включением в него
другого.
В базис вводим вектор , давший
минимальную отрицательную величину
симплекс-разности
 k  min( z j  c j ),
( j  1, n)
Из базиса выводится вектор Pr ,
который дает наименьшее
положительное оценочное отношение
bi
Q  min( )
aik
для всех aik  0 , т.е. минимум
достигается при i=r.
Число ark называется разрешающим
элементом.
bi
br
Q  min( ) 
, aik  0, i  1, m.
aik
ark
Строка Pr называется разрешающей
строкой, элементы этой строки в новой
симплекс-таблице вычисляются по
методу Жордана-Гаусса, т.е. по
формулам:
arj 
arj
ark
, j  1, n, i  r.
Элементы i-й строки –по формулам
aij  aij 
arj aik
ark
, i  1, m, j  1, n.
Значение нового опорного плана
считают по формулам
br
br 
äëÿ i  r , i  1, m;
ark
br aik
bi  bi 
äëÿ i  r , i  1, m.
ark
Значение целевой функции при
переходе от одного опорного плана к
другому , улучшенному, изменяется по
формуле F   F   k Q.
Процесс решения продолжаем до
получения оптимального плана либо до
установления неограниченности ЦФ.
Если среди оценок оптимального плана
нулевые только оценки , соответствующие
базисным векторам, то оптимальный план
единствен.
Если же нулевая оценка соответствует
вектору, не входящему в базис, то в общем
случае это означает, что опорный план не
единствен.
Алгоритм применения симплексметода
1)Находят опорный план.
2)Составляют симплекс-таблицу.
3)Выясняют, имеется ли хотя бы одна
отрицательная оценка. Если нет, то
найденный опорный план оптимален.
Если же есть отрицательные оценки, то
либо устанавливают неразрешимость
задачи, либо переходят к новому
опорному плану.
4)Находят направляющие столбец и
строку. Направляющий столбец
определяется наибольшим по
абсолютной величине отрицательным
числом  j , а направляющая строка—
минимальным числом Q.
5)Определяют положительные
компоненты нового опорного плана.
Составляется новая таблица.
6)Проверяют найденный опорный план
на оптимальность.
Пример.
Решить симплекс-методом ЗЛП
F  10 x1  20 x2  max
 x1  3,5 x2  350,

2 x1  0,5 x2  240,
 x  x  150,
 1 2
x1,2  0.
Решение.
Приведем задачу к каноническому виду, введя
новые переменные
x3 , x4 , x5.
В целевую функцию эти переменные войдут с
нулевыми коэффициентами:
F  10 x1  20 x2  0 x3  0 x4  0 x5  max,
 x1  3,5 x2  x3  350,

2 x1  0,5 x2  x4  240,
 x  x  x  150,
 1 2 5
x1,2,3,4,5  0.
Из коэффициентов при неизвестных и
свободных членов составим векторы
1
 3,5 
1
0
0
 350 
 
 
 
 
 
 
P1   2  , P2   0,5  , P3   0  , P4   1  , P5   0  , P0   240 
1
 1 
0
0
1
 150 
 
 
 
 
 
 
Единичные векторы образуют единичную
подматрицу и составляют базис
первоначального плана. Свободные
неизвестные приравниваются к нулю.
Получаем первоначальный опорный план:
Х= (0;0;350;240;150).
Составим симплекс-таблицу и проверим план
на оптимальность. В нашем примере
m  3, n  5.
Для заполнения последней строки таблицы
сразу вычислим симплекс-разности
m
 j  z j  c j   ci aij  c j :
i 1
Для этого поочередно умножаем столбец Сб
на соответствующие элементы каждого
столбца P1 , P2 , ...
1  z1  c1  0 1  0  2  0 1  10  10,
 2  z2  c2  0  3,5  0  0,5  0 1  20  20,
 3  z3  c3  0 1  0  0  0  0  0  0,
 4  z4  c4  0 1  0  0  0  0  0  0,
 5  z5  c5.  0  0  0  0  0 1  0  0.
Составим теперь нулевую симплексную
таблицу
Таблица 0.
Определяем разрешающий элемент
симплексной таблицы. Т.к. имеется 2
отрицательные оценки, то выбираем ту, что
дает максимальную по абсолютной величине
отрицательную оценку, т. е. -20.
Это означает, что в базис включается
вектор P2 , а исключается из базиса тот
вектор, которому соответствует
 bi  br
Q  min   
i
 aik  ark
(aik  0, i  1, m)
.
 bi 
 350 240 150 
Q  min    min 
,
,   min 100, 480,150 
i
 3,5 0,5 1 
 aik 
br b1

  100.
ark a12
Разрешающим элементом
является a12  3,5 .
Значение целевой функции в
следующей симплекс-таблице будет
равно:
(1)
(0)
(0) (0)
F ( X )  F ( X )   k Q  0  (20) 100  2000
Элементы направляющей строки в
новой таблице вычисляем, деля эту
строку на ведущий элемент(в том числе
и клетку в столбце план):
(1)
11
a
(0)
11
a
1


 0, 286,
a12 3,5
(0)
12
(1)
12
a
3,5
1
(1)


 1, a13 
 0, 286,
a12 3,5
3,5
(1)
14
0
0
(1)

 0, a15 =
 0.
3,5
3,5
a
a
Можно рассчитывать элементы строк
методом Жордана-Гаусса, домножая 1ю строку на (-0,5) и прибавляя ее ко 2-й,
а затем на(-1) и прибавляя к 3-й,
обнулив таким образом элементы 2-го
выделенного (разрешающего) столбца,
или по формулам треугольника
ari aik
a  aij 
ark
'
ij
br aik
b  bi 
, i  r.
ark
'
i
Элементы 2-ой строки получаем по
методу Жордана-Гаусса (или по
формулам треугольника)
(1)
21
a11
1 0,5
 a21 
 2
 1,857,
a12
3,5
(1)
22
a12 a22
3,5  0,5
 a22 
 0,5 
 0,
a12
3,5
a
a
(1)
23
a
 a23 
.......
a13a 22
a12
1 3,5
 0
 0,143,
3,5
Аналогично рассчитываем элементы 3й строки.
Значения нового опорного плана
рассчитываем по формулам:
(1)
2
b1a22
350  0,5
 b2 
 240 
 190,
a12
3,5
(1)
3
b1a22
350 1
 b3 
 150 
 50.
a12
3,5
b
b
После чего заполняем таблицу 1.
Таблица 1.
Проверим план на оптимальность.
Вычислим симплекс-разности.
1(1)  z1  c1  20  0, 286  0 1,857  0  0, 714  10  4, 286,
 (1)
2  z2  c2  20  1  0  0  0  0  20  0,
3(1)  z3  c3  20  0, 286  0  (0,143)  0  (0, 286) 
0  5, 714,
 (1)
4  z4  c4  20  0  0  1  0  0  0  0,
5(1)  z5  c5  20  0  0  0  0 1  0  0.
В первом столбце матрицы имеется
отрицательная оценка. План не
оптимален, но его можно улучшить ,
включив в базис вектор P1 . Найдем
минимальное оценочное отношение:
 bi 
50 
 100 190
Q  min    min 
;
;

 0, 286 1,857 0, 714 
 aik 
b3
 min 350;102,308;70 
 70.
a31
Выводится из базиса вектор P5 , которому
соответствует минимальное оценочное
отношение 70. Переходим к следующему
опорному плану. Вводим в базис вектор P1 ,
делим разрешающую строку на
разрешающий элемент a31  0, 714 и
заполняем 3-ю строку таблицы 2. После чего
методом Жордана-Гаусса домножаем эту
строку на (-0,286) и прибавляем к первой,
затем домножим эту строку на (-1,857) и
прибавляем ко второй.
Таблица 2
Вычисляем симплекс-разности.
1  z1  c1  20  0  0  0  10 1  10  0,
 2  z2  c2  20 1  0  0  10  0  20  0,
 3  z3  c3  20  0, 4  0  0, 6  10  (0, 4)  0  4,
 4  z4  c4  20  0  0 1  10  0  0  0,
 5  z5  c5  20  (0, 4)  0  (2, 6)  10 1, 4  0  6.
План оптимален. Значение целевой
функции
F  10  70  20  80  0  60  2300.
Download