- •Министерство образования Республики Беларусь
- •I. Решение систем линейных уравнений методом Жордана-Гаусса
- •Матрицы и
- •Решение системы, полученное после приравнивания нулю всех свободных переменных, называется базисным. Алгоритм приведения матрицы к базисному виду
- •Контрольные задания для самостоятельного решения
- •Варианты:
- •II. Решение задачи линейного программирования геометрическим методом
- •Контрольные задания для самостоятельного решения
- •Варианты:
- •III. Решение задачи линейного программирования Симплекс-методом
- •Алгоритм Симплекс-метода
- •Контрольные задания для самостоятельного решения
- •Варианты:
- •IV. Двойственность в линейном программировании. Двойственный симплекс-метод
- •Контрольные задания для самостоятельного решения Задание 4. Решить задачу линейного программирования двойственным симплекс-методом. Варианты
- •V. Транспортная задача
- •Контрольные задания для самостоятельного решения
- •VI. Задача о максимальном потоке в сети
- •Алгоритм расстановки пометок нахождения увеличивающего пути
- •Алгоритм Форда – построения максимального потока в сети.
- •Контрольные задания для самостоятельного решения
- •VII. Сетевое планирование.
- •Алгоритм правильной нумерации.
- •Алгоритм нахождения ранних сроков наступления событий
- •Алгоритм нахождения поздних сроков наступления событий
- •Контрольные задания для самостоятельного решения
- •VIII. Задача о кратчайшем пути
- •Алгоритм построения кратчайших путей в сети
- •Контрольные задания для самостоятельного решения
- •Литература
Контрольные задания для самостоятельного решения
Задание 3. Решить задачу линейного программирования симплекс-методом (x, y 0).
Варианты:
1.Z = x - 2y min 2. Z = -x + y min
3x + y 8 3x - 2y 7
4x + 5y 29 x + 2y 13
x + 4y 10 x - 2y 1
3. Z = 2x + y max 4. Z = x - y max
-x + 2y 3 -2x + 3y 5
-x + y 1 x + 2y 8
3x - 2y 3 3x - y 10
5. Z = 2x + y max 6. Z = x + y max
x - y 0 x - y 0
3x - 2y 3 -x + 2y 4
5x - 4y 1 -3x + 4y 2
7. Z = 5x + 2y max 8. Z = 2x + 4y max
3x + y 9 3x + y 8
2x + y 7 -x + 3y 4
5x + 2y 17 x + 2y 11
9. Z = 2x + y max 10. Z = x - y min
-x + 5y 4 x + 3y 7
x - y 4 2x - y 7
x + y 2 5x + y 7
IV. Двойственность в линейном программировании. Двойственный симплекс-метод
Рассмотрим задачу линейного программирования в общей форме:
Z = c1 x1 + c2 x2 + . . .+ cn xn max (1)
при ограничениях :
y10 a11 x1 + a12 x2 + . . .+ a1n xn b1
y20 a21 x1 + a22 x2 + . . .+ a2n xn b2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (2)
yk0 ak1 x1 + ak2 x2 + . . .+ akn xn bk
yk+1 ak+1 1 x1 + ak+1 2 x2 + . . .+ ak+1 n xn = bk+1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
ym am1 x1 + am2 x2 + . . .+ amn xn = bm ,
xj 0 , j = 1, . . . , l; l n (3)
Каждому i-му ограничению из (2) соответствует переменная yi так называемой двойственной задачи к задаче (1) – (3) (показана слева от соответствующего ограничения).
Двойственная задача имеет вид:
W = b1 y1 + b2 y2 + . . .+ bm xm min (4)
при ограничениях :
x1 0 a11 y1 + a21 y2 + . . .+ am1 ym c1
x2 0 a12 y1 + a22 y2 + . . .+ am2 ym c2
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . (5)
xl 0 a1l y1 + a2l y2 + . . .+ aml ym cl
xl+1 a1 l+1 y1 + a2 l+1 y2 + . . .+ a m l+1 ym = cl+1
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
xn a1n y1 + a2n y2 + . . .+ amn ym = cn ,
yi 0 , i = 1, . . . , k ; k n (6)
Задачи (1) – (3) и (4) – (6) образуют пару задач, называемую в линейном программировании двойственной парой.
Сравнивая две задачи, видим, что двойственная задача по отношению к исходной (прямой) содержит те же самые коэффициенты aij, bi, cj и составляется согласно следующим правилам:
Целевая функция (1) исходной задачи задается на максимум, а целевая функция (4) двойственной задачи – на минимум.
Матрица АТ , составленная из коэффициентов при неизвестных в системе ограничений (5) двойственной задачи получается из матрицы А прямой задачи транспонированием (т.е. заменой строк столбцами):
а11 а12 . . . а1n a11 a21 . . . am1
A = а21 а22 . . . а2n AT = a12 a22 . . . am2
. . . . . . . . . . . . . . . . . . . . . . . . .
аm1 аm2 . . . аmn a1n a2n . . . amn
Число переменных в двойственной задаче (4)–(6) равно числу ограничений в системе (2) прямой задачи, а число ограничений в системе (5) двойственной задачи равно числу переменных в прямой задаче.
Коэффициентами при неизвестных в целевой функции (4) двойственной задачи являются свободные члены в системе (2) прямой задачи и наоборот.
Если переменная xj 0, то j-ое ограничение в системе (5) двойственной задачи является неравенством “ ”. Если же переменная xj может иметь любой знак, то j-ое ограничение в системе (5) представляет собой уравнение.
Каждая из задач двойственной пары (1) – (3) и (4) – (6) фактически является самостоятельной задачей линейного программирования и может быть решена независимо одна от другой. Однако при определении симплексным методом оптимального плана одной из задач, тем самым находится решение и другой задачи. Существующие зависимости между решениями прямой и двойственной задач характеризуются сформулированными ниже теоремами двойственности.
Теорема 1. (Основная теорема двойственности). Если одна из пары двойственных задач имеет оптимальный план, то и другая имеет оптимальный план причем значения целевых функций задач при их оптимальных планах совпадают, т.е. Zmax = Wmin.
Если же целевая функция одной из задач не ограничена (для исходной (1) – (3) – сверху, для двойственной (4) – (6) – снизу), то другая задача вообще не имеет допустимых решений.
Теорема 2. (Вторая теорема двойственности). Для того, чтобы два допустимых решения ипары двойственных задач были их оптимальными решениями, необходимо и достаточно, чтобы они удовлетворяли системам уравнений:
(7)
Замечание. Соотношения (7) верны только для ограничений в виде неравенств и для неотрицательных переменных.
Двойственный симплекс-метод, как и симплекс-метод, используется при нахождении решения задачи линейного программирования, записанной в канонической форме. Вместе с тем двойственный симплекс-метод можно применять при решении задачи ЛП, свободные члены системы ограничений которой могут быть любыми числами (при решении задачи симплексным методом эти числа предполагались неотрицательными).
Опишем алгоритм двойственного симплекс-метода. Рассмотрим задачу линейного программирования в канонической форме.
(8)
(9)
(10)
Пусть матрица ограничений А содержит единичную подматрицу порядка m и первые m переменных являются базисными. Среди чиселесть отрицательные. Векторесть решение системы (9). Однако, это решение не является планом задачи (8) – (10), поскольку среди его компонент есть отрицательные числе (т.е. не выполняются ограничения (10)). Исключим базисные переменные из целевой функцииz:
.
Предположим, что
Шаг 1. Составить исходную симплексную таблицу.
№ строки |
Базис |
x1 |
… |
xm |
xm+1 |
… |
xk |
… |
xn |
b |
1 l m |
x1 xl xm |
1 0 0 |
… … … |
0 0 1 |
a1m+1 alm+1 amm+1 |
… … … |
ak a*lk amk |
… … … |
a1n aln amn |
b1 bl bm |
m+1 |
-z |
0 |
… |
0 |
dm+1 |
… |
dk |
… |
dn |
-do |
Шаг 2. Выяснить, имеется ли хотя бы одно отрицательное число среди элементов столбца b. Если нет, то перейти к шагу 8. Иначе – к шагу 3.
Шаг 3. Если отрицательных чисел в столбце b несколько, то выбрать наименьшее. Пусть, для определенности, это число . Строка с номеромl – ведущая.
Шаг 4. Среди элементов ведущей строкиl находят отрицательные. Если таковых нет, то исходная задача не имеет решения. В противном случае перейти к шагу 5.
Шаг 5. Вычислить . Столбец с номеромk – ведущий, - ведущий элемент.
Шаг 6. С помощью ведущего элемента провести одну итерацию метода Жордана-Гаусса.
Шаг 7. Построить новую симплексную таблицу и перейти к шагу 2.
Шаг 8. Задача линейного программирования (8) – (10) решена. По последней симплексной таблице выписать оптимальный план и минимальное значение целевой функции задачи (8) – (10).
Замечание. Если среди чисел есть отрицательные, то следует в системе ограничений (9) преобразовать свободные членыbj в неотрицательные, умножив на (-1) строки, содержащие отрицательные свободные члены и решать задачу (8) – (10) методом искусственного базиса.
Пример. Решить задачу линейного программирования:
Z = 6x1 + 9x2 + 3x3 min
-x1 + 2x2 + x3 2
3x1 + x2 – x3 1 (11)
xj 0, j = 1, 2, 3.
Решение. Составим для задачи (11) двойственную:
W = 2y1 + y2 max
-y1 + 3y2 6
2y1 + y2 9 (12)
y1 - y2 3
y1 , y2 0
Для решения задачи (11) двойственным симплекс-методом приведем ее к каноническому виду. Для этого умножим первое и второе ограничения на (-1) и добавим соответственно неотрицательные дополнительные переменные x4 0 , x5 0:
Z = 6x1 + 9x2 + 3x3 min
x1 - 2x2 - x3 + x4 = -2
-3x1 - x2 + x3 + x5 = -1 (13)
xj 0, j = 1, 2, ..., 5.
Базисными переменными здесь являются переменные х4 и х5 . Поскольку все коэффициенты сj 0 , то критерий оптимальности для этого базисного решения выполнен, однако само решение Х = (0, 0, 0, -2, -1) содержит отрицательные переменные, то есть не является допустимым. Естественно попытаться вывести отрицательные (не являющиеся допустимыми) переменные из базиса, сохранив при этом неотрицательность коэффициентов последней строки, так как в этом случае полученное допустимое решение будет являться и оптимальным. Такой подход является содержанием двойственного симплекс-метода. Проиллюстрируем его на примере решения задачи (13).
Составим исходную симплекс-таблицу.
Базис |
х1 х2 х3 х4 х5 |
Значение (bi) |
x4 x5 |
1 -2 -1* 1 0 -3 -1 1 0 1 |
-2 -1 |
- Z |
6 9 3 0 0 |
0 |
Вычисляем Из базиса будем выводить переменнуюx4. Следовательно, первая строка таблицы является разрешающей. Среди элементов разрешающей строки находим отрицательные а12 = -2; a13 = -1.
Определяем Столбец, в котором достигается этот минимум, соответствует переменнойх3. Этот столбец является разрешающим и разрешающим элементом является элемент а13 = -1. Это делается для того, чтобы элементы последней строки остались неотрицательными. Проводим одну итерацию метода Жордана-Гаусса относительно этого элемента, т.е. из базиса исключаем переменную х4 и включаем в базис переменную х3. Новая симплекс-таблица имеет вид:
-
Базис
х1 х2 х3 х4 х5
Значение
(bi)
х3
x5
-1 2 1 -1 0
-2 -3* 0 1 1
2
-3
- Z
9 3 0 3 0
-6
Элемент b2 = -3 < 0. Следовательно, разрешающей является вторая строка таблицы. Как и ранее, находим
Следовательно второй столбец – разрешающий, переменную х2 включаем в базис, переменную х5 исключаем из базиса. Пересчитывая таблицу относительно элемента а22 = -3, получаем новую таблицу:
-
Базис
х1 х2 х3 х4 х5
Значение (bi)
х3
x2
-7/3 0 1 -1/3 2/3
2/3 1 0 -1/3 -1/3
0
1
- Z
7 0 0 4 1
-9
Среди элементов столбца “Значение” нет отрицательных чисел. В Z – строке также нет отрицательных чисел. Следовательно, найден оптимальный план: Х* = (0; 1; 0), при этом Z* = Zmin = 9. По последней симплекс-таблице находим решение двойственной задачи (9). Для этого выясняем, какие переменные задачи (10) входили в исходный базис. В первоначальной таблице это – х4, х5. В последней симплекс-таблице находим элементы Z – строки, соответствующие этим базисным переменным (с4 = 4, с5 = 1) и прибавляем к ним соответствующие коэффициенты исходной целевой функции (с4 = с5 = 0). В результате получаем Y* = (4; 1), W* = Wmax = 9.