Математическое программирование. Методические указания и

advertisement
Министерство образования Республики Беларусь
БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра «Высшая математика № 2»
МАТЕМАТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
Методические указания и задания
к практическим занятиям
Минск 2009
УДК 519.85 (075.8)
ББК 18.87я7
М 33
Составители:
А.Д. Корзников, В.В. Павлов
Рецензенты:
Л.Д. Матвеева, Е.А. Федосик
Настоящие методические указания и задания содержат основные
теоретические сведения и примеры решения типовых задач по темам «Линейное
программирование», «Транспортная задача», «Матричные игры», «Сетевое
планирование», «Максимальный поток в сети».
Методические указания предназначены для студентов экономических
специальностей БНТУ. А также могут быть полезны преподавателям, ведущим
практические занятия по данному курсу.
© БНТУ, 2009
1. ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
Задание 1 для самостоятельного решения
Пусть предприятие выпускает n видов продукции Pj ( j  1, n) . Для их
изготовления требуется затратить m видов ресурсов Bi (i  1, m) . Известны
следующие величины: aij –- количество единиц ресурса вида Bi необходимого
на изготовление единицы продукции Pj (i  1, m, j  1, n) ; bi –-количество ресурса
вида Bi , которым располагает предприятие; c j –- стоимость единицы продукции
Pj . Требуется найти план предприятия, обеспечивающий ему максимальную
прибыль, при этом: а) составить математическую модель задачи; б) найти план
выпуска продукции симплекс-методом, привести экономический смысл
переменных, участвующих в решении задачи; в) построить математическую
модель двойственной задачи; г) из решения исходной задачи, используя
соответствие между переменными пары взаимодвойственных задач, найти
решение двойственной задачи; д) указать наиболее дефицитный и избыточный
ресурс, если он есть.
Необходимые числовые данные приведены в табл. 1.
A  aij
mn
, B '  bi (i  1, m), C '  c j ( j  1, n) .
Таблица 1
№ варианта
1
2
3
4
Данные А, В, С.
2
A  1
1

5
A   5
2

1 1 1
0 1 1  , B   280; 8; 250  , C   4; 3; 6; 7 
2 1 0 
1
A   2
0

2
A   4
2

3 0 1
1 0 0  , B   4; 3; 3 , C   2; 6; 2; 3 
1 4 1 
4 1 5
1 4 1  , B   34; 16; 22  , C   7; 3; 4; 2 
3 1 2 
7 4
2 4  , B   24; 10; 6  , C  18; 12; 8 
1 1 
3
Окончание табл.1
5
6
7
8
9
10
2
A   3
2

2
A   7
5

1 6
3 9  , B  12; 27; 6  , C  14; 6; 22 
1 2 
1
A   6
4

4
A   6
6

1
A   0
1

1 1
4 0 8
2 2 6  , B  12; 8; 48  , C   3; 4; 3; 1
8 4 3 
1 
5 4 3  , B  16; 110; 100  , C   60; 70; 120; 130 
6 10 13 
1 2
1 3  , B   8; 18; 6  , C   24; 4; 8 
1 2 
1 0 2
1 1 0  , B   2; 2; 2  , C   4; 7; 4; 2 
0 1 0 
1 2 1
A   2 1 1  , B  18; 16; 8  , C   3; 4; 2 .
1 1 0


Методические указания к решению задания 1
2 2 1 1
П р и м е р. Дано: A   1 0 1 1  , В = (280; 20; 250), С = (4; 2; 6; 7).
1 2 1 0


Р е ш е н и е. 1. Обозначим через x j , j  1,4 –- количество планируемой к
выпуску j – ой продукции. Суммарная прибыль предприятия выразится формулой z  4 x1  2 x2  6 x3  7 x4 . Тогда математическая модель задачи имеет
следующий вид:
z  4 x1  2 x2  6 x3  7 x4  max,
2 x1  2 x2  x3  x4  280,

 x3  x4  20, x j  0, j  1,4
 x1
 x  2x  x
 250.
2
3
 1
4
(1)
2. Сведем математическую модель (1) к канонической задаче линейного
программирования путем введения в ограничения вида неравенств «≤»
неотрицательных дополнительных слабых переменных x5 , x6 , x7 :
4 x1  2 x2  6 x3  7 x4  max,
 280,
2 x1  2 x2  x3  x4  x5

 x3  x4  x6
 20, x j  0, j  1,7
 x1
 x  2x  x
 x7  250.
2
3
 1
(2)
Переменные x5 , x6 , x7 в задаче (2) – базисные, начальный базисный план
X1   0; 0; 0; 0; 280; 20; 250 . Составим первоначальную симплекс-таблицу:
Базис
x1
x2
x3
x4
x5
x6
x7
Значение
(bi)
x5
x6
x7
Z
2
1
1
2
0
2
1
1
1
1
0
0
0
1
0
0
0
1
280
20
250
-4
-2
-6
1
1
0
-7
0
0
0
0
Поскольку в z – строке есть отрицательные числа (z0 не учитывается), то
выбираем среди них наименьшее: min   4;  2;  6;  7    7 . Столбец с номером
j0  4 является ведущим, а переменная x4 будет включена в базис. Найдем
теперь переменную, которая будет исключаться из базиса. Для этого в ведущем

b 

 280 20 
столбце найдем min  i  для aij0  0 , т.е. min 
;
  20 . Следовательно,
1
1
a



 ij0 

строка i0  2 будет ведущей, переменная x6 будет исключена из базиса, вместо
нее войдет x4 . Элемент ai0 j0  a24  1 будет ведущим. С помощью ведущего
элемента проведем одну итерацию методом Жордано – Гаусса и перейдем к
следующей симплекс-таблице.
Делим элементы ведущей строки на ведущий элемент и исключаем
переменную x4 из первой строки и из z-строки.
Базис
x1
x2
x3
x4
x5
x6
x7
Значение
(bi)
x5
x4
x7
Z
1
1
1
2
0
2
0
1
1
0
1
0
1
0
0
–1
1
0
0
0
1
260
20
250
3
–2
1
0
0
7
0
140
5
Поскольку в z – строке есть отрицательные числа, то план
X 2   0; 0; 0; 20; 260; 0; 250  не является оптимальным для задачи (2).
Выполняя описанные выше действия, переходим к следующей симплекстаблице:
Базис
x1
x2
x3
x4
x5
x6
x7
Значение
(bi)
x5
x4
x2
z
0
1
1/2
0
0
1
-1
1
1/2
0
1
0
1
0
0
-1
1
0
-1
0
1/2
10
20
125
4
0
2
0
0
7
1
390
Так как в z – строке все числа неотрицательные, то полученный план
X 3   0; 125; 0; 20; 10; 0; 0  будет оптимальным для задачи (2). Для исходной
задачи (1) оптимальным планом будет план X *   0; 125; 0; 20  , который показывает, что ресурс первого вида остался в избытке в 10 единиц ( x5  10 ),
максимальная прибыль предприятия при этом составит z = 390 ден.ед.
3. Построим двойственную задачу для задачи (1). Обозначим через
yi (i  1, m) цену единицы ресурса i-го вида. Тогда общая цена ресурсов равна
280 y1  20 y2  250 y3 . Математическая модель двойственной задачи для задачи
(1) имеет следующий вид:
  280 y1  20 y2  250 y3  min,
2 y1  y2  y3  4,
2 y
 2 y3  2,
 1
