Модифицированный симплекс-метод
Таблица 1.11
Таблица 1.8
Элементы | Элементы таблицы | |
Старой | Новой | |
Разрешающий | ak,s | |
Разрешающей строки | ak,j | |
Разрешающего столбца | ai,s | |
Все остальные | ai,j |
В этой таблице введем следующие индексы:
S - индекс элементов разрешающего столбца,
K - индекс элементов разрешающей строки.
|
|
| |||||
| |||||
Суть преобразований симплекс-метода рассмотрим на примере 1.4. Давайте вспомним ограничивающие неравенства и целевую функцию из этого примера и найдем max целевой функции, пользуясь вышеизложенным методом :
F = 908X1 + 676X2 ® max.
X1 + X2 14,
X2 10,
10 X1 + 8 X2 120,
7X1 + 5 X2 70,
4X1 + 2X2 28,
|
Преобразуем ее в каноническую форму, вводя дополнительные переменные Xj0, и превратив неравенства в равенства. Следует обратить внимание, что если в неравенстве стоит знак "", то при свободной переменной пишут " - ", в противном случае - " + ":
X1 + X2 = 14 - X3 ,
X2 = 10 - X4 ,
10 X1 + 8 X2 = 120 - X5 ,
7X1 + 5 X2 = 70 - X6 ,
4X1 + 2X2 = 28 - X7 .
Чтобы приступить к процедуре симплекс-метода, нужно из множества базисных решений полученной системы уравнений сначала найти опорное. С учетом этого в решении задач симплекс-методом различают три этапа:
- нахождение первоначального базисного решения и формирование исходной симплекс-таблицы;
- определение допустимого решения;
- определение оптимального решения.
1-й этап
Первоначальное базисное решение систем находим, полагая свободными переменные X1 и X2.
Тогда X3 = 14 - X1 - X2 ,
X4 = 10 - X2 ,
X5 =120 - 10X1 - 8X2 ,
X6 = 70 - 10X1 - 5X2 ,
X7 = 28 - 4X1 - 2X2 ,
F = 908X1 + 676X2 = 0 .
Преобразуем эти уравнения к нормальному виду:
X3 = 14 - ( X1 + X2 ),
X4 = 10 - ( 0X1 + X2 ),
X5 =120 - (10X1 + 8X2 ),
X6 = 70 - ( 7X1 + 5X2 ),
X7 = 10 - ( 4X1 + 2X2 ),
F = 0 + 908 X1 + 676 X2 .
Полученную систему уравнений запишем в виде исходной симплекс-таблицы (табл. 1.9). В табл. 1.9 нет отрицательных свободных членов. Следовательно, нами получено опорное (допустимое) решение, так как допустимым решением является любое неотрицательное решение (при котором >0), но оно не является оптимальным.
Очевидно, что если бы при всех неизвестных в целевой функции Fстояли положительные коэффициенты, то было бы достигнуто максимальное значение F. Отсюда вытекает признак оптимальности допустимого решения: в F- строке симплекс-таблицы не должно быть отрицательных коэффициентов.
Таблица 1.9
Базисные переменные Xб | Свободный член | Свободные переменные | |
X1 | X2 | ||
X3 | |||
X4 | |||
X5 | |||
X6 | |||
X7 | |||
F | - 908 | - 676 |
2-й этап
Напомним, что основная операция симплекс-метода заключается в том, что некоторая базисная переменная замещается на свободную переменную.При этом операция замещения выполняется при соблюдении следующих условий:
- значение целевой функции F в новом опорном (допустимом) решении должно быть больше, чем в предыдущем;
- новое решение системы должно быть также опорным (допустимым).
В нашем примере первое условие выполняется, если разрешающий элемент положительный и выбран в столбце отрицательного коэффициента F-строки.
Второе условие выполняется, если разрешающий элемент находится как минимальное положительное отношение элементов столбца свободных членов к соответствующим элементам разрешающего столбца.
По выше изложенному правилу для нахождения допустимого решения меняют местами базисные и свободные переменные. Для этого находят разрешающий элемент (в табл. 1.9 он взят в рамку). В нашем случае разрешающим может быть как столбец X1, так и X2. Деля свободные переменные на соответствующие значения X1иX2 (кроме строки F), находим наименьшее положительное значение. Для столбца X1:
; ; ; ; .
Для столбца X2:
; ; ; ; .
Наименьшее отношение 28/4 определяет разрешающую строку и разрешающий столбец, а пересечение разрешающего столбца и разрешающей строки - разрешающий элемент aks= 4. В табл. 1.9 разрешающий столбец и разрешающую строку отмечаем стрелками ( ® ). Определивaks , строят следующую таблицу, в которой меняют местами переменные, входящие в строку и столбец разрешающего элемента, т.е. переводят базисные переменные в свободные, а свободные - в базисные.
В нашем примере меняем местами переменные Х7 и Х1 , отмеченные в табл. 1.9 стрелками. Коэффициенты новой табл. 1.10 находят по коэффициентам старой табл. 1.9, используя выражения, приведенные в табл. 1.8 и “правило прямоугольника”. В табл. 1.10 снова не имеем оптимального решения.
Таблица 1.10
Базисные переменные Хб | Свободный член В | Свободные переменные | |||||||||||
X7 | X2 | ||||||||||||
Х3 | - 1/4 | 1/2 | |||||||||||
Х4 | |||||||||||||
Х5 | -5/2 | ||||||||||||
Х6 | -7/4 | 3/2 | |||||||||||
Х1 | 1/4 | 1/2 | |||||||||||
F | -222 | ||||||||||||
По вышеописанным правилам в табл. 1.10 находим разрешающий элемент 1 и строим новую табл. 1.11 сделав замещение базиса (Х4и Х2). Особо подчеркнем, что для нахождения разрешающего элемента мы должны выбирать наименьшее положительное значение, т.е. отрицательные отношения свободных членов к коэффициентам разрешающего столбца мы не рассматриваем.
Базисные переменные Хб | Свободный член В | Свободные переменные | |||||||||||
X7 | X4 | ||||||||||||
Х3 | - 1/4 | - ½ | |||||||||||
Х2 | |||||||||||||
Х5 | -5/2 | - 3 | |||||||||||
Х6 | -7/4 | - 3/2 | |||||||||||
Х1 | 1/4 | - ½ | |||||||||||
F | |||||||||||||
3-й этап
Проверим, является ли найденное решение оптимальным, а для нашего примера - максимальным. Для этого сделаем анализ целевой функции F: F = 8576 + 227 X7 + 222 X4 .
Целевая функция не содержит отрицательных коэффициентов и имеет наибольшее значение в последней таблице, нами получено оптимальное решение:
X3 = 2; X2 = 10; X5 = 20; X6 = 6; X1 = 2; X7 = X4 = 0;
Fmax = 8576.
Обратите внимание, что результаты решения симплекс методом и графическим совпадают.
В соответствии с рассмотренной последовательностью, алгоритм симплекс-метода должен иметь следующие блоки:
1. Нахождения первоначального базисного (опорного) решения и формирование исходной таблицы.
2. Отыскание разрешающего элемента a ks (нахождение отрицательного свободного члена -b i < 0 и минимального отношенияb i / aij ; если в строке отрицательного свободного члена нет отрицательных коэффициентов, то задача неразрешима).
3. Перерасчет новой таблицы по формулам табл. 1.8.
4. Проверка наличия отрицательного свободного члена. Если он есть, то переходим к п. 2. Отсутствие отрицательного свободного члена означает, что получено опорное (допустимое) решение.
5. Аналогично п. 2 - 4 выполняется перерасчет таблицы при поиске оптимального решения.
Решение задачи ЛП симплекс-методом в матричной форме
Требуется минимизировать ,
при ограничениях
при "x ³ 0.
Введем векторы:
C = (C1 , ... , Cn ) - вектор оценок,
X= (X1 , ... , Xn ) - вектор переменных,
b = (B1 , ... , Bm ) - вектор ограничений
и матрицу
A=
размером ( mn ) - матрицу коэффициентов ограничений.
Тогда задача ЛП будет иметь следующую трактовку:
минимизировать F=CX
при условиях AX = b, X 0.
Эту задачу можно записать в матричной форме:
Введем обозначение:
А*= - здесь матрица A* размером (m+1)(n+1).
Согласно выше приведенной методике находят разрешающий элемент aks.
Следующий шаг симплекс-метода - процедура исключения Гаусса, которая позволяет сделать все коэффициенты в s-м столбце, кроме aks , нулевыми, aks - равным единице.
Для симплекс-метода в матричной форме итерация симплекс-метода эквивалентна умножению матричного уравнения слева на следующую квадратную матрицу:
|
Если все столбцы матрицы A разделить на базисные B и небазисные N, то задачу ЛП можно записать так:
,
где Cb и CN -соответствующие компоненты вектора C, Xb , XN- базисные и небазисные переменные.
Для выбора начальных базисных переменных xb следует умножить уравнение слева на матрицу:
где R= Cb B-1 .
В результате получим
,
гдеI - единичная матрица.
Отсюда следует, что относительные оценки при небазисных переменных
cj = cj - Cb B-1 aj = cj - Raj .
Базис будет допустимым, если свободные члены при базисных переменных будут неотрицательными, т.е. B-1b ³ 0.
Если cj ³ 0 для , то базис является оптимальным решением задачи. Вектор называют вектором текущих цен. Каждая строка умножается на вектор R и вычитается из строки коэффициентов стоимости, для того чтобы исключить коэффициенты стоимости при базисных переменных.
Если задача ЛП задана не в канонической форме, т.е.
минимизировать F=CX
при условиях AX b , X 0,
то, вводя слабые переменные, их можно записать в виде
Метод исключения по строкам для матрицы эквивалентен умножению этой матрицы слева на B-1, где B - базис подматрицы A, тогда
,
т.е. матрица, получаемая на месте единичной I, будет матрицей, обратной для текущего базиса. Относительные оценки, расположенные над единичной матрицей, будут
,
поскольку - единичные векторы.
Так как F= CbB-1b = Rb, текущее значение целевой функции равно произведению вектора текущих цен матрицы A на исходный вектор b.
Пример. F=5X1 + 6X2 + 3X3 + 4X4 + 5X5 ® min
при ограничениях
2X1 + 3X3 + 4X4 + 2X5 = 10,
3X2 + 3X4 + 6X5 = 9,
|
Для данного примера матрицаA* будет иметь вид
.
Пусть X1и X2 - базисные переменные.
Матрица B имеет вид
.
Тогда обратная матрица B-1 имеет следующий вид
.
Напомним, что , где присоединенная матрица, составленная из алгебраических дополнений элементов bik определителя матрицы B.
Определитель равен:
= .
Следовательно, матрица B неособенная.
Алгебраические дополнения элементов определителя имеют следующие значения:
b11 = 3, b12 = 0, b12 = 0, b22 = 2; т.е. .
Умножив на , находим обратную матрицу:
.
Вектор текущих цен будет
R = CbB-1 = = .
Напомним, что Cb -базисные компоненты вектора C:
Cb =.
Тогда = .
Для выбора начального базиса нужно матрицу A* умножить слева на матрицу
,
получим
=
.
Разрешающий элемент находится в квадрате.
Итерация симплекс-метода эквивалентна полученной таблице, умноженной слева на следующую матрицу:
.
Эта матрица получена из матрицы (1.23)
Здесь aks = 2 ;
a11 = 1; a12 = - a0s / aks = - 12/2 = - 6;
a13 = 0 ; a21 = 0 ; a22 = 1/ aks = 1/2 ; a23 = 0;
a31 = 0 ; a32 = - ams / aks = -1/2 ; a33 = 1.
Тогда имеем
=
(1.24)
Разрешающий элемент помещен в квадрат.
Следующая итерация симплекс-метода равносильна умножению слева на матрицу
.
Тогда
=
.
Следовательно, F min =11; X4=7/3; X5=1/3; X1=X2=X3=0.
Модифицированный симплекс-метод(МСМ) отличается от обычного симплекс-метода(СМ) тем, что в СМ все элементы симплекс-таблиц пересчитываются на каждой итерации и при получении очередной таблицы, все предыдущие таблицы, включая исходную, не сохраняются. В МСМ сохраняется исходная таблица, а на каждой итерации определяются: строка относительных оценок C, вводимых в базис , и текущее значение вектора правых частей ограничений . Для того чтобы определить все элементы таблицы после j-й итерации СМ, достаточно знать матрицу B-1, соответствующую этой таблице, исходную матрицу и индексы текущих базисных переменных. Тогда текущий вектор R = Cb B-1 (индексы текущих базисных переменных определяют, какие элементы вектора оценок из исходной таблицы входят в вектор Сb); =B-1b , где b берется из исходной таблицы, а любой столбец новой таблицы=B-1 aj, гдеaj - столбец исходной таблицы.
Пусть задана теперь исходная таблица B-1 , соответствующая таблице i-й итерации. Для того чтобы получить матрицуB-1 , соответствующую (i+1)-й итерации, надо определить небазисный столбец i-й таблицы , который должен быть введен в базис. ИзСМ следует, что может быть введен в базис, если Cj<0. Таким образом, необходимо вычислить Сj для i-ой таблицы, выбрать среди них <0, а затем вычислить
aS=B-1 и =B-1b (= Cj - Raj).
Найдя разрешающий элемент и используя элементы векторов и , находим матрицу B-1 для следующей таблицы.
Пример. Модифицированным симплекс-методом минимизировать
F = 5X1 + 6X2 + 3X3 + 4X4 + 5X5 ® min
при ограничениях:
2X1 + 3X3 + 4X4 + 2X5 = 10,
3X2 + 3X4 + 6X5 = 9,
|
Выбрав в качестве базисных переменных X1 и Х2, получили следующую задачу: F = 43 - 9/2X3 - 12X4 - 12X5
при условиях
X1 + 3/2X3 + 2X4 + X5 = 5,
X2 + X4 + 2X5 = 3 ,
|
Эта задача равносильна следующей: максимизировать Х0= -F при условиях
Х0 - 9/2Х3 - 12Х4 - 12Х5 = - 43,
Х1 + 3/2Х3 + 2Х4 +Х5 = 5,
X2 + Х4 + 2Х5 = 3,
|
Исходная таблица имеет вид
X0 | X1 | X2 | X3 | X4 | X5 | X6 | |
X0 | -9/2 | -12 | -12 | -43 | |||
X1 | 3/2 | ||||||
X2 |
Для исходной матрицы В будет единичной матрицей, т.е. B=I. Поэтому B-1=I.Вектор текущих цен
R = Cb B-1 ;
R== .
Текущие оценки в этом случае будутCj = Raj, поэтому
= =- 9/2;
= =- 12;
= = -12.
Таким образом, в базис может быть введен вектор , причем:
=B-1a 4= = .
Текущий вектор правых частей
= B-1 b = = .
Находим минимум среди отношений элементов вектора правых частей и соответствующего положительного элемента вектора :
min = .
Отсюда видно, что из базиса должен быть исключен вектор . Исключения по строкам с разрешающим элементом = 2 эквивалентно умножению слева на матрицу
= .
После умножения получим
=.
Обращением нового базиса ( Х0, Х4, Х2 ) будет матрица
B-1=;
R= ;
= Ra1== 6;
= Ra3== 9/2;
= Ra5== - 6.
Разрешающим будет 5-й столбец. В базис вводим столбец :
= = ;
= = .
Находим min .Следовательно, из базиса выводим вектор , умножая слева на матрицу
= .
= .
Обращением нового базиса ( Х0, Х4, Х5 ) будет матрица B-1 .
B-1 = ;
R= ;
= Ra1==4 > 0;
= Ra2==4 > 0;
= Ra3==3/2 > 0.
Следовательно, получаем оптимальное решение:
X0 = - F = - 11; X1 = X2 = X3 = 0;
X4 = ; X5= .