Академический Документы
Профессиональный Документы
Культура Документы
Optbook1 PDF
Optbook1 PDF
Золотых
Линейное и
целочисленное линейное
программирование
Нижний Новгород
Издательство Нижегородского госуниверситета
им. Н.И. Лобачевского
2004
УДК 681.142.2 + 519.682.1
ISBN 5-85746-761-6
Предисловие 6
Обозначения 7
1. Введение 8
1.1. Задача математического программирования . . . . . . . . 8
1.2. Задача выпуклого программирования . . . . . . . . . . . . 10
1.3. Задача линейного программирования . . . . . . . . . . . . 17
1.4. Основная идея симплекс-метода . . . . . . . . . . . . . . . 20
1.5. Примеры задач линейного программирования . . . . . . . 22
1.5.1. Задача максимизации прибыли . . . . . . . . . . . 22
1.5.2. Задача минимизации расходов . . . . . . . . . . . . 22
1.5.3. Задача о «смесях» . . . . . . . . . . . . . . . . . . . 23
1.6. Задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2. Симплекс-метод 28
2.1. Числовой пример . . . . . . . . . . . . . . . . . . . . . . . 28
2.2. Симплекс-метод в строчечной форме . . . . . . . . . . . . 32
2.3. Зацикливание и способы защиты от него . . . . . . . . . 39
2.3.1. Зацикливание . . . . . . . . . . . . . . . . . . . . . 39
2.3.2. Лексикографический метод . . . . . . . . . . . . . 43
2.3.3. Правило Бленда . . . . . . . . . . . . . . . . . . . . 46
2.4. Получение начального допустимого базисного решения . 50
2.5. Матричное описание симплекс-метода . . . . . . . . . . . 53
2.6. Модифицированный симплекс-метод . . . . . . . . . . . . 56
3
4 Оглавление
4. Транспортная задача 95
4.1. Постановка задачи и основные свойства . . . . . . . . . . 95
4.2. Унимодулярные матрицы . . . . . . . . . . . . . . . . . . . 98
4.2.1. Задача о назначениях . . . . . . . . . . . . . . . . . 99
4.3. Графовая характеристика планов транспортной задачи . . 100
4.4. Способы получения начального допустимого базисного
вектора . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.4.1. Метод северо-западного угла . . . . . . . . . . . . 102
4.4.2. Метод минимального элемента . . . . . . . . . . . 103
4.5. Пересчет базисного решения при изменении базы . . . . 105
4.6. Метод потенциалов . . . . . . . . . . . . . . . . . . . . . . 106
Литература 149
6
Обозначения
7
Глава 1
Введение
демик АН СССР (1964); Гос. премия СССР (1949); Ленинская премия (1965); Нобелевская
премия (1975, с формулировкой «за вклад в теорию оптимального использования ресурсов»,
совместно с Купмансом).
8
1.1. Задача математического программирования 9
1) проверить, существует ли x ∈ M ;
e;
2) выяснить, существует ли оптимальный вектор x
e и вычислить f (e
3) найти какой-нибудь оптимальный вектор x x).
y z
z
y
a) b)
Рис. 1.1.
Рис. 1.2.
где a = (a1 , a2 , . . . , an ), a 6= 0.
на r2 , получаем неравенство
n
∑(αzi + (1 − α)yi )2 ≤ (α2 + 2α(1 − α) + (1 − α)2 )r2 = r2 ,
i=1
что и требовалось.
¡ ¢
f αx + (1 − α)y
x M y
αx + (1 − α)y
Рис. 1.3.
ДОКАЗАТЕЛЬСТВО. Индукция по s.
Заметим, что если функция f (x) — выпуклая на выпуклом множестве
M , то множество {x ∈ M : f (x) ≤ β} также выпукло. В частности, вы-
пуклость множества H(a, a0 ) следует из выпуклости линейной функции
n
f (x) = ∑ ai xi ,
i=1
f (αb
x + (1 − α)e
x) ≤ αf (b
x) + (1 − α)f (e
x) < f (e
x).
e
принадлежит как M (в силу выпуклости), так и ε-окрестности точки x
e| = α|b
(так как |z − x e| < ε).
x−x
Таким образом, чтобы определить, достигает ли выпуклая на вы-
пуклом множестве M функция f (x) минимума в точке x e, достаточно
16 Глава 1. Введение
max(c1 x1 + c2 x2 + . . . + cn xn )
ai1 x1 + ai2 x2 + . . . + ain xn ≤ bi (i = 1, . . . , k), (6)
ai1 x1 + ai2 x2 + . . . + ain xn ≥ bi (i = k + 1, . . . , k + s),
ai1 x1 + ai2 x2 + . . . + ain xn = bi (i = k + s + 1, . . . , m),
max(c1 x1 + c2 x2 + . . . + cn xn )
½ (7)
ai1 x1 + ai2 x2 + . . . + ain xn ≤ bi (i = 1, . . . , k + s),
ai1 x1 + ai2 x2 + . . . + ain xn = bi (i = k + s + 1, . . . , m).
max(c1 x1 + c2 x2 + . . . + cn xn )
a11 x1 + a12 x2 + . . . + a1n xn ≤ b1 ,
a21 x1 + a22 x2 + . . . + a2n xn ≤ b2 ,
(8)
...................................
am1 x1 + am2 x2 + . . . + amn xn ≤ bm ,
x ≥ 0 (j = 1, 2, . . . , n)
j
18 Глава 1. Введение
max(c1 x1 + c2 x2 + . . . + cn xn )
a11 x1 + a12 x2 + . . . + a1n xn = b1 ,
21 x1 + a22 x2 + . . . + a2n xn = b2 ,
a (9)
...................................
a m1 x1 + am2 x2 + . . . + amn xn = bm ,
x ≥ 0 (j = 1, 2, . . . , n)
j
называется канонической.
Пусть A = (aij ) — матрица m × n, b = (b1 , . . . , bm )> — вектор-столбец,
c = (c1 , . . . , cn ) — вектор-строка. Если a = (a1 , . . . , am ) и b = (b1 , . . . , bm ),
то под неравенством a ≥ b будем понимать m неравенств ai ≥ bi (i =
1, . . . , m).
Используя матричные операции, запишем стандартную и канониче-
скую ЗЛП в матричном виде:
max cx max cx
½ ½
Ax ≤ b, Ax = b,
x ≥ 0, x≥0
max cx
½
A0 x ≤ b0 ,
A00 x = b00 .
max(cv − cu)
A0 u − A0 v ≤ b0 ,
A00 u − A00 v ≤ b00 ,
−A00 u + A00 v ≤ −b00 ,
u ≥ 0, v ≥ 0,
max(c1 x1 + c2 x2 + . . . + cn xn )
a11 x1 + a12 x2 + . . . + a1n xn + y1 = b1 ,
a 21 x1 + a22 x2 + . . . + a 2n xn + y 2 = b2 , (11)
..................................................
am1 x1 + am2 x2 + . . . + amn xn + ym = bm ,
x ≥ 0 (j = 1, 2, . . . , n), y ≥ 0 (i = 1, 2, . . . , m),
j i
max cx
Ax + y = b,
x ≥ 0,
y ≥ 0,
4
2x1 + 5x2 = 20
3
2
x
e
1 x1 + 5x2 = 15
x1
0 5 10 15
Рис. 1.4.
x2
4
2x1 + 5x2 = 20
3
5/4 x + 5x2 = 15
1
4/3
x
e x1
0 20/3 10 12 15
Рис. 1.5.
1.6. Задачи
Y + Z = {x : x = y + z, y ∈ Y, z ∈ Z} .
max(x1 − x2 )
x1 − x2 ≤ 0,
0 ≤ x2 ≤ 1,
x1 ≥ 0.
Симплекс-метод
max(2x1 + x2 )
3x1 + 4x2 + x3 = 32,
(14)
3x1 + x2 + x4 = 17,
x1 + x5 = 5,
xj ≥ 0 (j = 1, 2, . . . , 5).
x0 = 2x1 + x2 .
и требованиях неотрицательности:
xj ≥ 0 (j = 1, 2, . . . , 5). (16)
28
2.1. Числовой пример 29
x
e = (5, 0, 17, 2, 0), x
e0 = 10. (18)
e = (5, 2, 9, 0, 0),
x e0 = 12.
x
min {1, 5} = 1.
откуда
x0 = 13 − 1/9 x3 − 5/9 x ,
4
x5 = 1 − 1/9 x3 + 4/9 x ,
4
(23)
x2 = 5 − 1/3 x3 + 1/3 x ,
4
x1 = 4 + 1/9 x3 − 4/9 x .
4
b = (4, 5, 0, 0, 1),
x b0 = 13.
x
Обозначим
B = hj1 , j2 , . . . , jm i
перестановку (упорядоченный набор) номеров базисных переменных.
Для краткости B также будем называть базой.
Из курса линейной алгебры хорошо известно, что с помощью элемен-
тарных преобразований систему уравнений можно привести к упрощен-
ному эквивалентному виду, в котором базисная переменная xji встреча-
ется только в i-ом уравнении (ji ∈ B) и, следовательно, может быть вы-
ражена через небазисные. Положив все небазисные переменные равными
0, получим некоторые значения базисных переменных, удовлетворяющих
системе.
x0 − c1 x1 − c2 x2 − . . . − cn xn = 0.
нуля. Строку и столбец с номером 0 мы будем называть нулевыми. В отличие от них строки
и столбцы, заполненные нулями, будем называть 0-строками и 0-столбцами.
34 Глава 2. Симплекс-метод
Очевидно следующее
мых к алгоритму: не все действия заданы однозначно. Таким образом, речь идет не об одном
алгоритме, а об их семействе. В дальнейшем неоднозначности будут конкретизироваться.
Данное замечание относится почти к любой процедуре, описанной в пособии.
5 Способы построения начальной допустимой базы рассматриваются в разделе 2.4.
2.2. Симплекс-метод в строчечной форме 35
Утверждение 2.12.
36 Глава 2. Симплекс-метод
0 q0s
q00 = q00 − qr0 .
qrs
0
Так как q0s < 0, qrs > 0, qr0 ≥ 0, то q00 ≥ q00 . Если текущая база
0
невырождена, то qr0 > 0 и поэтому q00 > q00 .
max(2x2 − x3 + x4 )
2x1 + x2 + x3 = 6,
x1 + 2x2 + x4 = 6,
xj ≥ 0 (j = 1, . . . , 4).
В качестве начальной допустимой базы можно взять B (0) {3, 4}, ей будет
соответствовать следующая таблица:
0 0 −2 1 −1
6 0
2 1 1 .
6 1 2 0 1
выбрать наименьший.
B (0) = h2, 1, 3, 4i ,
0 0 0 0 0 −200 −175 1100 2
0 0 1 0 0 −3 −5/4 7 1/50
Q(0) = 0 1 0 0 0 1/3 1/6 −1 −1/50 ,
0 0 0 1 0 75/2 −25/4 175/2 1/4
1 0 0 0 1 0 0 0 1
2.3. Зацикливание и способы защиты от него 41
B (1) = h2, 5, 3, 4i ,
0 600 0 0 0 0 −75 500 −2
0 9 1 0 0 0 1/4 −2 −1/25
Q(1) = 0 3 0 0 0 1 1/2 −3 −1/50 ,
0 −225/2 0 1 0 0 −25 200 1
1 0 0 0 1 0 0 0 1
B (2) = h6, 5, 3, 4i ,
0 3300 300 0 0 0 0 −100 −14
0 36 4 0 0 0 1 −8 −4/25
Q(2) =
0 −15 −2 0 0 1 0 1 3/50 ,
0 1575/2 100 1 0 0 0 0 −3
1 0 0 0 1 0 0 0 1
B (3) = h6, 7, 3, 4i ,
0 1800 100 0 0 100 0 0 −8
0 −84 −12 0 0 8 1 0 8/25
Q(3) = 0 −15 −2 0 0 1 0 1 3/50 ,
0 1575/2 100 1 0 0 0 0 −3
1 0 0 0 1 0 0 0 1
(4)
B = h8, 7, 3, 4i ,
0 −300 −200 0 0 300 25 0 0
0 −525/2 −75/2 0 0 25 25/8 0 1
Q(4) = 0 3/4 1/4 0 0 −1/2 −3/16 1 0 ,
0 0 −25/2 1 0 75 75/8 0 0
1 525/2 75/2 0 1 −25 −25/8 0 0
42 Глава 2. Симплекс-метод
B (5) = h8, 1, 3, 4i ,
0 0 −100 0 0 100 −50 400 0
0 0 50 0 0 −150 −125/2 350 1
Q(5) = 0 1 1/3 0 0 −2/3 −1/4 4/3 0 .
0 0 −25/2 1 0 75 75/8 0 0
1 0 −50 0 1 150 125/2 −350 0
№ B s I r
0 h2, 1, 3, 4i 5 {2, 3} 2
1 h2, 5, 3, 4i 6 {1, 2} 1
2 h6, 5, 3, 4i 7 {2} 2
3 h6, 7, 3, 4i 8 {1, 2} 1
4 h8, 7, 3, 4i 1 {2} 2
5 h8, 1, 3, 4i 2 {1, 2} 2
6 h2, 1, 3, 4i
B (1) = h2, 1, 5, 4i ,
0 0 0 16/3 0 0 −625/3 4700/3 10/3
0 0 1 2/25 0 0 −7/4 14 1/25
Q(1) = 0 1 0 −2/225 0 0 2/9 −16/9 −2/225 ,
0 0 0 2/75 0 1 −1/6 7/3 1/150
1 0 0 0 1 0 0 0 1
B (2) = h2, 6, 5, 4i ,
0 1875/2 0 −3 0 0 0 −100 −5
0 63/8 1 1/100 0 0 0 0 −3/100
Q(2) = 0 9/2 0 −1/25 0 0 1 −8 −1/25 ,
0 3/4 0 1/50 0 1 0 1 0
1 0 0 0 1 0 0 0 1
B (3) = h2, 6, 3, 4i ,
0 1050 0 0 0 150 0 50 −5
0 15/2 1 0 0 −1/2 0 −1/2 −3/100
Q(3) =
0 6 0 0 0 2 1 −6 −1/25 ,
0 75/2 0 1 0 50 0 50 0
1 0 0 0 1 0 0 0 1
(4)
B = h2, 6, 3, 8i ,
5 1050 0 0 5 150 0 50 0
3
/100 15/2 1 0 3/100 −1/2 0 −1/2 0
Q(4) =
/25
1 6 0 0 1/25 2 1 −6 0 ,
0 75/2 0 1 0 50 0 50 0
1 0 0 0 1 0 0 0 1
46 Глава 2. Симплекс-метод
№ B s I r
0 h2, 1, 3, 4i 5 {2, 3} 3
1 h2, 1, 5, 4i 6 {2} 2
2 h2, 6, 5, 4i 3 {1, 3} 3
3 h2, 6, 3, 4i 8 {4} 4
4 h2, 6, 3, 8i
0
Согласно замечанию 2.16 имеем q00 = q00 . Рассмотрим остальные слага-
емые в сумме (31):
0
• Если j ∈ bj = 0, поэтому q0j
/ B, j 6= s, то x bj = 0.
x
0
bs = 1 и, в силу правила выбора t, q0s
• Если j = s, то x ≥ 0, поэтому
0
q0j x
bj ≥ 0.
0
• Если j = t, то q0j < 0 и x
bj = −qis , где t = ji . На h-ой итера-
ции элемент qis — направляющий, поэтому x bj = −qis < 0, откуда
0
q0j bj > 0.
x
Таким образом, cb
x < q00 , что противоречит неравенству (30).
B (6) = h8, 2, 3, 4i ,
0 300 0 0 0 −100 −125 800 0
0 −150 0 0 0 −50 −25 150 1
Q(6) = 0 3 1 0 0 −2 −3/4 4 0 ,
0 75/2 0 1 0 50 0 50 0
1 150 0 0 1 50 25 −150 0
B (7) = h8, 2, 5, 4i ,
0 375 0 2 0 0 −125 900 0
0 −225/2 0 1 0 0 −25 200 1
Q(7) = 0 9/2 1 1/25 0 0 −3/4 6 0 ,
0 3/4 0 1/50 0 1 0 1 0
1 225/2 0 −1 1 0 25 −200 0
2.3. Зацикливание и способы защиты от него 49
B (8) = h8, 2, 5, 6i ,
5 1875/2 0 −3 5 0 0 −100 0
1 0 0 0 1 0 0 0 1
Q(8) =
/100
3 63/8 1 1/100 3/100 0 0 0 0 ,
0 3/4 0 1/50 0 1 0 1 0
1/25 9/2 0 −1/25 1/25 0 1 −8 0
B (9) = h8, 2, 7, 6i ,
5 2025/2 0 −1 5 100 0 0 0
1 0 0 0 1 0 0 0 1
Q(9) = 3/100 63/8 1 1/100 3/100 0 0 0 0 ,
0 3/4 0 1/50 0 1 0 1 0
1/25 21/2 0 3/25 1/25 8 1 0 0
№ B s I J r
0 h2, 1, 3, 4i 5 {2, 3} {1, 3} 2
1 h2, 5, 3, 4i 6 {1, 2} {2, 5} 1
2 h6, 5, 3, 4i 7 {2} {5} 2
3 h6, 7, 3, 4i 8 {1, 2} {6, 7} 1
4 h8, 7, 3, 4i 1 {2} {7} 2
5 h8, 1, 3, 4i 2 {1, 2} {8, 1} 2
6 h8, 2, 3, 4i 5 {3, 4} {3, 4} 3
7 h8, 2, 5, 4i 6 {4} {4} 4
8 h8, 2, 5, 6i 7 {3} {5} 3
9 h8, 2, 7, 6i
50 Глава 2. Симплекс-метод
max(−x1 − x2 − 5x4 )
x1 + x2 − x3 + 3x4 = 1,
x1 − 2x2 + 3x3 − x4 = 1,
5x1 − 4x2 + 7x3 + 3x4 = 5,
xj ≥ 0 (j = 1, 2, 3, 4).
max(−x5 − x6 − x7 )
x1 + x2 − x3 + 3x4 + x5 = 1,
x1 − 2x2 + 3x3 − x4 + x6 = 1,
5x1 − 4x2 + 7x3 + 3x4 + x7 = 5,
xj ≥ 0 (j = 1, 2, 3, 4).
52 Глава 2. Симплекс-метод
B (0) = h1, 2, 3i ,
−7 −7 5 −9 −5 0 0 0
1 1 1 −1 3 1 0 0
Q(0) = ,
1 1 −2 3 −1 0 1 0
5 5 −4 7 3 0 0 1
B (1) = h1, 2, 4i ,
0 0 −3/5 4/5 −4/5 0 0 7/5
0 0 9/5 −12/5 12/5 1 0 −1/5
Q(1) =
,
0 0 −6/5 8/5 −8/5 0 1 −1/5
1 1 −4/5 7/5 3/5 0 0 1/5
B (2) = h2, 4, 5i ,
0 0 0 0 0 1/3 0 4/3
0 0 1 −4/3 4/3 5/9 0 −1/9
Q(2) = .
0 0 0 0 0 2/3 1 −1/3
1 1 0 1/3 5/3 4/9 0 1/9
max cx
½ (33)
Ax = b,
x ≥ 0.
матрицы A.
54 Глава 2. Симплекс-метод
q00 = cx = ub, bb = B −1 b, b
c = c − uA, a = B −1 as .
b (38)
xB = B −1 b − B −1 N xN
модифицированным симплекс-методом.
Для нахождения начальной допустимой базы воспользуемся методом
искусственного базиса. Имеем:
µ ¶ µ ¶
3 −3 4 2 1 0 0
A= , b= , c = (0, 0, 0, 0, 1, 1).
1 1 1 3 0 1 2
bb = (0, 2)> , b
cN = (−2, 1/3 , − 7/3 , 4/3 ), откуда s = 1,
a = (−1, 2 )> ,
b откуда r = 2.
На третьей итерации:
µ ¶
3 −3
B = h1, 2i , B = , u = (−1, −1), b
cN = (0, 0, 0, 0, 1, 1).
1 1
58 Глава 2. Симплекс-метод
bb = (1, 1)> , b
cN = (0, 0, − 5/2 , − 1/2 ), откуда s = 3,
a = ( 7/6 , − 1/6 )> ,
b откуда r = 1.
На второй итерации:
µ ¶
4 −3
B = h3, 2i , B= , u = ( 1/7 , − 11/7 ),
1 1
uB = cB ,
Bbb = b,
Bba = (a1s , . . . , ams )> .
u = cB · Ft · Ft−1 · . . . · F1 , (40)
2.7. Столбцовая форма симплекс-метода 59
bb = Ft · Ft−1 · . . . · F1 · b,
(41)
a = Ft · Ft−1 · . . . · F1 · (a1s , . . . , ams )> .
b
max(x1 + x2 )
2x1 + x2 + x3 = 6,
x1 + 2x2 + x4 = 6,
xj ≥ 0, (j = 1, 2, 3, 4).
Рассмотрим соседнюю базу B (1) = h1, 4i. Чтобы теперь выразить все
переменные через небазисные, в (42) в формуле для x3 выразим x1 и
подставим полученное выражение во все остальные равенства. После
60 Глава 2. Симплекс-метод
(i = 0, 1, . . . , r − 1, r + 1, . . . , n).
Пусть
tis
− при j = s,
trs
t0ij =
tis trj
tij − при j = 0, . . . , s − 1, s + 1, . . . , n − m.
trs
62 Глава 2. Симплекс-метод
и r минимально.
Обратимся к вопросу, когда выгоднее применять симплекс-метод в
столбцовой форме, а когда в строчечной. Для представления строчечной
симплекс-таблицы необходимо хранить (и, следовательно, на каждой ите-
рации пересчитывать) (m+1)(n+1) элементов, а для представления столб-
цовой симплекс-таблицы необходимо хранить (n+1)(n−m+1) элементов.
Сравнивая эти величины, получаем, что если 2m < n, то выгоднее при-
менять строчечный симплекс-метод, а если 2m > n — столбцовый.
значно.
14 Леонид Генрихович Хачиян — российский математик; премия Фалкерсона, 1982, сов-
2.9. Задачи
Двойственность в линейном
программировании
69
70 Глава 3. Двойственность в линейном программировании
является ЗЛП
min(u1 b1 + u2 b2 + . . . + um bm )
u1 a11 + u2 a21 + . . . + um am1 ≥ c1 ,
(49)
u1 a12 + u2 a22 + . . . + um am2 ≥ c2 ,
..................................
u1 a1n + u2 a2n + . . . + um amn ≥ cn .
Обратим внимание на то, что переменная ui двойственной задачи не
ограничена по знаку. В матричной форме записи задачи (48), (49) имеют
вид соответственно:
max cx
min ub,
½ и
Ax = b,
uA ≥ c,
x≥0
max x1 min(u1 − u2 )
x1 − x2 = 1, u1 ≥ 1,
x3 = −1, −u1 ≥ 0,
x1 , x2 , x3 ≥ 0, u2 ≥ 0.
min ct
A −b (55)
−A · t ≥ b .
−E 0
max cx
½
Ax = b,
x ≥ 0,
u
eb = −(e e ye) · (−b, b, 0)> = −ce
v , w, t = ce
x,
e = −e
где x e — допустимое решение ЗЛП (48), причем u
t. Итак, x eb = ce
x. По
следствию 3.4 получаем, что xe — оптимальное решение ЗЛП (48).
max(x1 + x2 )
min(u1 + u2 )
2x1 + x2 = 1, ½
2u1 + 3u2 ≥ 1,
3x1 + 2x2 = 1,
u1 + 2u2 ≥ 1.
x1 ≥ 0, x2 ≥ 0,
ДОКАЗАТЕЛЬСТВО.
ДОСТАТОЧНОСТЬ. Пусть вектор x удовлетворяет условиям x ≥ 0, Ax = b,
cx ≥ δ. Домножая систему uA ≥ c справа на x получим неравенство
ub ≥ cx ≥ δ.
НЕОБХОДИМОСТЬ. Рассмотрим пару двойственных задач
max cx
min ub
½ и
Ax = b,
uA ≥ c
x≥0
Утверждение 3.21.
78 Глава 3. Двойственность в линейном программировании
ej ≥ 0
x и e1 a1j + u
u e2 a2j + . . . + u
em amj ≥ cj
max(−10x1 − 3x2 − x3 )
−3x1 − x2 + x4 = −3,
−6x1 − 2x2 − x3 + x5 = −5,
11x1 + 4x2 + 2x3 + x6 = 11,
xj ≥ 0 (i = 1, 2, . . . , 6).
−e
u2 + 2e
u3 ≥ −1,
u
e1 ≥ 0,
e3 ≥ 0
u
80 Глава 3. Двойственность в линейном программировании
−a2
−b = −e
x1 a1 − x
e2 a2
ua2 = c2
−a1
e
u
ub = u0
ua1 = c1
Рис. 3.1.
x
ej ≥ 0 и u
eaj ≥ cj
x
ej > 0 или u
eaj > cj .
82 Глава 3. Двойственность в линейном программировании
max xj
min(ub − λx0 )
Ax = b, и ½ (57)
uA − λc ≥ ej ,
cx ≥ x0 ,
λ ≥ 0,
x≥0
ub − λx0 = 0, uA − λc ≥ ej , λ ≥ 0. (58)
u
eA = uA + vA ≥ c + ej , u
eb = ub + vb = 0 + u0 .
1
e=
• Если λ > 0, то пусть u u. В силу (58)
λ
1 1 1
eA =
u uA ≥ c + ej , eb =
u ub + vb = x0 = u0 .
λ λ λ
x
ej ≥ 0 и u
eaj ≥ cj .
ej(j) > 0
x или e(j) aj > cj .
u
Положим
1 n (j) 1 n (j)
x
e= ∑ xe ,
n j=1
u
e= ∑ ue .
n j=1
e, u
Очевидно, x e удовлетворяют условиям теоремы.
xj ≥ 0 и uaj ≥ cj
e
u −a2
e00
u −a3
ua3 = c3
−a3
Рис. 3.2.
ДОКАЗАТЕЛЬСТВО.
НЕОБХОДИМОСТЬ. Пусть x e, u
e — оптимальные векторы прямой и двой-
eA ≥ c и x ≥ 0, то
ственной задачи (59) соответственно. Так как u
eAx ≥ cx, откуда
u
L(x, u
e) = cx + u
eb − u
eAx ≤ cx + u
eb − cx = u
eb.
Так как Ae
x ≤ b и u ≥ 0, то uAe
x ≤ ub, откуда
L(e
x, u) = ce
x + ub − uAe
x ≥ ce
x + ub − ub = ce
x.
e) ≤ u
Итак, L(x, u eb = ce
x ≤ L(e
x, u). Теперь неравенства (62) получаются
из соотношения (61).
ДОСТАТОЧНОСТЬ. Пусть неравенства (62) выполняются для всех x ≥ 0 и
всех u ≥ 0. Сначала докажем, что векторы xe≥0иu e ≥ 0 являются допу-
стимыми векторами прямой и двойственной задачи (59) соответственно.
Действительно, из левого неравенства в (62) получаем
(c − u
eA)x ≤ (c − u
eA)e
x. (63)
Следствие 3.39.
max cx
min ub
½ и (64)
Ax = b,
uA ≥ c
x≥0
3.5. Множители Лагранжа 87
Функция Лагранжа для таких задач вводится согласно формуле (60). Ана-
логично теореме 3.38 доказывается следующее необходимое и достаточ-
ное условие.
e) ≤ L(e
L(x, u e) = L(e
x, u x, u).
e) ≤ L(e
L(x, u e) = L(e
x, u x, u).
max(−x1 − x2 − x3 − x4 )
−x1 + x2 − 2x3 + 2x4 + x5 = −1,
x1 − 2x2 + 3x3 − 4x4 + x6 = −2,
xj ≥ 0 (j = 1, 2, . . . , 6).
Теперь r = 2, s = 2:
−11/2 0 1/2 1/2 0 5/2 3/2
4 1 0 1 0 −2 −1 .
3/2 0 1/2 −1/2 1 −1/2 −1/2
½ ¾
t0s t0j
= min : trj < 0 (j = 1, 2, . . . , n − m) .
|trs | |trj |
Пример 3.49.
0 1 1 1 1
0 −1 0 0 0
0 0 −1 0 0
(0)
T = 0 0 0 −1 0 ,
0 0 0 0 −1
−1 −1 1 −2 2
−2 1 −2 3 −4
92 Глава 3. Двойственность в линейном программировании
− 1/2 5/4 1/2 7/4 1/4
0 −1 0 0 0
0 0 −1 0 0
T (1) =
0 0 0 −1 0 ,
1
/2 − 1/4 1/2 − 3/4 − 1/4
−2 − 1/2 0 − 1/2 1/2
0 0 0 0 −1
− 11/2 5/2 1/2 1 3/2
4 −2 0 1 1
0 0 −1 0 0
T (2) =
0 0 0 −1 0 .
3/2
− 1/2 1/2 − 1/2 − 1/2
0 −1 0 0 0
0 0 0 0 −1
3.7. Задачи
e = (0, 1, 1),
x e = (3, 4, 0),
x
max(−4x1 + x2 + 5x3 ) max(x1 + 2x2 − 5x3 )
x2 + x3 = 2, x1 − 3x2 + 11x3 = −9,
3x1 + 2x2 − x3 = 1, 3x1 − x2 + 9x3 = 5,
xj ≥ 0 (j = 1, 2, 3); xj ≥ 0 (j = 1, 2, 3);
e = (1, 1, 1, 1, 1, 1, 1, 1),
x
min(10x1 + 3x2 + x3 )
3x1 + x2 ≥ 3,
6x1 + 2x2 + x3 ≥ 5,
−11x1 − 4x2 − 2x3 ≥ −11,
xj ≥ 0 (j = 1, 2, 3).
eиu
3.5. Пусть x e — решения систем
½ ½
Ax ≤ 0, uA ≥ 0,
и (68)
x≥0 u≥0
e, u
3.6. Для двойственных систем (68) показать существование таких x e,
e+u
что x eA > 0, u
e − Ae
x > 0.
Глава 4
Транспортная задача
95
96 Глава 4. Транспортная задача
где
b = (a1 , a2 , . . . , am , b1 , b2 , . . . , bm )> ,
c = (c11 , c12 , . . . , c1n , c21 , c22 , . . . , c2n , . . . , cm1 , cm2 , . . . , cmn ),
x = (x11 , x12 , . . . , x1n , x21 , x22 , . . . , x2n , . . . , xm1 , xm2 , . . . , xmn )> ,
4.1. Постановка задачи и основные свойства 97
1 1 ... 1
1 1 ... 1
1 1 ... 1
A= 1 1 1 .
1 1 1
.. .. ..
. . .
1 1 1
ai ≥ 0, bj ≥ 0 (i = 1, 2, . . . , m; j = 1, 2, . . . , n),
m n
∑ ai = ∑ bj .
i=1 j=1
поэтому rank A ≥ m + n − 1.
Следствие 4.6 имеет большое значение, так как известно большое чис-
ло задач, сводящихся к транспортной задаче с дополнительным условием
целочисленности решения. В качестве примера рассмотрим так называ-
емую задачу о назначениях.
Пусть имеется n работ и n механизмов и задана производительность
cij i-го механизма на j-ой работе (i = 1, 2, . . . , n; j = 1, 2, . . . , n). Требу-
ется установить взаимно однозначное соответствие между механизмами
и работами так, чтобы общая производительность была максимальной.
Для построения математической модели введем переменные xij , при-
нимающие значение 0 или 1 в зависимости от того, назначен или нет i-ый
механизм на j-ую работу. Получаем следующую задачу:
n n
max ∑ ∑ cij xij (70)
i=1 j=1
100 Глава 4. Транспортная задача
n
∑ xij = 1 (j = 1, 2, . . . , n), (71)
i=1
n
∑ xij = 1 (i = 1, 2, . . . , n), (72)
j=1
xij ≥ 0 (74)
Утверждение 4.7. Для того, чтобы система (76) была линейно неза-
висимой, необходимо и достаточно, чтобы соответствующий этой си-
стеме граф не содержал циклов.
4.4. Способы получения начального допустимого базисного вектора 101
ДОКАЗАТЕЛЬСТВО.
НЕОБХОДИМОСТЬ. Предположим, что в графе есть цикл, образованный
вершинами
(i0 , j0 ), (i1 , j1 ), . . . , (it , jt ), (77)
перечисленными в порядке обхода (i0 = it , j0 = jt ). В цикле (77) мо-
гут быть вершины двух типов. Вершину (ik , jk ) назовем угловой, если
соседние с ней вершины (ik−1 , jk−1 ) и (ik+1 , jk+1 ) не лежат на одной го-
ризонтали или вертикали. В противном случае вершина неугловая. Если
в (77) нет угловых вершин, то, очевидно, справедливо равенство
pi1 j1 − pi2 j2 + . . . − pit jt = 0.
Если же в (77) не все вершины угловые, то аналогичное равенство мож-
но записать, предварительно исключив из последовательности (77) все
неугловые вершины. В обоих случаях система (76) линейной зависима.
ДОСТАТОЧНОСТЬ. Пусть система (76) линейно зависима. Тогда найдется
нетривиальный набор чисел α1 , . . . , αt , такой, что
α1 pi1 j1 + . . . + αt pit jt = 0. (78)
Пусть αk 6= 0 для некоторого k ∈ {1, 2, . . . , t}. Так как ik -ая и (m + jk )-ая
компоненты столбца pik jk равна единице, то для того, чтобы (78) выпол-
нялось, необходимо, чтобы в системе (77) нашлись столбец, у которого
ik -ая компонента равна 1, и столбец, у которого (m + jk )-ая компонента
равна 1. Таким образом, всякая вершина (ik , jk ) с αk 6= 0 смежна двум
другим вершинам. Ввиду конечности числа вершин в графе, он содержит
цикл.
Следствие 4.8. Пусть t = m + n − 1. Для того, чтобы система
pi1 j1 , pi2 j2 , . . . , pit jt
образовывала столбцовую базу матрицы A ограничений транспортной
задачи, необходимо и достаточно, чтобы соответствующий этой си-
стеме граф не содержал циклов.
Шаг 3. Если i < m или j < n, то перейти на шаг 1. Иначе конец. База B
и начальное допустимое базисное решение X = (xij ) построены.
40 85 60
4 5 6
65
40 25
2 3 1
50
50
3 3 3
70
10 60
40 85 60
4 5 6
65
55 10
2 3 1
50
50
3 3 3
70
40 30
Добавим к базе еще один элемент (i, j), тогда граф, соответствующий по-
лученной системе, по утверждению 4.7 содержит цикл, очевидно, един-
ственный. Для определенности будем считать, что угловыми элементами
этого цикла являются
причем
i = i1 , j1 = j2 , . . . , is−2 = is−1 , js−1 = j
x0ij = xij + θ, x0i1 j1 = xi1 j1 − θ, x0i2 j2 = xi2 j2 + θ, . . . , x0is−1 js−1 = xis−1 js−1 − θ,
Если положить
θ = min {xik jk : k = 1, 3, . . . , s − 1} ,
то, очевидно, условие (79) будет выполнено и, кроме того, хотя бы од-
на из компонент, для определенности, x0ir ,jr , обратится в ноль. В базе
B заменим (ir , jr ) на (i, j). Полученная таким образом база B 0 соответ-
ствует допустимому базисному решению X 0 . Заметим, что если база B 0
невырождена, то (ir , jr ) определяется единственным образом.
106 Глава 4. Транспортная задача
(i, j) (i1 , j1 )
(i2 , j2 )
(is−2 , js−2 )
(is−1 , js−1 )
Рис. 4.1.
ui + vj = cij (i, j) ∈ B.
40 85 60
4 5 6
65 + − u1 = 0
55 10
2 3 1
50 u2 = −5
50
3 3 3
70 − + u3 = −2
40 30
v1 = 5 v2 = 5 v3 = 6
40 85 60
4 5 6
65 + − 0
40 15 10
2 3 1
50 −5
50
3 3 3
70 − + −2
70
4 5 6
40 85 60
4 5 6
65 0
40 25
2 3 1
50 −4
50
3 3 3
70 −2
60 10
4 5 5
x11 = 40, x12 = 25, x23 = 50, x32 = 60, x33 = 10,
x13 = x21 = x22 = x31 = 0
4 · 40 + 5 · 25 + 1 · 50 + 3 · 60 + 3 · 10 = 545.
40 85 60 40 85 60
2 1 5 2 1 5
50 50 0
50 50
3 4 3 3 4 3
60 60 − + 2
40 20 40 20
4 6 6 4 6 6
75 75 + − 5
35 40 35 40
1 1 1
110 Глава 4. Транспортная задача
40 85 60 40 85 60
2 1 5 2 1 5
50 0 50 0
50 50
3 4 3 3 4 3
60 − + 4 60 4
0 60 0 60
4 6 6 4 6 6
75 + − 5 75 5
40 35 40 35
−1 1 −1 −1 1 −1
Глава 5
Целочисленное линейное
программирование
111
112 Глава 5. Целочисленное линейное программирование
f (x) = cx = c1 x1 + c2 x2 + . . . + cn xn .
y ∈ {0, 1} ,
(82)
y=1 ⇔ x > 0.
Получаем
f (x) = c0 y + cx.
5.2.3. Дихотомии
G1 (x1 , x2 , . . . , xn ) ≥ g1 , G2 (x1 , x2 , . . . , xn ) ≥ g2 .
Легко видеть, что неравенство (85) выполнено тогда и только тогда, ко-
гда элементарная дизъюнкия (84) обращается в 1. Система ограничений
ЗЦЛП состоит из неравенств вида (85) и требований
xj ∈ {0, 1} .
Рис. 5.1.
nk ≤ (n − 1)k,
то
m
y = − {a0 } + ∑ {ai } xi ∈ Z.
i=1
max(x1 + x2 )
x1 ≥ 0,
x2 ≥ 0,
−2x1 +3x2 ≤ 4,
3x1 −2x2 ≤ 1,
x1 ∈ Z,
x2 ∈ Z.
5.4. Циклический алгоритм Гомори 121
max(x1 + x2 )
−2x1 +3x2 +x3 = 4,
3x1 −2x2 +x4 = 1,
xj ≥ 0, xj ∈ Z (j = 1, 2, 3, 4)
0 −1 −1 1/3 1/3 −5/3 5 1 1
1/3 1/3 −2/3 11/5 3/5 2/5
0 −1 0
0 0 −1 0 0 −1 14/5 2/5 3/5
4 −2 3 14/3 2/3 −5/3 0 0 −1
1 3 −2 0 −1 0 0 −1 0
11 3 2
x1 = + (−x4 ) + (−x3 ).
5 5 5
1 3 2
x5 = − + x4 + x3 .
5 5 5
симплекс-метод:
5 1 1 14/3 5/3 1/3
11/5 ∗ 3/5 2/5 2 1 0
14
/5 2/5 3/5 8/3 2/3 1/3
0 0 −1 0 0 −1
0 −1 0 1/3 −5/3 2/3
−1/5 −3/5 −2/5 0 −1 0
14/3 ∗ 5/3 1/3 11/3 1/3 5/3
4 1 1
5/3 1/3
2/3
2 1 0 2 1 0
8/3 2/3 1/3 2 0 1 2 0 1
4/3 2/3
1/3
0 0 −1 2 2 −1
1/3 −5/3 2/3 −1 −3 2 0 −1 0
0 −1 0 0 −1 0 1/3 −1/3 −2/3
−2/3 −2/3 −1/3 0 0 −1 0 0 −1
(96)
5.4. Циклический алгоритм Гомори 123
11 1 5
x0 = − x4 − x6 .
3 3 3
2 1 2
x7 = − + x4 + x6
3 3 3
11/3 ∗ 1/3 5/3 3 1 1
5/3 1/3 2/3 1 1 0
2 0 1 2 0 1
4/3 2/3 1/3 0 2 −1
0 −1 0 2 −3 2
1/3 −1/3 −2/3
1 −1 0
0 0 −1 0 0 −1
−2/3 −1/3 −2/3 0 −1 0
e = (1, 2)> .
Искомая оптимальная точка: x
Заметим, что задачу можно решить графически. На рисунке 5.11
светло-серым цветом закрашена область допустимых значений соответ-
ствующей ЗЛП. Серым цветом закрашена выпуклая оболочка всех цело-
чиселенных допустимых точек. Очевидно, что максимум функции x1 +x2
достигается в точке (1, 2)> . Заметим, что округление компонент решения
( 11/5 , 14/5 ) соответствующей ЗЛП приводит к точке (2, 2), которая не яв-
ляется даже допустимой для исходной ЗЦЛП.
На рисунке 5.11 также отмечены решения промежуточных ЗЛП и
124 Глава 5. Целочисленное линейное программирование
1 3 2
x5 = − + x + x = 2 − x1 ≥ 0,
5 5 4 5 3
2 2 1
x6 = − + x + x = 2 − x2 ≥ 0,
3 3 5 3 3
2 1 2
x7 = − + x + x = 1 − x1 ≥ 0.
3 3 4 3 6
x2
( 11/5 , 14/5 )
(2, 8/3 )
(2, 5/2 )
(1, 2)
( 5/3 , 2) x2 = 2
(0, 4/3 )
x1 = 1 x1 = 2
x1
(0, 0)
( 1/3 , 0)
Рис. 5.2.
1 1 1
x6 = − + x + x = 4 − x1 ≥ 0,
2 14 3 14 4
1 1 1
x7 = − + x6 + x4 = 7 − x1 − x2 ≥ 0.
2 2 2
r = min {i : ti0 ∈
/Z (i = 0, 1, . . . , n)} .
x1 = 4
(2, 9/2 )
(0, 4)
(4, 7/2 )
( 9/2 , 13/4 )
(4, 3)
x1 + x2 = 7
max(3x1 + 2x2 ) x1
(0, 0) (4, 0)
Рис. 5.3.
причем x ∈ Z, x ≥ 0, xj ∈ Z, xj ≥ 0, a0 ∈ Z, aj ∈ Z (j = 1, 2, . . . , n).
Тогда для любого λ, такого, что λ ≥ 1, λ ∈ Z, справедливо неравенство
ja k m ja k
+∑
0 j
(−xj ) ≥ 0. (101)
λ j=1 λ
поэтому
n
aj a0
∑ λ
xj ≤ .
λ
j=1
5.5. Полностью целочисленный алгоритм 131
Неравенство в (104) выполнено, так как bt10 /λc < 0 и t1s < 0. Итак, t010 >
t10 , что невозможно, так как нулевой столбец лексикографически убывает.
Поэтому на некоторой итерации элемент t10 принимает положительное
значение и далее не изменяется.
Проводя аналогичные рассуждения для всех элементов нулевого столб-
ца симплекс-таблицы (можно провести индукцию), придем к заключе-
нию, что через конечное число шагов все элементы нулевого столбца
станут неотрицательными. На этом алгоритм завершит свою работу.
min(x1 + x2 + x3 + x4 )
−x1 + x2 − 2x3 + 2x4 ≤ −1,
x1 − 2x2 + 3x3 − 4x4 ≤ −2,
xj ≥ 0, xj ∈ Z (j = 1, 2, 3, 4).
−1 1 1 0 2
0 1 1 1 1
0 −1 0 0 0 1 −1 0 1 −1
0 0 −1 0 0 0 0 −1 0 0
0 0 0 −1 0 0 0 0 −1 0
0 0 0 0 −1 0 0 0 0 −1
−1 −1 1 −2∗ 2 0 −1 1 −1 1
−2 1 −2 3 −4 −3 1 −2 2 −3∗
−1 −1 0 −1 1 −1 0 −1 0 −1
max(c1 x1 + c2 x2 + . . . + ck xk )
½ (105)
a1 x1 + a2 x2 + . . . + ak xk ≤ y,
xj ∈ Z (j = 1, 2, . . . , k),
Теперь ясно, что в соотношении (107) все элементы, среди которых ищет-
ся максимальный, кроме первого, можно заменить на fk (y − ak ) + ck , т. е.
max(8x1 + 5x2 + x3 )
½ (110)
3x1 + 2x2 + x3 ≤ 13,
xj ∈ Z, xj ≥ 0 (j = 1, 2, 3);
методом динамического программирования.
По формулам (106) и (108) вычислим элементы таблицы F :
y 1 2 3 4 5 6 7 8 9 10 11 12 13
f1 (y) 0 0 8 8 8 16 16 16 24 24 24 32 32
F =
f2 (y) 0 5 8 10 13 16 18 21 24 26 29 32 34
f3 (y) 1 5 8 10 13 16 18 21 24 26 29 32 34
y 1 2 3 4 5 6 7 8 9 10 11 12 13
f1 (y) 0 0 1 1 1 1 1 1 1 1 1 1 1
I=
f2 (y) 0 2 1 2 2 1 2 2 1 2 2 1 2
f3 (y) 3 2 1 2 2 1 2 2 1 2 2 1 2
i(3, 13) = 2,
i(3, 13 − a2 ) = i(3, 11) = 2,
i(3, 11 − a2 ) = i(3, 9) = 1,
i(3, 9 − a1 ) = i(3, 6) = 1,
i(3, 6 − a1 ) = i(3, 6) = 1.
max(−5x1 + 4x2 )
4x1 + 3x2 ≤ 22, (111)
−4x1 + 3x2 ≤ 2,
x1 ∈ Z, x2 ∈ Z.
P
e = ( 5/2 , 4),
x
e0 = 7/2
x
P0 P1
x1 ≤ 2, x1 ≥ 3,
x
e = (2, 10/3 ), x
e = (3, 10/3 ),
x
e0 = 10/3 x
e0 = −5/3
P000 P001
x1 ≤ 2, x1 ≤ 2,
x2 ≤ 3, x2 ≤ 3,
x1 ≤ 1, x1 ≥ 2,
e = (1, 2),
x e = (2, 3),
x
x
e0 = 3 x
e0 = 2
Рис. 5.4.
решение этой задачи приводится лишь для иллюстрации метода ветвей и границ.
146 Глава 5. Целочисленное линейное программирование
max x1
t
(2 + 1)x1 = 2t x2
0 ≤ x2 ≤ 2t ,
x1 , x2 ∈ Z,
5.9. Задачи
7
9
21
26
31
33
Рис. 5.5.
5.4. Пусть
µ ¶ µ ¶
α −α − 1 0
A(α) = , b= .
−2α + 2 2α 1
149
150 Литература
151
152 Предметный указатель