yi  0, j  1,3

y

y

y

6,
2
3
 1
 y1  y2
 7.
(3)
4. На основании соответствия между переменными пары взаимодвойственных задач найдем решение задачи (3):
min  zmax  390, Y *   0; 7; 1; 4; 0; 2; 0  .
5. Как показывают значения оценок (оптимальные цены), наиболее
дефицитным ресурсом является ресурс вида 2, так как y2*  7, y3*  1, а ресурс
вида 1 является избыточным, так как y1*  0 , его избыток составляет 10 единиц.
6
2. ТРАНСПОРТНАЯ ЗАДАЧА ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ
Задание 2 для самостоятельного решения
В пунктах Ai (i  1, m) находится некоторый продукт в объемах ai (i  1, m)
единиц. Спрос на этот продукт в пунктах потребления B j ( j  1, n) , составляет
соответственно b j ( j  1, n) единиц. Известна стоимость cij перевозок единицы
груза из пункта Ai в пункт B j (i  1, m, j  1, n) . Требуется найти план перевозок
продукции из пунктов производства в пункты назначения, минимизирующий
суммарные затраты по доставке продукции. Требуется: а) составить
математическую модель задачи; б) найти оптимальный план перевозок
продукции методом потенциалов при условии, что продукция из указанного
пункта Ak вывозится полностью; в) дать анализ решения. Числовые данные
ai (i  1, m) , b j ( j  1, n) , C || cij ||mn даны в табл. 2.
Таблица 2
№
варианта
1
2
3
4
5
6
Числовые данные ai (i  1, m) , b j ( j  1, n) , C || cij ||mn .
2
a   200; 500; 350  , b   300; 100; 400; 100  , C   8
2

3
a   350; 250; 450  , b   300; 250; 100; 200  , C   7
7

a   700; 200; 500  , b
a   350; 650; 400  , b
a   400; 250; 350  , b
a   300; 700; 400  , b
2
  400; 300; 300; 250  , C   7
6

4
  300; 450; 150; 300  , C   8
4

7
  200; 250; 50; 400  , C   6
8

5
 150; 100; 550; 450  , C   5
3

6 3
7 10
7 5
7
5
3 8
11 8
7 6
4 6
9 11
8 7
6 5
7 6
5
9
2 5
12 10
6 9
8 2
7 5
5
5  , A2
3 
8
2  , A3
6 
4
8  , A3
5 
5 
10  , A2
2 
4
5  , A3
7 
7
3  , A1
9 
7
7
8
9
10
Окончание табл.2
 6 11 5 7 
a   300; 650; 250  , b   300; 100; 150; 450  , C   8 9 11 10  , A2
2 6 5 3 


4
a   250; 450; 300  , b   200; 400; 50; 250  , C   5
10

8
a   600; 800; 100  , b   300; 550; 150; 300  , C   7
5

5
a   450; 250; 600  , b   200; 200; 350; 250  , C   9
5

9 3
2 5 6  , A3
11 7 6 
5
8 9 5
2 3 8  , A1
8 6 7 
9 4 8
2 7 5  , A3
7 6 4 
Методические указания к решению задания 2
8 5 3 7 
П р и м е р. Дано: a  19; 12; 11 , b   9; 10; 8; 11 , C   2 4 6 3  , A1
5 2 3 7


Р е ш е н и е. 1. Построение математической модели. Обозначим через
xij ( i  1,3; j  1,4) количество продукта, перевозимого от i-го поставщика j-му
потребителю. Тогда общая стоимость перевозок
3
4
f   cij xij  8 x11  5 x12  3x13  7 x14  2 x21  4 x22  6 x23  3x24 
i 1 j 1
(4)
 5 x31  2 x32  3x33  7 x34 .
Поскольку суммарный объем вывезенных изделий не может превышать их
объемов производства, то переменные xij ( i  1,3; j  1,4) должны удовлетворять
следующим ограничениям:
 x11  x12  x13  x14  19,

 x21  x22  x23  x24  12,
 x  x  x  x  11.
34
 31 32 33
8
(5)
Объем суммарных поставок каждому заказчику должен удовлетворять его
потребность, т.е. для переменных xij ( i  1,3; j  1,4) выполняются следующие
равенства:
 x11  x21  x31  9,
 x  x  x  10,
 12
22
32
(6)

x

x

x

8
23
33
 13
 x14  x24  x34  11.
Объем перевозок продукции от любого поставщика любому потребителю
не может быть отрицательным числом, поэтому справедливы ограничения:
xij  0, ( i  1,3; j  1,4) .
(7)
Таким образом, сформулированная выше задача свелась к задаче нахождения таких значений переменных xij ( i  1,3; j  1,4) , которые удовлетворяли
бы условиям (5) – (7) и обеспечивали бы минимальное значение целевой
функции (1). Такая задача (4) – (7) называется открытой моделью транспортной задачи (ТЗ).
2. Сведение полученной модели к стандартной транспортной задаче.
Стандартная ТЗ разрешима только в том случае, если выполняется условие
баланса:
3
4
 a  b
i
i 1
3
 ai  42;
В нашей задаче
i 1
j 1
4
b
j 1
j
j
.
(8)
 38 , т.е. условие баланса (8) нарушено. В
связи с этим необходимо привести ТЗ (4) – (7) к стандартной (закрытой модели),
для которой будет выполняться условие баланса (8).
3
Поскольку
4
 a  b
i 1
i
j 1
j
(42 > 38), введем фиктивного потребителя под
3
4
i 1
j 1
номером 5 с объемом потребления b5   ai   b j  42  38  4 (тыс. изд.).
Стоимости перевозок от каждого поставщика этому фиктивному
потребителю полагаем равными нулю, т.е. ci 5  0; i  1,3 . Получим следующую
стандартную ТЗ:
3
4
f   cij xij  8 x11  5 x12  3x13  7 x14  0 x15  2 x21  4 x22  6 x23  3x24 
i 1 j 1
(9)
 0 x25  5 x31  2 x32  3x33  7 x34  0 x35  min.
9
 x11  x12  x13  x14  x15  19,

 x21  x22  x23  x24  x25  12,
 x  x  x  x  x  11.
34
35
 31 32 33
(10)
 x11  x21  x31  9,
 x  x  x  10,
22
32
 12
 x13  x23  x33  8,
 x  x  x  11,
24
34
 14
 x15  x25  x35  4.
