Вы находитесь на странице: 1из 8

Конспект лекций по предмету “Проектирование алгоритмов”

Лекция 5

АЛГОРИТМ СИМПЛЕКСНОГО МЕТОДА РЕШЕНИЯ ЗЛП И ЕГО АНАЛИЗ

Как было отмечено выше, оптимальное решение ЗЛП находится среди


опорных решений(ОР). Нахождение опорных решений, когда размерность
задачи более трех не удается осуществить геометрическим способом.
Поэтому возникла необходимость создания универсальных методов,
независящих от размерности задачи. Одним из таких методов является
симплексный метод, так называемый метод постепенного улучшения плана.
Идея метода состоит в том, что мы выбираем некоторый начальный опорный
план. Далее на основе проверки определенных условий мы переходим к
следующему более лучшему плану. Этот процесс продолжается до теxпор,
пока мы не достигнет оптимального плана. При этом на каждом шагу мы
находим один из опорных планов. Так как число опорных планов равно
числу вершин многогранника ОДР и их число конечно, то число шагов по
симплексному методу тоже будет конечным. Для применения симплексного
метода ЗЛП должна быть приведена к каноническому виду, то есть к виду, в
котором все ограничения должны иметь вид равенства. Этого можно легко
добиться введением фиктивных переменных.

Рассмотрим этот процесс для следующей задачи:

 n
  aij x j  bi , i  1,2,..., m, (5.1)
 j 1

 x j  0, j  1,2,..., n, (5.2)
 n
 L  x    c j x j  max. (5.3)
 j 1

Для того чтобы условия (5.1) приняли вид равенства к левым частям
добавим фиктивные переменные хn+1, xn+2,…,xn+m,причем для них cn+1=cn+2=…
=cn+m=0. Цены фиктивных изделий полагаем равными нулю. После этого
задачу (5.1)-(5.3) запишем в виде

 n
  aij x j  хni  bi , i  1,2,..., m, (5.4)
 j 1

 x j  0, j  1,2,..., n  m, (5.5)
 n m
 L   c j x j  max. (5.6)
 j 1

Легко заметить, что значения хn+1, xn+2,…,xn+m, какими-бы они не были, не

оказывают никакого влияния на значение целевой функции L  х  , так как


cn+i=0; i=1, 2,…,m.

Переходя к матричной форме задачу (5.4)-(5.6) можно выразить в


компактной форме:

A X  B (5.7)

 C  X  max. (5.8)

A   aij  . A  n   n  m   
Здесь приняты обозначения прямоугольная матрица.

 х1   b1 
 х  b 
Х  2 
 B  
2

    
   
С   с1 , с2 ,..., сn m   матрица строка,  хn  m  матрица столбец.  bm 
матрица столбец.

Теперь перейдем к изложению алгоритма симплексного метода. Для


начала мы должны выбрать базисные переменные, число которых должно
быть равно m–числу ресурсов. Столбцы матрицы условийА,
соответствующие базисным переменным должны быть единичными.
Значения базисных переменных берутся равными правым частям условий.
Если система условий не соответствует этим требованиям, то предварительно
необходимо преобразовать их к такому виду. После чего переходим к
составлению первой симплексной таблицы, которая имеет следующий вид.

Таблица 1.

i C1 C2 C3 C n+m−1 C n+m
Cj

C ki
бази А1 А2 А3 Аn +m−1 Аn +m В δi
с
1 Ck1 X k1 a 11 a 12 a 13 a 1n +m−1 a 1n +m b1
2 Ck2 X k2 a 21 a 22 a 23 a 2n +m−1 a 2n +m b2

m-1 Ck m−1
Xk m−1
a m−11 a m−12 a m−1 n+m a m−1 n+m b m−1
m Ck m
X km am1 am2 a m n+m−1 a m n+m bm
j

В таблице 1. принято, чтобы базисными являлись переменные

xk1 , xk2 ,..., xkm


,а их значения, соответственно, были равны правым частям
b1 , b2 ,..., bm . Причем столбцы таблицы1, соответствующие базисным
неизвестным должны быть единичными (одна единица, остальные нули). Все
остальные переменные, не являющиеся базисными, полагаются равными
нулю.

Критерий оптимальности решения, соответствующего данной таблице


состоит в следующем. Для каждого столбца таблицы от А1 до
Аn+mвычисляются

m
 j   aij  cki  c j , j  1,2,..., n, n  1, n  m.
i 1 (5.9)
j
Если среди значений нет отрицательных, то делается вывод, что план
соответствующий данной таблице являются оптимальным и счет

j
прекращается. Если среди значений существуют отрицательные, то план
не оптимальный и его надо улучшить. Улучшение плана производится

j
поэтапно. Средиотрицательных выбирается минимальный и столбец

j
соответствующий данному объявляется разрешающим (в таблице это
можно отметить стрелкой : →). Далее определяются значения

bi
i  , i  1,2,..., m,
ail (5.10)

где l  номер разрешающего столбца. При этом строки, для которых ail  0

пропускаются. Из значений  i определяется минимальное значение, и строка

S , соответствующая данному  S объявляется разрешающей. Элемент aSl 

расположенный на пересечении разрещающей строки и разрешающего


столбца, объявляется разрешающим элементом. После этого переходим к
заполнению следующей симплекс таблицы. Эта процедура подобна методу
исключения неизвестных для систем линейных алгебраических уравнений.
Прежде всего элементы разрешающей строки делим на разрешающий
элемент. При этом на месте разрешающего элемента получим единицу. Далее
элементы полученной разрешающей строки вычитаем из остальных строк,
предверительно умножив на такой соответствующий множитель после чего
все остальные элементы разрешающего столбца должны обратиться в нуль.
Очевидно, в нашем случае этими множителями будут
ail , i  1, 2,..., s  1, s  1,..., m. После чего получаем вторую симплекс таблицу, с

