Решение_задач_исследования_операций
.pdf61
Шаг 2: составляем и решаем систему уравнений для потенциалов:
u + v |
= 1, |
|||
|
1 |
1 |
|
|
u1 + v2 |
= 2, |
|||
|
|
2 |
3 |
= 5, |
u |
|
+ v |
||
|
|
|
+ v4 |
= 2, |
u2 |
||||
u |
|
+ v |
= 3, |
|
|
|
3 |
2 |
= 4. |
u |
3 |
+ v |
||
|
|
4 |
|
Положим, u1 = 0 и найдем значения остальных потенциалов:
v1 = 1, v2 = 2, v3 = 3, v4 = 6, u2 = −1, u3 = 1.
Значения потенциалов запишем в последней строке и последнем столбце табл. 2.10. Вычислим коэффициенты Sij для всех свободных
(незанятых клеток):
S13 = 5 − 6 − 0 = −1; S14 = 3 − 3 − 0 = 0; S21 = 1 − 1 + 1 = 1;
S22 = 6 − 2 + 1 = 5; |
S31 = 6 −1 − 1 = 4; S23 = 7 − 6 − 1 = 0. |
Среди коэффициентов Sij |
есть отрицательное число (S13 < 0) , поэтому |
решение не является оптимальным и его решение можно улучшить.
|
|
|
|
|
|
|
|
Таблица 2.10 |
|
|
|
|
|
|
|
|
|
Поставщики |
|
|
Потребители |
|
Потенциалы |
|||
|
В1 |
|
В2 |
|
В3 |
|
В4 |
|
А1 |
1 |
2 |
40 |
5 |
|
3 |
|
u1 = 0 |
|
20 |
|
|
|
|
|
|
|
А2 |
1 |
6 |
|
5 |
40 |
2 |
60 |
u2 = −1 |
|
|
|
|
|
|
|
||
А3 |
6 |
3 |
40 |
7 |
|
4 |
50 |
u3 = 1 |
|
|
|
|
|
|
|
||
Потенциалы |
v1 = 1 |
v2 |
= 2 |
|
v3 = 6 |
|
v4 = 3 |
|
|
|
|
|
|
|
|
||
Построим для клетки x13 |
цикл пересчета (рис. 2.3) |
|
|
62
Рис. 2.3
Наименьший груз в отрицательных вершинах этого цикла находится в клетках (1;2) и (2;3) и равен x12 = 40. Осуществляем сдвиг по циклу на
величину λ = 40 . От значений количества груза в «отрицательных» клеток число 40 вычтем, а к количеству груза, записанного в «положительных» клетках число 40 добавим. При этом получим две нулевых перевозки x12 = 0 и x23 = 0 ; одну из двух переменных выберем
базисной, а вторую – свободной. Пусть, например, переменная x23
будет свободной, тогда в клетку (1;2) нужно записать нулевую перевозку x12 = 0 . Получили новое опорное решение (табл. 2.11)
|
|
|
|
|
|
Таблица 2.11 |
|
|
|
|
|
|
|
Поставщики |
|
|
Потребители |
|
|
|
|
В1 |
В2 |
|
В3 |
|
В4 |
А1 |
1 |
2 |
|
5 |
|
3 |
|
20 |
|
0 |
|
40 |
|
А2 |
1 |
6 |
|
5 |
|
2 |
|
|
|
|
|
|
100 |
А3 |
6 |
3 |
|
7 |
|
4 |
|
|
|
80 |
|
|
10 |
Вычислим стоимость перевозок:
F1 = 20 1 + 40 5 +100 2 + 80 3 +10 4 = 700 (ден. ед.)
Шаг 3: составляем и решаем систему уравнений для потенциалов:
63
u1 + v1 = 1,
u1 + v2 = 2,u1 + v3 = 6,
u2 + v3 = 5,
u2 + v4 = 2,u3 + v2 = 3,
u3 + v4 = 4.
Положим, u1 = 0 и найдем значения остальных потенциалов:
v1 = 1, v2 = 2, v3 = 5, v4 = 3, u2 = −1, u3 = 1.
Значения потенциалов запишем в последней строке и последнем столбце табл. 2.12. Вычислим коэффициенты Sij для всех свободных
(незанятых клеток):
S13 = 5 − 5 − 0 = 0; S14 = 3 − 3 − 0 = 0; S21 = 1 − 1 + 1 = 1;
S22 = 6 − 2 + 1 = 5; S31 = 6 − 1 − 1 = 4; S33 = 7 − 5 − 1 = 1.
|
|
|
|
|
|
|
|
Таблица 2.12 |
|
|
|
|
|
|
|
|
|
Поставщики |
|
|
Потребители |
|
Потенциалы |
|||
|
В1 |
|
В2 |
|
В3 |
|
В4 |
|
А1 |
1 |
2 |
40 |
5 |
|
3 |
|
u1 = 0 |
|
20 |
|
|
|
|
|
|
|
А2 |
1 |
6 |
|
5 |
40 |
2 |
60 |
u2 = −1 |
|
|
|
|
|
|
|
||
А3 |
6 |
3 |
40 |
7 |
|
4 |
50 |
u3 = 1 |
|
|
|
|
|
|
|
||
Потенциалы |
v1 = 1 |
v2 |
= 2 |
|
v3 = 5 |
|
v4 = 3 |
|
Все коэффициенты неотрицательны, значит, последнее опорное решение является оптимальным.
Ответ: оптимальный план перевозок описывается матрицей
20 |
40 |
0 |
0 |
||
|
|
|
|
|
|
X = |
0 |
0 |
40 |
60 |
|
|
0 |
40 |
0 |
50 |
|
|
|
минимальная стоимость всех перевозок составляет 700 (ден. ед.).
Пример 2.2. Методом потенциалов решить транспортную задачу, исходные данные которой представлены в табл. 2.13.
|
|
|
|
|
64 |
|
|
|
|
|
Таблица 2.13 |
|
j |
1 |
2 |
3 |
4 |
i |
|
bj |
|
|
|
|
20 |
40 |
50 |
80 |
|
|
ai |
|
|
|
|
1 |
20 |
1 |
6 |
9 |
3 |
2 |
50 |
3 |
2 |
2 |
4 |
3 |
60 |
4 |
5 |
4 |
7 |
4 |
20 |
1 |
4 |
3 |
9 |
Решение. Запасы грузов у поставщиков составляют
|
4 |
|
|
|
|
|
|
|
|
∑ai |
= 20 + 50 + 60 + 20 = 150, |
|
|
|
|
|
|
i=1 |
|
|
|
|
|
запасы потребителей равны |
|
|
|
|
|
||
|
4 |
|
|
|
|
|
|
|
|
∑bj |
= 20 + 40 + 50 + 80 = 190. |
|
|
|
|
|
|
j=1 |
|
|
|
|
|
4 |
4 |
|
|
|
|
|
|
Так как ∑ai < ∑bj , то имеем несбалансированную (открытую) |
задачу. |
||||||
i=1 |
|
j=1 |
|
|
|
|
|
Вводим пятого фиктивного поставщика с |
грузом a5 = 40 . |
После |
|||||
введения |
фиктивного поставщика решаем сбалансированную |
||||||
(закрытую) задачу, заданную в табл. 2.14. |
|
|
|
||||
|
|
|
|
|
|
Таблица 2.14 |
|
|
|
|
|
|
|
|
|
bj |
|
20 |
40 |
|
50 |
|
80 |
ai |
|
|
|
|
|
|
|
20 |
|
1 |
6 |
|
9 |
|
3 |
50 |
|
3 |
2 |
|
2 |
|
4 |
60 |
|
4 |
5 |
|
4 |
|
7 |
20 |
|
1 |
4 |
|
3 |
|
9 |
40 |
|
0 |
0 |
|
0 |
|
0 |
Находим начальное опорное решение методом северо-западного угла (в верхних частях клеток берем стоимости перевозок, а в нижних – объем перевозок):
а) удовлетворим запасы первого потребителя за счет первого поставщика, т.е. x11 = 20 . При этом у первого поставщика не осталось
грузов a1 = 0 и первый потребитель удовлетворил свои запросы. На
каждом шаге вычеркиваем из таблицы одну строку или один столбец; вычеркиваем первый столбец, но при этом будем считать, что a1 = 0 ;
65
б) чтобы вычеркнуть первую строку, положим x12 = 0 (ко второму
потребителю перевозим 0 единиц груза); в) удовлетворим потребности второго потребителя за счет второго
поставщика, т.е. положим x22 = 40 и вычеркнем второй столбец таблицы, но считаем, что у второго поставщика есть 10 единиц груза; г) чтобы вычеркнуть вторую строку положим значение x23 = 10 (от
второго поставщика к третьему потребителю перевозим 10 единиц груза);
д) удовлетворим оставшиеся запросы третьего потребителя за счет
третьего поставщика |
положим |
x33 = 40 . |
При |
этом у |
третьего |
поставщика осталось |
a3 = 20 |
единиц |
груза. |
Третий |
столбец |
вычеркиваем; е) удовлетворим запросы четвертого потребителя за счет третьего
поставщика однако, грузов не хватает, поэтому положим x34 = 20 .
Вычеркиваем третью строку, но потребности четвертого потребителя составляют b4 = 60 единиц груза;
ж) запланируем перевозки недостающего груза к четвертому потребителю за счет четвертого и пятого (фиктивного) поставщика полагаем x44 = 20, x54 = 40 ;
з) проверим правильность построения опорного плана. Число занятых (базисных) клеток должно быть равно m + n −1 = 5 + 4 −1 = 8 .
В таблице, действительно, в нижних частях клеток записано 8 чисел, хотя некоторые из них равны нулю. Значит, получено опорное решение (матрица перевозок), представленное в табл. 2.15.
При этом стоимость всех перевозок:
|
|
Z = 20 1 + 0 6 + 40 2 + 10 2 + 40 4 + 20 7 + 20 9 + 40 0 = 600. |
|
||||
|
|
|
|
|
|
Таблица 2.15 |
|
|
|
j |
1 |
2 |
3 |
|
4 |
|
i |
bj |
|
|
|
|
|
|
|
20 |
40 |
50 |
|
80 |
|
|
|
ai |
|
|
|
|
|
1 |
|
20 |
1 |
6 |
9 |
|
3 |
|
|
|
|
20 |
0 |
|
|
2 |
|
50 |
3 |
2 |
2 |
|
4 |
|
|
|
|
|
40 |
10 |
|
3 |
|
60 |
4 |
5 |
4 |
|
7 |
|
|
|
|
|
|
40 |
20 |
4 |
|
20 |
1 |
4 |
3 |
|
9 |
|
|
|
|
|
|
|
20 |
5 |
|
40 |
0 |
0 |
0 |
|
0 |
|
|
|
|
|
|
|
40 |
66
Шаг 1: проверим опорный план на оптимальность. Введем потенциалы поставщиков u1 , u2 , u3 , u4 , u5 и потенциалы потребителей
v1 , v2 , v3 , v4 . Составим систему уравнений для потенциалов, при этом должны выполнятся равенства: cij = ui + v j , (i = 1, 2, 3, 4, 5; j = 1, 2, 3, 4) для каждой базисной (занятой) клетки. Получим систему:
u1 + v1 = 1,
u1 + v2 = 6,u2 + v2 = 2,u2 + v3 = 2,
u3 + v3 = 4,
u3 + v4 = 7,
u4 + v4 = 9,
u5 + v4 = 0.
Система состоит из 8 уравнений и имеет 9 переменных.
Полагаем u1 = 0 ; все остальные потенциалы находим из системы: v1 = 1;
v2 = 6; u2 = −4; v3 = 6; u3 = −2; v4 = 9; u4 = 0; u5 = −9.
Добавим в таблицу строку и столбец для потенциалов и запишем результаты решения системы (табл. 2.16).
|
|
|
|
|
|
|
|
|
Таблица 2.16 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
j |
|
1 |
2 |
3 |
|
4 |
|
|
i |
|
bj |
|
|
|
|
|
|
|
ui |
|
|
|
20 |
40 |
50 |
|
80 |
|
||
|
|
|
|
|
|
|
||||
|
ai |
|
|
|
|
|
|
|
|
|
1 |
|
20 |
|
1 |
6 |
9 |
|
3 |
|
0 |
|
|
|
|
20 |
0 |
|
|
|
|
|
2 |
|
50 |
|
3 |
2 |
2 |
|
4 |
|
-4 |
|
|
|
|
|
40 |
10 |
|
|
|
|
3 |
|
60 |
|
4 |
5 |
4 |
|
7 |
|
-2 |
|
|
|
|
|
|
40 |
|
|
20 |
|
4 |
|
20 |
|
1 |
4 |
3 |
|
9 |
|
0 |
|
|
|
|
|
|
|
|
|
20 |
|
5 |
|
40 |
|
0 |
0 |
0 |
|
0 |
|
-9 |
|
|
|
|
|
|
|
|
|
40 |
|
|
|
v j |
|
1 |
6 |
6 |
|
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Вычислим |
оценки |
Sij свободных (незанятых) |
клеток |
по формуле |
Sij = cij − ui − v j (от стоимости перевозки вычитаем значения потенциалов):
|
|
67 |
S13 = 9 − 0 − 6 = 3; |
S14 = 3 − 9 − 0 = −6; |
S21 = 3 −1 − (−4) = 6; |
S24 = 4 − 9 − (−4) = −1; |
S31 = 4 − 1 − (−2) = 5; |
S32 = 5 − 6 − (−2) = 1; |
S41 = 1 − 1 − 0 = 0; |
S42 = 4 − 6 − 0 = −2; |
S43 = 3 − 6 − 0 = −3; |
S51 = 0 −1 − (−9) = 8; |
S52 = 0 − 6 − (−9) = 3; |
S53 = 0 − 0 − 6 = −6. |
Среди оценок Sij есть |
отрицательные |
числа, поэтому исходное |
решение не является оптимальным и его можно улучшить. Выбираем клетку с наименьшим значением Sij (S14 = min Sij ) . Строим для этой
клетки цикл пересчета – многоугольник со звеньями вдоль строк и столбцов, все вершины которого, кроме вершины x14 , находятся в
занятых (базисных) клетках (рис. 2.4)
Рис. 2.4
Клетка x14 незанятая (свободная), остальные клетки занятые
(базисные); приписываем клетке x14 знак «+», обходим по циклу и в
вершинах многоугольника изменяем знаки. В результате получим «означенный» цикл (рис. 2.5)
Рис. 2.5
Определяем минимальное значение груза в отрицательных вершинах λ = x12 = 0 . Осуществляем сдвиг по циклу на величину λ = 0 ; к
значениям груза из «отрицательных» клетках добавим значение λ = 0 .
68
Хотя при этом значение перевозок не изменится (λ = 0) , но клетка x12
станет свободной, а клетка x14 станет базисной. Новое опорное
решение запишем в таблицу и перейдем к следующему шагу потенциалов.
Шаг 2: запишем систему уравнений для потенциалов:
u1 + v1 = 1,
u1 + v1 = 3,u1 + v4 = 2,u2 + v2 = 2,
u2 + v3 = 4,
u3 + v4 = 7,
u4 + v4 = 9,
u5 + v4 = 0.
Найдем значение потенциалов: u1 = 0, v1 = 1, v4 = 3, u3 = 4, v3 = 0, u4 = 6, v2 = 0,
u2 = 2, u5 = −3.
Результаты решения этой системы, запишем в последнюю строку и последний столбец табл. 2.17
|
|
|
|
|
|
|
|
Таблица 2.17 |
|
|
|
|
|
|
|
|
|
|
|
|
j |
|
1 |
2 |
|
3 |
|
4 |
|
i |
|
bj |
20 |
40 |
|
50 |
|
80 |
ui |
|
|
|
|
|
|
||||
|
ai |
|
|
|
|
|
|
|
|
1 |
20 |
|
1 |
6 |
9 |
|
3 |
|
0 |
|
|
|
20 |
0 |
|
|
|
0 |
|
2 |
50 |
|
3 |
2 |
2 |
|
4 |
|
2 |
|
|
|
|
40 |
|
10 |
|
|
|
3 |
60 |
|
4 |
5 |
4 |
|
7 |
|
4 |
|
|
|
|
|
|
40 |
|
20 |
|
4 |
20 |
|
1 |
4 |
3 |
|
9 |
|
6 |
|
|
|
|
|
|
|
|
20 |
|
5 |
40 |
|
0 |
0 |
0 |
|
0 |
|
-3 |
|
|
|
|
|
|
|
|
40 |
|
|
v j |
|
1 |
0 |
|
0 |
|
3 |
|
|
|
|
|
|
|
|
|
|
|
Вычислим оценки Sij для свободных клеток:
69
S13 = 6 − 0 − 0 = 6; |
S14 = 9 − 0 − 0 = 9; |
S21 = 3 − 2 − 1 = 0; |
|
S24 |
= 4 − 2 − 3 = −1; |
S31 = 4 − 4 −1 = −1; |
S32 = 5 − 4 − 0 = 1; |
S41 = 1 − 6 −1 = −6; |
S42 = 4 − 6 − 0 = −2; |
S43 = 3 − 6 − 0 = −3; |
|
S51 = 0 − (−3) −1 = 2; |
S52 = 0 − (−3) − 0 = 3; |
S53 = 0 − (−3) − 0 = 3. |
Среди оценок Sij есть отрицательные числа, поэтому опорный план не является оптимальным. Выбираем клетку x41 (т.к. min Sij = S41 ),
строим для этой клетки цикл пересчета, расставляем знаки в вершинах цикла, начиная со знака «+» в вершине x41 (рис. 2.6).
|
|
|
Рис. 2.6 |
|
|
|
|
Находим |
наименьшее |
значение |
груза, |
записанного |
в |
||
«отрицательной» клетке (λ = x11 = x44 = 20) . Осуществляем сдвиг по циклу |
|||||||
на число λ = 20 (к значениям груза в «положительных» клетках число |
|||||||
λ = 20 прибавляем, а от груза в «отрицательных» клетках число λ = 20 |
|||||||
вычитаем). На каждом шаге одна базисная клетка становится |
|||||||
свободной, а одна свободная клетка становится базисной. В результате |
|||||||
получим значения перевозок: |
x11 = 0, x14 = 20, x41 = 20, x44 |
= 0. |
|
|
|||
Из двух нулевых перевозок x11 и x41 выберем, например x11 |
и будем |
||||||
считать эту переменную базисной (поместим в эту клетку x11 |
значение |
||||||
0), а клетка |
x44 будет свободной. Получим матрицу перевозок (табл. |
||||||
2.18). |
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 2.18 |
||
|
j |
1 |
|
2 |
3 |
4 |
|
i |
bj |
20 |
|
40 |
50 |
80 |
|
|
|
|
|
||||
|
ai |
|
|
|
|
|
|
1 |
20 |
1 |
6 |
9 |
3 |
|
|
|
|
|
0 |
|
|
|
20 |
2 |
50 |
3 |
2 |
2 |
4 |
|
|
|
|
|
|
40 |
10 |
|
|
3 |
60 |
4 |
5 |
4 |
7 |
|
|
|
|
|
|
|
40 |
|
20 |
|
|
|
|
|
|
70 |
|
|
|
|
|
Окончание табл. 2.18 |
|
|
j |
|
1 |
2 |
3 |
4 |
i |
bj |
|
|
|
|
|
|
|
20 |
40 |
50 |
80 |
|
|
|
|
||||
|
ai |
|
|
|
|
|
4 |
20 |
1 |
4 |
|
3 |
9 |
|
|
|
20 |
|
|
|
5 |
40 |
0 |
0 |
|
0 |
0 |
|
|
|
|
|
|
40 |
Стоимость перевозок равна: |
|
|
|
|||
|
Z = 0 1 + 20 3 + 40 2 + 10 2 + 40 4 + 20 7 + 20 1 + 40 0 = 480 . |
|
||||
По сравнению с исходным опорным |
планом |
(Zисх. = 600) |
стоимость |
|||
перевозок уменьшилась. |
|
|
|
|
|
|
Составим и решим систему уравнений для потенциалов (для занятых |
||||||
клеток): |
|
|
|
|
|
|
u1 + v1 = 1,
u1 + v4 = 3,u2 + v2 = 2,u2 + v3 = 2,
u3 + v3 = 4,
u3 + v4 = 7,
u4 + v1 = 9,
u5 + v4 = 0.
Отсюда, u1 = 0, v1 = 1, v4 = 3, u3 = 4, v3 = 0, u2 = 2, v2 = 0, u4 = 0, u5 = −3.
Запишем потенциалы в табл. 2.19
|
|
|
|
|
|
|
|
|
Таблица 2.19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
j |
|
1 |
|
2 |
|
3 |
|
4 |
|
i |
|
bj |
|
|
|
|
|
|
|
ui |
|
|
20 |
|
40 |
|
50 |
|
80 |
||
|
|
|
|
|
|
|
||||
|
ai |
|
|
|
|
|
|
|
|
|
1 |
20 |
|
1 |
|
6 |
9 |
|
3 |
|
0 |
|
|
|
|
0 |
|
|
|
|
20 |
|
2 |
50 |
|
3 |
|
2 |
2 |
|
4 |
|
2 |
|
|
|
|
|
40 |
|
10 |
|
|
|
3 |
60 |
|
4 |
|
5 |
4 |
|
7 |
|
4 |
|
|
|
|
|
|
|
40 |
|
20 |
|
4 |
20 |
|
1 |
|
4 |
3 |
|
9 |
|
0 |
|
|
|
|
20 |
|
|
|
|
|
|
5 |
40 |
|
0 |
|
0 |
0 |
|
0 |
|
-3 |
|
|
|
|
|
|
|
|
|
40 |
|
|
v j |
|
0 |
|
0 |
|
0 |
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|