(11)
xij  0 ( i  1,3; j  1,4)
(12)
Решение ТЗ (9)–(12) будет решением исходной открытой задачи (4)–(7).
Действительно, в решении задачи (9)–(12) спрос всех реальных потребителей
будет удовлетворен полностью, т.к. спрос фиктивного потребителя равен имеющемуся избытку продукта. Поэтому совокупность перевозок к реальным потребителям дает план исходной открытой задачи, а значение фиктивных перевозок –
объемы продукта, остающегося у соответствующих поставщиков. Поскольку
расходы на перевозки к фиктивному потребителю равны нулю, минимум
целевой функции в обеих задачах имеет одно и то же значение.
3. Решение задания методом потенциалов. 1. Построение начального допустимого опорного плана. Занесем данные задания (9)–(11) в табл. 3, в которой
в верхнем правом углу каждой клетки (i, j), расположенной в i-строке и j-м
столбце, помещены соответствующие стоимости cij ( i  1,3; j  1,4) и найдем
начальный опорный план методом северо-западного угла (можно построить его
и другими методами, например, методом минимального элемента).
Таблица 3
bj
ai
19
12
11
9
10
8
9
8
11
4
5
3
7
0
4
6
3
0
7
0
10
2
0
5
8
2
4
3
7
4
Начальный опорный план (см.табл. 3) является вырожденным, т.к. базисная переменная x22  0 Пустые клетки начального опорного плана в табл. 3 соответствуют небазисным переменным xij . Множество индексов базисных перемен10
ных (занятых клеток табл. 3) Uб  1,1 , 1,2 ,  2,2 ,  2,3 ,  2,4  , 3,4  , 3,5
образует базисное множество. Тогда множество индексов небазисных
переменных (пустых клеток табл. 3) образует небазисное множество
Uн  U \ Uб ,
где U – множество индексов всех клеток табл. 3. Общая стоимость перевозок
равна f  231 (ден.ед.).
2. Улучшение допустимого опорного плана. Проверим выполнение критерия оптимальности для построенного опорного плана. Строке 2 (с наибольшим
числом базисных клеток) припишем нулевой потенциал u2  0 и, используя
уравнения
ui  v j  cij ,  i, j   U б ,
найдем потенциалы всех строк и столбцов для базисных (заполненных) клеток
табл. 3. Нулевой потенциал можно выбирать для произвольной строки (столбца).
Далее по формулам
ij  ui  v j  cij ,  i, j   U н
подсчитаем оценки небазисных (пустых) клеток и занесем их в левые нижние
углы пустых клеток табл. 4.
Таблица 4
j
Ui
i
8
5
9
10
2
3
4
4
-
0
7
-4
6 +
8
0
-3
3
0
4
-4
5
5
2
+
3
7
7
6
6
V1 = 7
7
V2 = 4
0
7
4
V4 = 3
V5 =– 4
U1  1
U2  0
U3  4
-
V3 = 6
Анализ оценок ij ,  i, j  U н показывает, что данный опорный план неоптимален, т.к. среди оценок  ij есть положительные. Поэтому переходим к итерации построения нового плана, лучшего в том смысле, что значения целевой
функции (1) будет на нем меньше, чем на начальном.
Найдем такую клетку в табл. 4, в которой находится максимальное значение оценки ij ,  i, j  U н . Это будет клетка (3, 3). Следовательно, переменная
x33 будет вводиться в базис. С помощью этой клетки и базисных клеток построим цикл { 3,3 ,  3,4  ,  2,4  ,  2,3 ,  3,3} , считая первым звеном цикла, например,
горизонтальное звено из клетки (3, 3). В табл. 4 цикл изображен стрелками. По11
мечаем клетки цикла поочередно знаками « + »,« – », причем клетка (3, 3), вводимая в базис, помечается знаком « + ». Среди клеток, помеченных знаком « – »,
выбираем ту, в которой значение xij минимально. В нашем случае это клетка (3,
4), где x34  7. Обозначим 0  x34  7. Число 0 = 7 добавим к перевозкам в
клетках, помеченных знаком « + », и вычтем из величин xij в клетках,
помеченных знаком « – ». Объемы xij остальных перевозок не изменяем. Клетка
(3, 4) удаляется из базисного множества, а клетка (3, 3) вводится в базисное
множество. В результате получим новый опорный план (табл.5).
Таблица 5
8
9
5
3
7
0
4
6
3
0
10
2
0
5
1
2
11
3
7
7
0
4
Новый опорный план оказывается лучше начального, т.к. общая стоимость
перевозок f  182 (ден. ед.). Однако он не является оптимальным. Вычисляя
оценки  ij , как указано выше, получим среди них положительные. Переходим к
следующей итерации, используя в дальнейшем аналогичные вычисления метода
потенциалов (либо с помощью ПЭВМ). В итоге получим оптимальный план,
общая стоимость которого f  126 (ден.ед.).
Таблица 6
8
5
3
8
2
4
7
6
8
0
4
3
0
7
0
4
5
1
7
2
3
10
План перевозок, приведенный в табл. 6, является оптимальным для задачи
(9)–(12). Так как пятый потребитель является фиктивным, то оптимальным
планом для исходной ТЗ (4)–(7) будет следующий:
x13  8, x14  7, x21  8, x24  4, x31  1, x32  10 ,
остальные xij = 0, а значение целевой функции f = 126. Из табл. 6 видно, что
запросы всех потребителей удовлетворены.
Необходимо вывезти весь продукт из пункта A1 . Для этого в последнем
плане в позиции (1, 5) поставим c15  9 , т.е. максимальную транспортную
12
издержку, чтобы доставка была заведомо невыгодной. Решая задачу методом
потенциалов, получаем оптимальный план (табл.7).
Таблица 7
bj
9
ai
19
8
Vj
8
5
-2
4
2
7
V1 = 6
V2 = 5
3
V3 = 3
U1  0
0
U 2  4
0
U 3  3
-6
-1
3
-3
9
3
-7
5
-2
8
6
Ui
4
7
8
-3
9
11
3
3
2
12
11
10
7
-3
V4 = 7
4
V5 =3
x12  3, x13  8, x14  8, x21  9, x24  3, x32  7 .
Остальные xij = 0, значение целевой функции f = 136 ден. ед.
Из пункта А1 продукт вывезен полностью, но значение целевой функции
стало больше, из пункта А3 продукт не вывезен полностью в объеме 4 единиц.
3. МАТРИЧНЫЕ ИГРЫ
3.1. Упрощение матричной игры и решение в смешанных стратегиях
Задание 3 для самостоятельного решения
Найти решение матричной игры, упростив предварительно платежную
матрицу.
Варианты
4
3
1. 
5

2
2 1 3
1 4 2 
;
3 1 4

1 3 1
2 0 1 1 
6
1  1 2

5
0 

2.
; 3. 
3 1 1 2 
7



 0  1 1  1
4
4 3 5
 2  3 1

 4 1 2
3 6 4
; 4. 
 0
5 3 6
1 3


3 5 3
 2 1  4
0
1 
;
6

3
13
4
3
5. 
5

2
2 1 3
3
2
4 
 5
 3
 3
 6
1 4 2 
2
4
6 

; 6.
; 7. 
 1
 4
3 1 4
1  3  2




1 3 1
4 
 5  3 2
 2
 3 4
2 5
9. 
6 3

4 1
1 6 
3 2 
;
2 4

1 3 
4
6
10. 
3

8
2 5
6 
3
5
4 3
5 
; 8. 
2
3 5
7 


2  2  1
7
4 2 6
4 3 4 
;
6 4 5

5 3 6
5 3 7
5 4 5 
7 5 6

6 4 7
Методические указания к решению задания 3
П р и м е р. Дана платежная матрица
 5 3 2 4
7 4 3 5
 . Найти решение матричной игры,
A
6 3 5 7


 3 4 3 6
Р е ш е н и е. Стратегия А1 – доминируемая, а А2 – доминирующая, поскольку элементы второй строки платежной матрицы больше соответствующих
элементов первой строки либо равны им, и стратегия А1 заведомо невыгодная
для игрока А, т.к. в этом случае он меньше выиграет, какую бы стратегию не
избрал игрок В. Следовательно, первую строку можно вычеркнуть из платежной
матрицы. Аналогично вычеркиваем четвертую строку платежной матрицы,
получаем:
7 4 3 5
A1  
.
6 3 5 7
Стратегия В1 – доминируемая, а В2 – доминирующая, поскольку элементы
второго столбца сокращенной платежной матрицы меньше соответствующих
элементов первого столбца либо равны им; стратегия В1 заведомо невыгодная
для игрока В, т.к. в этом случае он больше проиграет, какую бы стратегию не
избрал игрок А. Следовательно, первый столбец матрицы А1 можно вычеркнуть.
Аналогично можно вычеркнуть четвертый столбец матрицы А1. В результате
получим
 4 3