которой необходимо проделать те же операции. Этот процесс будет


продолжаться до тех пор, пока не получим оптимальный план.
В качестве иллюстрации, применим симплексный метод к задаче (4.1)-
(4.3) рассмотренной на предыдущей лекции

 0,1x1  0,3x2  30
 0,5 x1  0,2 x2  45

 0,1x1  0,1x2  12
 x1  0; x2  0

 L  x1 , x2   1000 x1  1400 x2  max.

Задачу приведем к каноническому виду, вводя фиктивные переменные


x3 , x4 , x5 .

 0,1x1  0,3x2  x3  30
 0,5 x1  0,2 x2  x4  45


 0,1x1  0,1x2  x5  12
 L  x1 , x2   1000 x1  1400 x2  0  x3  0  x4  0  x5  max.

Составим первую симплекс таблицу для данной задачи

Таблица 2

i Cj 1000 1400 0 0 0
C ki
баз А1 А2 А3 А4 А5 В δi
1 0 X3 0.1 0.3 1 0 0 30 100
2 0 X4 0.5 0.2 0 1 0 45 225
3 0 X5 0.1 0.1 0 0 1 12 120
j -1000 -1400 0 0 0

Как видно, заполнение данной таблицы проводится без вычислений,


непосредственно из постановки. То, что базисными будут переменные
x3 , x4 , x5 , так же следует из постановки. Столбцы таблицы, соответствующие

этим переменным единичные. Столбец цен для базисных неизвестных

 j  ck  Aj  c j
состоит из нулей, так как с3=с4=с5=0. Вычислим
1  0  0,1  0  0,5  0  0,1  1000  1000

 2  0  0,3  0  0,2  0  0,1  1400  1400.

Разрешающим будет второй столбец. В таблице это отмечено стрелкой. Так

j
как среди значений имеются отрицательные значения, то план

соответствующий данной таблице  x1  0; x2  0; x3  30; x4  45; x5  12  не

будет оптимальным. Заполним предварительно столбец  i первой таблицы по

bi
i  , i  1,2,3.
формуле ai 2 Определяем минимальное значение из  i равное
100, следовательно первая строка будет разрешающей. В таблице это
отмечено стрелкой. Также выделяем разрешающий элемент 0,3. Перейдем к
составлению второй симплекс таблицы. Размерность таблицы будет такой
же. Заполнение таблицы начнем с разрешающей строки. Разделим все
элементы строки на 0,3.

Таблица 3.

i Cj 1000 1400 0 0 0
C ki
баз А1 А2 А3 А4 А5 В δi
1 1400 X2 1/3 1 10/3 0 0 10 300
0
2 0 X4 13/30 0 -2/3 1 0 25 16000/1
3
3 0 X5 2/30 0 -1/3 0 1 2 30
j - 0 14000/ 0 0
1600/3 3

Остальные строки таблицы заполняются по выше изложенному принципу.


Элементы вновь полученной разрешающей строки вычтем из 2 строки,
предварительно умножив на 0,2; из третьей строки умножив на 0,1. План

соответствующий данной таблице будет x2  100; x4  25; x5  2; x1  0; x3  0.

j
Проведем проверку на оптимальность. Вычислим :

1 1600
1  1400   1000   ;  2  1400  1  1400  0;
3 3

10 1400
 3  1400  0 .
3 3

j
Так как среди значений есть отрицательные, то перейдем к составлению
третьей симплекс таблицы. Как и прежде, начнем с деления элементов
разрешающей строки на разрешающий элемент.

Третья симплекс таблица

Таблица 4.

i Cj 1000 1400 0 0 0
C ki
баз А1 А2 А3 А4 А5 bi
1 1400 X2 0 1 5 0 -5 90
2 0 X4 0 0 3 1 -6.5 12
3 1000 X1 1 0 -5 0 15 30
0 0 2000 0 8000

 j  0.
В данной таблице все Следовательно, план соответствующий
данной таблице оптимальный. Таким образом мы получаем решение
x1  30; x2  90; x3  0; x4  8; x5  0 . В процессе реализации симплексного

метода мы можем заметит, что на каждом шагемы находимся на


определенном опорном решении и последовательно продвигаемся к
оптимальному решению. Так на первом шаге мы находимся в точке О(0,0),

так как x1  0; x2  0 Рис.4. На втором шаге переходим к точке А (0;100). На


третьем шаге приходим к точкеВ(30,90). Это согласуется с идеей
симплексного метода.

Надо отметит, что симплексный метод позволяет одновременно найти


решения основной и двойственной задачи. Так и в итоговой симплекс

таблице в столбце значений bi мы получаем значения базисных переменных.

В нашем случае значения x1  30; x2  90; x4  12 взяты именно из таблицы.

j
Причем, реально в строке под фиктивными переменными получается

решения двойственной задачи. Так в нашем случае  3  2000;  4  0;


 5  8000. Они соответственно дают значения, у1  2000; у2  0; у3  8000.

Вычислим значения Q для этого случая:

Q  30 y1  45 y2  12 y3  min,

Qmin  30  2000  45  0  12  8000  156000.

Если сопоставить с решением прямой задачи, то мы видим:


Qmin  Lmin  156000.

,что соответствует теории двойственности.

 В качестве самостоятельной работы постарайтесь решить следующую


двойственную задачу геометрическим способом и сравните с решением,
полученным по симплекс таблице:

 0,1y1  0,5 y2  0,1y3  1000



 0,3 y1  0,2 y2  0, 4 y3  1400
Q  30 y  45 y  12 y  min
 1 2 3