A2  
.
 3 5
14
Найдем нижнюю и верхнюю цены игры:   3,   4 . Поскольку   
будем решать игру в смешанных стратегиях. Составим задачи:
Для игрока А:
f  x1  x2  min
4 x1  3 x2  1,

3 x1  5 x2  1
(13)
x1 , x2  0.
Для игрока B:
  y1  y2  max
 4 y1  3 y2  1,

3 y1  5 y2  1
(14)
y1 , y2  0.
Решая задачи (13), (14) либо симплекс-методом, либо графически, либо как
системы уравнений
4 p1  3 p2  V ,
4q1  3q2  V ,


3 p1  5 p2  V ,
3q1  5q2  V ,
 p  p  1,
q  q  1,
2
 1
 1 2
находим оптимальные смешанные стратегии игроков и цену игры:
Для игрока А:
1
1
1 11
V


 ;
f min max 3
3
11
11 2 2
11 1 1
 2 1
p1*  V  x1*    ; p2*  V  x2*    ; p*   ;  .
3 11 3
3 11 3
 3 3
Для игрока B:
11 2 2
11 1 1
 2 1
q1*  V  y1*    ; q2*  V  y2*    ; q *   ;  .
3 11 3
3 11 3
 3 3
3.2. Игры с природой
Задание 4 для самостоятельного решения
Предприятие выпускает продукцию одного, двух и трех видов. Не
проданная в течение некоторого периода времени часть продукции позднее
реализуется полностью по сниженной цене. Данные о себестоимости продукции
a   a1, a2 , a3  , отпускных ценах в течение периода времени b   b1 , b2 , b3  и
15
после уценки c   c1, c2 , c3  , объемах реализации в зависимости от уровня
спроса: d   d1 , d 2 , d3  – повышенный, f   f1 , f 2 , f3  – средний, g   g1, g2 , g3 
– пониженный, приведены в табл. 8. Требуется: а) придать описанной ситуации
игровую схему, выявить участников игры и установить ее характер, указать допустимые стратегии сторон. б) составить платежную матрицу. в) дать обоснованные рекомендации об объемах выпуска продукции по видам, обеспечивающих наибольшую прибыль. Указание: Одновременно на все три вида
продукции уровень спроса одинаков. Данные приведены в табл. 8.
Таблица 8
№
варианта
1
2
3
4
5
6
7
8
9
10
16
Данные a , b , c , d , f , g
a   2,3; 2,7; 1,9  ,
b   3,6; 4; 2,8  ,
d   20; 29; 33 ,
f  15; 17; 19  ,
a   0,5; 1,1; 0,4  ,
b  1,3; 2,4; 1,8  ,
d   21; 31; 43 ,
f  16; 17; 27  ,
a   3,2; 2,6; 4,4  ,
b   4,7; 3,4; 5,5  ,
c   3,1; 2,8; 1,7  ,
g   9; 8; 10 
c   0,8; 1,2; 0,6  ,
g  11; 9; 12 
c   4,2; 2,6; 4,2  ,
g   7; 5; 9 
d  18; 19; 30  ,
f  13; 10; 18  ,
a  1,7; 3,4; 2,8 ,
b   2,8; 4,7; 3,5  ,
f  16; 21; 22  ,
g  8; 9; 11
a   2,4; 0,7; 1,5 ,
b   3,5; 1,8; 2,2  ,
c   2,2; 0,4; 0,8 ,
d   29; 20; 38 ,
d  17; 35; 25  ,
f  12; 18; 13 ,
a   2,8; 3,5; 1,9  ,
b   3,7; 4,8; 2,5  ,
d   25; 25; 42  ,
a   2,2; 2,8; 1,7  ,
f  18; 15; 23 ,
b   3,7; 1,5; 2,8  ,
d   35; 45; 17  ,
f   24; 27; 11 ,
a  1,6; 2,7; 0,5 ,
b   2,4; 3,2; 1,8  ,
d  13; 37; 23 ,
a   2,8; 1,6; 2,2  ,
f   7; 21; 12  ,
b   3,7; 2,9; 3,5  ,
d   25; 41; 27  ,
f  15; 28; 16  ,
a   3,4; 1,1; 2,5 ,
b   4,2; 2,5; 3,7  ,
d   37; 15; 38  ,
f   21; 8; 23 ,
c   2,2; 3,4; 2,2  ,
g   4; 8; 5
c   2,4; 3,6; 1,8 ,
g  10; 8; 10 
c   2,5; 0,2; 1,1 ,
g   9; 11; 4 
c  1,8; 2,2; 0,7  ,
g   4; 8; 6 
c   2,5; 1,8; 2,2  ,
g   7; 9; 10 
c   3,1; 1,6; 2,2  ,
g  11; 3; 12 
Методические указания к решению задания 4
П р и м е р. Условие соответствует заданию для самостоятельного решения
Данные: a   2; 5; 3 , b   3; 6; 4  , c  1,5; 4,5; 2,5  , d   5; 7; 6  , f   3; 4; 5  ,
g  1; 2; 3 .
Р е ш е н и е. За игрока А примем специалиста предприятия, планирующего
объем выпуска продукции. Другим игроком будет природа, реализующая
уровень спроса: состояние П1 – повышенный уровень спроса, П2 – средний, П3 –
пониженный. В зависимости от уровня спроса игрок А может принять решение о
выпуске 5 ед. продукции А, 7 ед. продукции Б и 6 ед. продукции В (чистая
стратегия А1), либо 3 ед. продукции А, 4 ед. продукции Б, 5 ед. продукции В
(чистая стратегия А2), либо 1 ед. продукции А, 2 ед. продукции Б, 3 ед.
продукции В (чистая стратегия А3). Выигрышем aij игрока А будет прибыль,
получаемая предприятием в той или иной ситуации
 A , П  , (i, j  1,3) .
i
j
Вычислим элементы платежной матрицы.
a11   3  2   5   6  5   7   4  3  6  18.
a12   3  2   3  1,5  2   2   6  5   4   4,5  5   3 
  4  3  5   2,5  3  1  9.
a13   3  2   1  1,5  2   4   6  5   2   4,5  5   5 
  4  3  3   2,5  3  3  0.
a21   3  2   3   6  5   4   4  3  5  12.
a22   3  2   3   6  5   4   4  3  5  12.
a23   3  2   1  1,5  2   2   6  5   2   4,5  5   2 
  4  3  3   2,5  3  2  3.
a31   3  2   1   6  5   2   4  3  3  6.
a32   3  2   1   6  5   2   4  3  3  6.
a33   3  2   1   6  5   2   4  3  3  6.
Итак, платежная матрица имеет следующий вид:
 18 9 0 
A  12 12 3  .
 6 6 6


Найдем нижнюю и верхнюю цены игры:   6,   6. Так как    6 , то
игра имеет решение в чистых стратегиях. Стратегия А3 будет оптимальной для
игрока А, т.е. нужно выпускать 1 ед. продукции А, 2 ед. продукции Б и 3 ед.
продукции В. Прибыль составит 6 ден. ед.
17
4. СЕТЕВОЕ ПЛАНИРОВАНИЕ
Задание 5 для самостоятельного решения
Построить сетевой график, найти критический путь и рассчитать временные характеристики. Данные приведены в табл. 9.
Таблица 9
.№ работы
1
2
3
4
5
6
7
8
9
10
18
№ предшеств.
работы
Продолж-ть
работы, t
№ предшеств.
работы
Продолж-ть
работы, t
№ предшеств.
работы
Продолж-ть
работы, t
№ предшеств.
работы
Продолж-ть
работы, t
№ предшеств.
работы
Продолж-ть
работы, t
№ предшеств.
работы
Продолж-ть
работы, t
№ предшеств.
работы
Продолж-ть
работы, t
№ предшеств.
работы
Продолж-ть
работы, t
№ предшеств.
работы
Продолж-ть
работы, t
№ предшеств.
работы
Продолж-ть
работы, t
1
2
3
4
5
6
7
8
9
-
1
2
1
1
5
6
4, 9
2
2
5
2
2
4
8
7
2
5
-
-
-
2
2
1, 5, 7
3, 4
3, 4
6, 8
20
12
8
4
6
7
7
2
10
-
-
-
2
2
3,4
1,5
2
6, 7, 8
2
1
1
1
3
4
7
2
2
-
-
-
1
4, 7
2
3
3
6, 8
10
13
8
7
14
17
10
5
3
-
1
1
1
4
2
3, 6
2
5
7
7
8
10
3
2
4
5
6
-
1
1
1
4
2, 4
3, 6
2
5
10
11
3
7
12
4
4
8
7
-
1
2, 5, 7
-
4
-
6, 8
4
1
2
2
3
4
10
1
8
6
7
-
1
2
1
1
5
6
4, 9
2
12
10
8
5
2
4
8
4
4
-
-
-
3
3
2, 4
1, 5, 6
2, 4
7, 8
3
4
2
9
4
5
2
3
2
-
-
-
3
3
2, 4
1, 5, 6
2, 4
2
11
4
4
1
2
2
3
7, 8
4
Методические указания к решению задания 5
П р и м е р . Составить и проанализировать сетевой график реализации проекта, состоящего из 6 работ. Продолжительность каждой работы и
порядок их выполнения заданы в ниже приведенной таблице (для каждой работы
перечислены работы, непосредственно предшествующие ей). Требуется
построить сетевой график, найти критический путь и рассчитать временные
характеристики. Затем проанализировать изменение критического пути и
временных характеристик, если длительность первой работы увеличилась на 4
часа, а пятой – уменьшилась на 3 часа в связи с изменениями трудовых ресурсов.
№ работы
№ предшествующей работы
Продолжительность работы, t
1
10
2
5
3
15
4
1, 2
18
5
2, 3
19
6
4, 5
18
Р е ш е н и е . 1. Построение сетевого графика. Для построения сетевого
графика каждую работу будем изображать в виде сплошной ориентированной
дуги, связи между работами – в виде пунктирной ориентированной дуги. Причем
эту дугу-связь будем проводить из конца дуги, соответствующей предшествующей работе, в начало дуги, соответствующей последующей работе.
Получим следующий сетевой график:
1
4
2
5
6
3
Большое количество дуг усложняет анализ сети, поэтому упростим
полученную сеть. Для этого можно выбросить некоторые дуги-связи, удаление
которых не нарушает порядок выполнения работ. Начало и конец выбрасываемой дуги объединяем в одну вершину. Вершины, в которые не входит ни одна
дуга, также можно объединить в одну. Получим следующий сетевой график:
1
4
α
2
6
β
3
5
19
Отметим, что дуги α и β нельзя выбросить, так как изменится содержание
сетевого графика. Далее вершины сетевого графика будем называть событиями.
Последний сетевой график имеет 6 вершин и 8 дуг, причем для двух дуг-связей
(фиктивных α и β время выполнения считается равным нулю).
2. Критический путь и временные характеристики сетевого графика.
Найдем правильную нумерацию вершин полученного сетевого графика. Номер 1
получает вершина, в которую не входит ни одна дуга. Удаляем дуги, выходящие
из вершины с номером 1. В полученном сетевом графике все вершины, в которые не входит ни одна дуга, получают следующие по порядку номера. Затем
удаляем все дуги, выходящие из пронумерованных вершин и т.д.
Для удобства вершину (событие) с номером i будем изображать кругом,
разделенным на три части, в которых будут проставлены основные временные
характеристики сетевого графика (рис.1).
Ti p
К
Ti п
i
Рис.1
На рис.1: i – номер вершины в правильной нумерации; Ti p – ранний срок
наступления события i; Ti п – поздний срок наступления события i; К – номер
предыдущей вершины в пути из 1 в i, на котором осуществляется ранний срок
Ti p .
Пусть tij – заданная продолжительность работы (i, j), где i – номер начальной, j – номер конечной вершины, тогда tij записывается на дуге (i, j) сетевого
графика и считается ее длиной.
Ранним сроком начала работы называют наименьшее допустимое время,
когда работа может быть начата. Если из вершины i выходит несколько работ, то
ранние сроки начала этих работ совпадают и называются ранним сроком
наступления события i. Ранний срок начала работы (i, j) обозначают tijpн , а ранний
срок наступления событий i – Ti p .
Ранний срок наступления конечного события называется критическим
временем и обозначается Tкр . Всякий путь длины, равной Tкр из начальной
вершины в конечную называется критическим путем.
Для вычисления ранних сроков наступления событий используем алгоритм
Форда, считая, что нумерация вершин является правильной. Алгоритм заключается в следующем:
1. Полагаем T1р = 0.
20


2. Последовательно для i = 2, 3 …, k вычисляем Ti р  max Tkр  tki ,
 k ,i  Bi 
где B(i) – множество всех дуг, входящих в вершину i.
Номер k-й вершины, для которой достигается максимальное значение Ti р ,
заносят в левую треть вершины i. Найдем Ti р для нашего примера.
р
Ранний срок наступления начального события T1 =0. После этого
рассматриваем вершины в порядке возрастания их номеров:
T2р  T1р  t12  0  5  5.
В верхнюю часть вершины 2 ставим 5, а в левую – 1.


T3р  max T1р  t13 , T2р  t23  max 10,5  10.
В левую часть вершины 3 записываем 1, а в верхнюю – 10.
T4р  max 15,5   15;


T5р  max T4р  t45 , T3р  t23  max  34, 28  34;
T6р  34  18  52.
Находим критическое время выполнения всего проекта: Tкр  T6р  52 .
Начиная с последней вершины, по содержимым ее левых частей находим критический путь: (1, 4), (4, 5), (5, 6).
Определим поздние сроки наступления событий. Поздним сроком окончания работы называется наибольшее допустимое время окончания работы без
нарушения срока завершения всего проекта. Поздним сроком T jп наступления
события j называется наиболее поздний срок окончания всех работ, входящих в
соответствующую вершину.
2. Алгоритм вычисления поздних сроков наступления событий. Для
конечной вершины поздний срок наступления событий совпадает со временем
выполнения всего проекта – Tкр . Затем просматриваем все вершины в порядке
убывания их номеров. Для каждой вершины j рассмотрим множество всех
выходящих работ. Из поздних сроков окончания этих работ вычитаем их
продолжительность. Минимальная из этих разностей и равна T jп . Эту величину
записываем в правой трети вершины j.
Вычислим Т для нашего примера: T6п  Tкр  52 . Переходим к вершине 5.
T5п  T6п  t56  52  18  34;
T2п  min 16, 15   15;
T4п  34  19  15;
T1п  min  6, 10, 0   0.
T3п  34  18  16;
21
Сетевой график с найденными числовыми характеристиками изображен на
рис.2.
10
10
0
0
1 18
5
1
3
5
– 0
18
34
2
5
1 15
52
18
4 34
5 52
6
0
19
15
15
1 15
4
Рис.2.
р
п
Теперь, зная T j и Ti , вычисляем резервы времени. Например, вычисляем
полный резерв времени работы (3, 5).
Максимально допустимое время, на которое можно увеличить продолжительность или отложить начало выполнения работы (i, j) так, чтобы это не
вызвало задержки выполнения всего проекта, называется полным резервом
времени этой работы и обозначается Rij : Rij  Tjп  Ti р  tij .
Для работы (3, 5) имеем: R35  T5п  T3р  t35  34  10  18  6.
Аналогично вычисляются остальные резервы времени.
3. Анализ сетевого графика. Так как структура связей сетевого графика с
измененными длительностями работ не изменялась, правильная нумерация
остается прежней (рис.3).
14
14
1 14
0
1
5
5
– 0
18
3
32
2
5
1 14
50
18
3 32
5 50
6
16
15
15
1 16
4
Рис.3
22
Аналогично находим T jп и Ti р , и вычисляем все резервы времени. Теперь
критическое время равно 50, а критический путь имеет следующий вид: (1, 3), (3,
5), (5, 6).
Таким образом, в измененном сетевом графике критический путь имеет
только одну общую работу (5, 6) с критическим путем исходного сетевого
графика. Причем его длина уменьшилась на 2 часа по сравнению с предыдущим.
Для примера проанализируем работу (3, 5). В исходном сетевом графике
полный резерв времени R35 = 6. Значит, можно увеличить продолжительность
или отложить начало ее выполнения на 6 часов, не вызывая задержки
выполнения всего проекта. В сетевом графике с измененными длительностями
эта работа уже является критической, полный резерв ее времени равен нулю.
Поэтому любая задержка ее выполнения вызовет такую же задержку выполнения
всего проекта.
5. ЗАДАЧА О МАКСИМАЛЬНОМ ПОТОКЕ В СЕТИ
5.1. Алгоритм Форда – построения максимального потока в сети
Задание 6 для самостоятельного решения
Сеть задана матрицей D  d ij
пропускных способностей дуг ( dij  0
означает, что в сети отсутствует дуга, ведущая из вершины i в вершину j).
Требуется по матрице D построить сеть и найти в ней максимальный поток из
вершины 1 в вершину 7, определив при этом минимальный разрез.
Варианты
0
10

1.  4

 13
0

0
0

10 4 13 0
0
0
0 0 6
0
5
0 7
2
5
0
7
0 0
1
6
0 0 0 10
0
5 1
0
0
0
0 0 0
0
0
10

3. 12

16
0

0
0

0 12 16 0
0
5
0
0
5
0
7
3
0
7
0
0
10
3
0
0
0
8
5 13
9
0
0
4
0
0 
0

0
7

12 
5 
0 0
0 9 
8 0

5 0
13 4 

0 0
0 0 
0
2

2.  0

6
0

0
0

2 8
0
0 7
0 15 0
7
0
0
8
0
6
0
0 10
15 8
0
0
4
0
3 10
4
0
5
0
1
0
0
0
 0 20 15 7 0
 20 0 0 0 7

4.  15 5 0 11 3

 7 0 11 0 0
0 7 3 0 0

 0 0 6 12 4
0 9 0 0 9

0
3
0
0
6
12
4
0
0
0
5 
0

0
1

0
0 
0
9 
0

0
9

0
0 
23
 0 20 25 8
 20 0 7 0

5.  25 7 0 8

8 0 8 0
 0 15 0 6

 0 0 9 10
0 5 0 0

 0 20 0
 20 0 9

7.  10 9 0

 12 0 5
0 6 7

 0 0 11
0 3 0

0
15 0 0 
0 9 0

6 10 0 
0 9 0

9 0 0
0 0 0 
0
0
12 0 0 0 
0 0 6 0 
0 7 11 0 

0 0 8 0
0 0 4 9

8 4 0 0
0 9 0 0 
 0 12 19 0 0 0 0 
12 0 10 0 4 0 0 




19
10
0
9
0
10
0
9.


 6 0 9 0 0 12 0 
 0 4 6 0 0 10 2 


 0 0 10 12 10 0 0 
 0 9 0 0 9 0 0


0
7

6.  16

 20
0

0
0

7 16 20 0
0
7

8. 19

 13
0

0
0

0 19 13 0
0
7

10. 13

15
0

0
0

0 9
0
4
9
0
3 11
0
3
0
8
4 11
8
0
0
2 10
9
6
0
0 10
0 10 0
8
10 0
3 10
0
0
0
8 10 0
0
3
0
6
9 15
7
0
0
7
0 0
0 6 
2 0

0 0
9 0

0 0
0 0 
0 0
0 0 
0 0

9 0
15 0 

0 0
0 0 
7 13 15 0 0
0 10 0
0 0
10 0 12 3 6
0 12 0
0 7
0
3
0
0 4
0
6
7
4 0
12 0
0
8 0
0
12 
0

0
8

0
0 
Методические указания к решению задания 6
Начальный. Выбираем некоторый поток
x 
ij
в сети G (V,U) (например,
xij  0 для всех дуг (i, j) U).
1. Общая итерация. Шаг 1. Источник s получает метку (s+).
Шаг 2. Для всех дуг (s, j), выходящих из вершины s, соответствующие
вершины j получают метку s+, если xsj < dsj. Для дуг (i,s), входящих в вершину s,
соответствующие вершины i получают метку (s-), если xis 0.
Шаг k. Просматриваем все вершины, помеченные на (k – 1)-м шаге. Для
каждой такой вершины k, соответствующие им вершины j, для которых xkj dkj,
получают метку (k+), для всех дуг (i, k), входящих в вершину k, соответствующих
им вершины i , для которых xik  0, получают метку (k -).
Алгоритм заканчивает работу одним из двух состояний: а) после некоторого шага мы не можем пометить ни одной вершины, сток t остался непоме24
ченным. Это означает, что имеющийся поток является максимальным, а (R, R ),
где R – множество помеченных, R – множество непомеченных вершин, образует
минимальный разрез; б) сток t оказался помеченным. Двигаясь от стока t к
вершине, номер которой указан в ее метке и так далее, мы придем к источнику.
2. В найденном увеличивающем пути обозначим через P+ множество прямых,
а через P - – множество обратных дуг пути и вычисляем величину
1 = min  (dij – xij)  0 и  2
( i , j )P
=
min xi, j  0 .
(15)
(i , j )P
Полагаем   min(1 ,  2 ) . Увеличиваем поток вдоль пути P на величину  ,
полагая
xij’ = xij+  , если (i ,j)  P+
xij’ = xij –  , если (i, j)  P-,
(16)
xij’ = xij . для остальных дуг сети.
Переходим к шагу 1.
Рассмотрим пример. На рис. 4 . изображена сеть. Первое число в скобках указывает
пропускную способность дуги, второе – дуговой поток.
1
(3,0)
(2,1)
(s )
+
s
3
(1,1)
(2,1)
-
-
(s )
2
(4,1)
(5+)
(2 )
(3,1)
4
(2,0)
t
(2,1)
(2,2)
-
(4 )
(3,1)
5
Рис. 4
Найдем увеличивающий путь.
Общая итерация: Шаг 1. Источник s получает пометку (s+).
Шаг 2. Так как xs1 = 1  d s1 = 2, то вершина 1 получает метку (s+). Вершина 2
получает метку (s-), т.к. x21 = 1  0. Вершина 5 не может быть помечена, т.к.
x s 5  d s 5 (дуга (s, 5) – насыщенная).
Шаг 3. Соседними вершинами с вновь помеченными являются вершины 3 и 4.
Вершина 3 не может быть помечена, так как x13 = d13. Вершина 4 получает
пометку (2-), т.к. х42 = 1  0.
25
Шаг 4. Соседними с помеченной вершиной 4 являются вершины t и 5.
Вершина t не может быть помечена, т.к. хt4 = 0. Вершина 5 получает пометку (4),
т.к. x54=1  0.
Шаг 5. Помечаем вершину t меткой (5+), x5t = 1 < d5t =3.
Увеличивающий путь: s – 2 – 4 – 5 – t , причем на этом пути дуга (5, t) является
прямой, а дуги (2, s); (4, 2); (5, 4) – обратными.
Увеличим поток вдоль этого пути по формулам (15)–(16).
Находим
 1  min  (d5t  x5t )  2,
( i , j ) P
 2 = min ( xS 2 , x24 , x45 )  min(1;1;1)  1,
( i , j )P
т.е.
 = min( 1, 2) = 1.
Полагаем
x2 S = x2S – 1 = 0, x'42 = x42 –1 =0, x54 = x54 – 1 = 0, x5t = x5 t+1 = 2.
Величина суммарного потока в сети равна 3.
Общая итерация 1. Для нового потока ищем увеличивающий путь методом
расстановки пометок. Пометить удается только вершины s и 1. Следовательно,
увеличивающего пути нет, и построенный поток является максимальным. Минимальный разрез (R,, R ) , где R = S; 1, R = 2; 3; 4; 5; t состоит из дуг (R, R ) = (1,
3); (s, 5); (2,s); (2,1) и обладает пропускной способностью C (R, R ) = d13 + dS5 = 3.
На рис. 5 минимальный разрез показан пунктирной линией
(s+)
(1,1)
1
3
(2,1)
+
(s )
(3,0)
(4,0)
s
(2,1)
(2,0)
2
(2,2)
4
t
(2,0)
5
(3,2)
Рис. 5
26
(2,0)
5.2.Решение задачи о максимальном потоке с помощью ЭВМ
Задание 7 для самостоятельного решения
Сеть задана матрицей D  d ij
пропускных способностей дуг ( dij  0
означает, что в сети отсутствует дуга, ведущая из вершины i в вершину j).
Требуется по матрице D построить сеть и найти в ней максимальный поток из
вершины 1 в вершину 10, определив при этом минимальный разрез.
Варианты
0
10

4

13
1. 
0

0
0

0
0

0
10
4 13 0
0
0
0
0
0
0
6
0 15 0
0
5
0
7
2
5
0
0
0
0
7
0
0
1
0
0
6
6
0
0
0 10
3
7
0
0
5
1
0
0
0 12
4
0
0
0
0
0
0
5
0
0
0
0
7 12
5
0
9
0
0
6
0
4
0
9
0
0
0
0
0
0
9
7 11
0
0 
0

0
0

0
9

7
11 

0 
 0 0 12 16 0 0 0 0 0
10 0 5 0 0 0 9 0 0

12 5 0 7 3 8 0 0 0

16 0 7 0 0 5 0 0 0
3. 
 0 10 3 0 0 13 4 8 0

 0 0 8 5 13 0 0 7 2
 0 9 0 0 4 0 0 10 0

 0 0 0 0 8 7 10 0 9
0 0 0 6 0 2 0 9 0

 0 0 0 0 0 0 12 13 11
0
0 
0

0
0

0
12 

13 
11 

0 
0
0 2 8 0 0 0
 2 0 7 0 15 0

0 7 0 0 8 3

6 0 6 0 0 10
2. 
 0 15 8 0 0 4

 0 0 3 10 4 0
0 5 0 0 1 0

0 0 0 0 5 4
 0 0 0 2 0 11

0 0 0 0 0 0
 0 20 15 7
 20 0 0 0

 15 5 0 11

7 0 11 0
4. 
0 7 3 0

 0 0 6 12
0 9 0 0

0 0 0 0
0 0 0 8

0 0 0 0
0
0
0
5
0
0
0
0
0
0
0
2
1
5
0
0
4 11
0
9
0
9
0
0
0
7
0
4
6 12
0
0
0
0
0
7
0
9
0
0
3
6
0
0
0
0 12
0
0
8
0
4
9
6
0
4
0
0 10 12
9
0
0
5
0
6
7
5
0
9
0
2
0
9
0
0
0 10 15 20
0
0 
0

0
0

0
0

6
12 

0 
0
0 
0

0
0

0
10 

0
20 

0 
27
0
 20

 25

8
5. 
0

0
0

0
0

0
20 25 8
0
0
0
0
0
0
7
0 15
0
0
0
0
7
0
8
0
9
0
0
0
0
8
0
6 10
0
0 13
15
0
6
0
9
0
7
0
0
9 10
9
0
0 12
0
5
0
0
8
0
0 10
0
0
0
0
7 12 10
0
3
0
0 13
0
9
0
3
0
0
0
0
0
0
3 15 17
20 0 12
0
0
0
0
9
0
0
0
6
9
0
0
7 11
0
0
5
0
0
8
0
6
7
0
0
4
9
0 11 8
4
0
0
3
0
0
9
0
0
0
0
0
3 12 15
0
0 10
0
6
0
0
0
0
0
 0 12 19 0 0 0
 12 0 10 0 4 0

 19 10 0 9 0 10

6 0 9 0 0 12
9. 
0 4 6 0 0 10

 0 0 10 12 10 0
0 9 0 0 9 0

0 0 0 0 2 0
 0 0 0 10 0 10

0 0 0 0 0 0
0
 20

 10

12
7. 
0

0
0

0
0

0
28
0
0
0 
0

0
0

0
0

15 
17 

0 
0
0
4
0
0 0 0 
0 0 0

0 10 0 
3 0 0

12 6 0 
15 0 4 

0 0 25 
9 0 20 

25 20 0 
0
0
0
0
0
0
0
0
0
0
0 10
2
9
0
0 12 10
0
5
0
0
9
0
0 12
0
5
20
9
0
7

 16

20
6. 
0

0
0

0
0

0
7 16 20 0
0
0
0
0
0
9
0
4
0
6
0
0
9
0
3 11
2
0
0
0
0
3
0
8
0
0
0 10
4 11
8
0
9
0 12
0
2 10
9
0
0
6
0
0 10
0
0 15
0
0
0 12 10 15
0
0 10
0 12
0
0
0
0
0 12
0
0 10
0 10
0 12
0
0
0 13
0
0 
0

0
0

0
12 

25 
13 

0 
 0 0 19 13 0 0 0 0 0 0 
 7 0 10 0 8 0 0 0 0 0 


 19 10 0 3 10 0 0 0 0 0 


13 0 3 0 0 9 0 0 0 0 

8.
 0 8 10 0 0 15 0 10 6 0 


0
0
6
9
15
0
0
12
2
0


 0 7 0 0 7 0 0 12 0 9 


 0 0 0 0 10 12 12 0 10 20 
 0 0 0 8 0 0 0 10 0 15 


 0 0 0 0 0 0 9 20 15 0 
0
 0 7 13 15

 7 0 10 0
0

 13 10 0 12
0


0
 15 0 12 0
10.
0 0 3 0
0


0
0 0 6 7
 0 12 0 0
10 


0
0 0 0 0
0 0 0 8
20 


0
0 0 0 0
0
0
0
0
0
0
0 12
0
0
3
6
0
0
0
0
7
0
0
8
0
4
8
2
0
4
0
0 10
3
8
0
0
9
0
2 10
9
0
7
0
3
0
7
0
0
0
2 12 25
0
0 
0

0
0

0
2

12 
25 

0 
Методические указания к решению задания 7
Тернарной операцией над матрицей
операция:
d ij
n n
по индексу k называется
d ij  max( d ij , min( d ik , d kj )) для всех i  j  k
Рассмотрим
вспомогательную
матрицу
R  rij
nn
(17)
элементы
которой
rij  j , i  1, n . Одновременно с выполнением операции (17) изменяются элементы
матрицы R по следующему правилу:

rij , если dij  min(dik , dkj ),
rij  

rik , если dij  min(dik , dkj ).
(18)
Операции (17), (18) являются основой метода построения максимального
потока в многополюсной сети. Опишем вначале алгоритм решения задачи, а
затем приведем его обоснование.
Подготовительный этап. Для начальной потоковой матрицы X  xij
nn
(как правило, на начало работы алгоритма xij  0 , для всех i  1, n, j  1, n ) формируем модифицированную матрицу пропускных способностей D   d ij

nn
,

полагая d ij  d ij  xij , i, j  1, n .
Общая итерация. Осуществляем тернарные операции (17) и операции (18)

над матрицей D   d ij
и R  rij
последовательно по всем индексам k = 1,
nn
nn
2,…,n.
Если
в
полученной
в
результате
матрице
D  dij

nn

max[min( ai , dij , b j )]  0 , алгоритм заканчивает работу. В противном случае
iS
jT
переходим к шагу 1.


Шаг 1. max[min(ai , dij , b j )]  [min(al , dlp , bp )]   lp  0 . С помощью вспомогаiS
jT
тельной матрицы R  rij
nn
находим путь Llp  (l , i1 ), (i1 , i2 ),...,(ik , p), вдоль
которого можно увеличить поток на максимально возможную величину  lp .
Здесь i1  rlp , i2  ri1 p , i3  ri2 p , ..., rik p  p . Далее полагаем
29
 xij  lp , x ji  lp ,  i, j   Llp ,
xij :  
 xij , в остальных случаях,
dij   lp , d ji   lp ,  i, j   Llp ,
dij :   
dij , в остальных случаях,

(19)
al :  al  lp , bp : bp  lp

Для всех путей Llp , l  S , p  T , вычисляем величину lp  min (al , d ij , b p ) .
(i , j )Llp
Если
lp  0 , изменяем элементы потоковой матрицы X, матрицы
модифицированных пропускных способностей D и мощностей ai , i  S , b j , j  T ,
по формулам (19).
Если lp  0 , то соответствующие элементы не изменяются. Полагаем
rij  j, i, j  1, n и переходим к общей итерации.
Таким образом, в описанном алгоритме для отыскания увеличивающих
путей используется не метод пометок, а тернарные операции над матрицей пропускных способностей, что не требует графического представления сети.
Однако, несмотря на простоту тернарных операций, их осуществление надо
реализовать с помощью программы для ЭВМ. Решение задачи с помощью
алгоритма Форда при большом количестве вершин в сети также практически
невозможно без применения ЭВМ. Однако его программная реализация
значительно сложнее.
30
Литература
1. Кузнецов, А.В., Математическое программирование/ А.В.Кузнецов,
Н.И.Холод. – Минск: Выш. шк., 1984.
2. Банди, Б. Основы линейного программирования/ Б.Банди. – М.: Радио и
связь, 1988.
3. Банди, Б. Методы оптимизации. Вводный курс/ Б.Банди. – М., Радио и
связь, 1989.
4. Калихман, И.Л. Сборник задач по математическому программированию/
Калихман И.Л.. – М.: Высш. шк., 1975.
5. Сборник задач и методические указания к решению задач по
математическому программированию/ Е.В. Емеличева [и др.]. – Минск: БГПА,
1996.
6. Математические методы в технико-экономических задачах/ Н.Е. Гайков [и
др.]. – Минск: БПИ, 1991.
31
СОДЕРЖАНИЕ
1. ЗАДАЧИ ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ.............................................. 3
Задание 1 для самостоятельного решения ........................................................... 3
Методические указания к решению задания 1................................................. 4
2. ТРАНСПОРТНАЯ ЗАДАЧА ЛИНЕЙНОГО ПРОГРАММИРОВАНИЯ ............ 7
Задание 2 для самостоятельного решения ........................................................... 7
Методические указания к решению задания 2................................................. 8
3. МАТРИЧНЫЕ ИГРЫ .............................................................................................. 13
3.1. Упрощение матричной игры и решение в смешанных стратегиях ............. 13
Задание 3 для самостоятельного решения ......................................................... 13
Методические указания к решению задания 3 .......................................................14
3.2. Игры с природой ............................................................................................... 15
Задание 4 для самостоятельного решения ......................................................... 15
Методические указания к решению задания 4............................................... 17
4. СЕТЕВОЕ ПЛАНИРОВАНИЕ ............................................................................... 18
Задание 5 для самостоятельного решения ......................................................... 18
Методические указания к решению задания 5............................................... 19
5. ЗАДАЧА О МАКСИМАЛЬНОМ ПОТОКЕ В СЕТИ .......................................... 23
5.1. Алгоритм Форда – построения максимального потока в сети ..................... 23
Задание 6 для самостоятельного решения ......................................................... 23
Методические указания к решению задания 6............................................... 24
5.2.Решение задачи о максимальном потоке с помощью ЭВМ .......................... 27
Задание 7 для самостоятельного решения ......................................................... 27
Методические указания к решению задания 7............................................... 29
Литература.................................................................................................................... 31
32
Учебное издание
МАТЕМАТИЧЕСКОЕ ПРОГРАММИРОВАНИЕ
методические указания и задания к практическим занятиям
для студентов экономических специальностей
Составители:
КОРЗНИКОВ Александр Дмитриевич
ПАВЛОВ Валерий Валентинович
Редактор И.Ю.Никитенко
_____________________________________________________________
Подписано в печать___________2009.
Формат 60×84 116 . Бумага офсетная.
Отпечатано на ризографе. Гарнитура Таймс.
Усл. печ. л.
. Уч.-изд. л. . Тираж 250. Заказ 2.
____________________________________________________________
Издатель и полиграфическое исполнение:
Белорусский национальный технический университет.
ЛИ № 02330/0131627 от 01.04.2004.
Проспект Независимости, 65, 220013, Минск.
Download