2_0
.pdf2.4. Транспортная задача, ее решение методом потенциалов и в Excel
Задача 2.4.1. Три фермерских хозяйства А1, А2, А3 ежедневно могут доставлять в магазины соответственно 70, 50 и 60 ц картофеля для обеспе- чения четырёх торговых точек: В1, В2, В3, В4 . Стоимость перевозки 1 ц кар- тофеля и потребность торговых точек в картофеле указаны в табл. 2.4.1.
Таблица 2.4.1. Исходные данные транспортной задачи
Фермерские |
Затраты на перевозку 1 ц карто- |
Запасы кар- |
||||
феля по торговым точкам |
||||||
хозяйства |
тофеля, ц |
|||||
В1 |
В2, |
В3 |
В4 |
|||
|
|
|||||
А1 |
6 |
5 |
7 |
9 |
70 |
|
А2 |
9 |
9 |
6 |
5 |
50 |
|
А3 |
5 |
9 |
3 |
8 |
60 |
|
Потребности в |
|
|
|
|
|
|
картофеле, ц |
20 |
80 |
20 |
40 |
|
|
|
|
|
|
|
|
Определить план поставки картофеля в каждую точку для удовлетво- рения потребностей, чтобы суммарные транспортные издержки были мини- мальными.
Решение.
1. Проверяем наличие закрытости транспортной модели. Задача называется закрытой, если a1 +a2 +…+am = b1+ b2 +…+bn.
Если a1 +a2 +…+am ≠ b1+ b2 +…+bn, то задача называется открытой. a1, a2, …, am – запасы картофеля у m поставщиков, b1, b2 ,…, bn – потребности потребителей.
В нашем случае 70 + 50 + 60 = 180, |
|
|
20 + 80 + 20 + 40 = 160 , |
|||
n |
≠ |
m |
|
j |
(180 |
≠ 160). |
∑ i |
∑ |
b |
||||
a |
|
|
||||
i=1 |
|
j=1 |
|
|
|
|
Следовательно задача открытая. Составим математическую модель задачи.
Введём переменные xij ≥ 0 (i = 1,3; j = 1,4) – количество картофеля, ко-
торое планируется перевозить от i-го фермерского хозяйства к j-й торговой точке (например, х11 – количество картофеля, которое планируется перево- зить от первого фермерского хозяйства к первой торговой точке), Z – сум- марные транспортные издержки, которые надо минимизировать:
Z = 6x11 + 5x12 + 7x13 + 9x14 + 9x21 + 9x22 + 6x23 + 5x24 +
+5x31 + 9x32 + 3x33 + 8x34 → min.
50
С первого фермерского хозяйства вывозится x11 + x12 + x13 + x14 ц кар- тофеля и так как задача открытого типа, запасы картофеля больше потребно- стей, то эта величина не превосходит 70 ц, что записывается в виде неравен- ства x11 + x12 + x13 + x14 ≤ 70 . Количество привезённого картофеля на первую
торговую точку равно x11 + x21 + x31 и оно равно 20 ц, т.е х11+х21+х31 = 1700. Поступая аналогично по остальным фермерским хозяйствам и торговым точ- кам, получаем математическую модель задачи:
Z = 6x11 + 5x12 + 7x13 + 9x14 + 9x21 + 9x22 + 6x23 + 5x24 +
+5x31 + 9x32 + 3x33 + 8x34 → min,
x + x + x + x ≤ 70, |
|||||
|
11 |
12 |
13 |
14 |
|
x21 + x22 + x23 + x24 ≤ 50, |
|||||
x |
+ x |
+ x + x |
≤ 60, |
||
|
31 |
32 |
33 |
34 |
|
x |
+ x |
+ x |
= 20, |
||
|
11 |
21 |
31 |
|
|
x |
+ x |
+ x |
= 80, |
||
|
12 |
22 |
32 |
= 20, |
|
x |
+ x |
+ x |
|||
|
13 |
23 |
33 |
= 40, |
|
x |
+ x |
+ x |
|||
|
14 |
24 |
34 |
|
|
xij ≥ 0 (i =1,3; j =1,4).
Так как спрос больше потребления, то вводим фиктивного потребителя с потребностью равнёй 180 – 160 =2 0 ц и тарифами перевозок равными ну- лю. Для этого в матрицу транспортной задачи вводим дополнительный стол- бец, соответствующую фиктивному потребителю с потребностями
bn+1 = b5 = 20 и тарифами перевозок c15 = c25 = c35 = 0. Для удобства данные запишем в виде табл. 2.4.2.
Таблица 2.4.2. Закрытая транспортная задача примера 2.4.2
bj |
20 |
80 |
20 |
40 |
20 |
|
ai |
||||||
|
|
|
|
|
70 |
6 |
5 |
7 |
9 |
0 |
|
|
|
|
|
|
50 |
9 |
9 |
6 |
5 |
0 |
|
|
|
|
|
|
60 |
5 |
9 |
3 |
8 |
0 |
2. Методом северо-западного угла находим начальный опорный план. Сущность метода северо-западного угла состоит в том, что максимально возможные поставки последовательно вводятся в северо-западную клетку таблицы.
У первого поставщика берём 20 ц картофеля и отдаём их первому по- требителю. 20 записываем в клетку (1;1). Оставшиеся 50 ц картофеля даём
51
второму потребителю. Второму потребителю надо ещё 30 ц картофеля. Его берём у второго поставщика. Оставшиеся 20 ц картофеля у второго постав- щика распределяем третьему потребителю. От третьего поставщика 40 ц от- даём третьему потребителю и 20 ц четвёртому.
Таблица 2.4.3. Первоначальное распределение
bj |
20 |
80 |
20 |
40 |
20 |
ai |
|
|
|
|
|
|
6 |
5 |
7 |
9 |
0 |
70 |
20 |
50 |
|
|
|
|
|
|
|
|
|
|
9 |
4 |
6 |
5 |
0 |
50 |
|
30 |
20 |
|
|
|
|
|
|
|
|
|
5 |
9 |
3 |
8 |
0 |
60 |
|
|
|
40 |
20 |
Проверяем баланс по каждой строке и каждому столбцу.
3. Проверяем распределение на вырожденность. Заполненных клеток должно быть m+n–1=3+5–1=7. Мы получили шесть заполненных клеток. Та- кое распределение называется вырожденным. Для того, чтобы сделать рас- пределение невырожденным, ставят поставку объемом равным нулю в клет- ку, которая образует с другими заполненными так называемую цепочку (цикл) перераспределения. Это означает, что от каждой заполненной клетки можно перейти в любую другую заполненную клетку перемещаясь только горизонтально и вертикально. делая повороты только в заполненных клетках. В одну незаполненную клетку (3;4) ставим 0 и считаем ее заполненной. Ноль можно ставить не в любую незаполненную клетку. В нашем случае ноль нельзя ставить в клетки (1;3) и (2;1).
Получили начальное распределение
|
|
20 50 |
0 |
0 |
0 |
|
|
||
X1 |
= |
|
0 |
30 |
20 0 |
0 |
|
, |
|
|
|
||||||||
|
|
|
0 |
0 |
0 |
40 20 |
|
|
|
|
|
|
|
|
Z(X1) = 20·6+50·5+30·4+20·6+40·8= 930 (грн.).
4. Проверяем полученный план на оптимальность. Проверка текущего опорного плана на оптимальность осуществляется методом потенциалов. На- ходим потенциалы. Каждому поставщику и потребителю ставим в соответст- вие числа ui ,vj , называемые потенциалами таким образом, чтобы их сумма
равнялась тарифам соответствующих заполненных клеток.
ui + v j = cij если (i;j) − заполненная клетка.
52
|
|
Таблица 2.4.4. Потенциалы и оценки оптимальности |
|||||||
ai |
bj |
20 |
80 |
20 |
40 |
|
20 |
|
ui |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
6 |
5 |
7 |
9 |
|
0 |
u1 = 0 |
|
70 |
|
20 |
50 |
[0] |
[ − 3] |
[ − |
2] |
||
|
|
|
|||||||
|
|
9 |
4 |
6 |
5 |
|
0 |
u2 = − 1 |
|
50 |
|
[ − 4] |
30 |
20 |
0 |
[ − |
3] |
||
|
|
|
|||||||
|
|
5 |
9 |
3 |
8 |
|
0 |
u3 |
= 2 |
60 |
|
[3] |
[ − 2] |
[6] |
40 |
|
20 |
||
|
|
|
|
||||||
vj |
|
v1 = 6 v2 = 5 v3 = 7 v3 = 6 v4 = − 2 |
|
|
|||||
Для нахождения потенциалов получаем систему уравнений |
u |
|
+ v |
1 |
1 |
|
u |
|
+ v |
1 |
2 |
|
u |
|
+ v |
|
2 |
2 |
u2 + v3 |
||
u |
|
+ v |
2 |
4 |
|
u |
|
+ v |
|
3 |
4 |
u3 + v5
=6
=5
=4
=6
=5
=8
=0
u |
= 0 |
v |
= 6 |
1 |
|
1 |
|
v |
= 5 |
|
|
|
2 |
|
|
u2 = −1
v3 = 7
v4 = 6
u3 = 2
v5 = −2.
Система состоит из семи уравнений с восьмью неизвестными. Она не- определённая, то есть имеет бесконечное множество решений. Один из по- тенциалов приравниваем к нулю, а остальные находятся однозначно из этой системы. Пусть u1 = 0 . Тогда из первого уравнения находим v1 = 6 , из второ- го − v2 = 5 и т.д. Систему можно не выписывать, а значения потенциалов на- ходить непосредственно в таблице.
5.Находим оценки незаполненных клеток по формуле
δi j = ui + v j − cij :
δ13 = 0+7 − 7 = 0, δ14 = 0+6 − 9 = − 3<0, δ15 = 0 − 2 − 0 = − 2<0, δ 21 = − 1+6 − 9= − 4<0, δ 25 = − 1− 2 − 0 = − 3<0,
δ31 = 2+6 − 5 = 3>0, δ32 = 2+5 − 9 = − 2<0, δ33 = 2+7 − 3 = 6>0.
Их значения записываем в клетках таблицы в нижнем левом углу. Ве- личины груза выделены жирным шрифтом, а значения оценок выделены квадратными скобками. Оценка 3 в клетке (3;1) показывает, что если в эту клетку поместить единицу груза, то стоимость перевозок уменьшится на три
53
гривны. Действительно, для сохранения баланса с клетки (3;4) необходимо отнять единицу груза, в клетку (2;4) необходимо прибавить единицу груза, с клетки (2;2) необходимо отнять единицу груза, в клетку (1;2) необходимо до- бавить единицу груза, с клетки (1;1) отнять единицу груза. Стоимость пере- возки будет соответственно меняться:5 − 8 + 5 − 4 + 5 − 6 = −3, т.е. уменьшить- ся на 3 грн.
Отсюда следует, что текущий опорный план будет оптимальным, если для всех незаполненных клеток оценки будут неположительными:
δi j = ui + v j − cij ≤ 0
6.Начальный план не является оптимальным, поскольку имеются по- ложительные оценки для пустых клеток. Переходим к новому опорному пла- ну. Переход осуществляется заполнением клетки, которой соответствует наибольшая положительная оценка оптимальности. В нашем случае это клетка (3;3). Для клетки (3;3) строим цикл пересчёта (цепочку перераспреде- ления). Циклом для незаполненной клетки называется последовательность заполненных клеток, в которые поочерёдно добавляется и вычитается груз для сохранения баланса, если в незаполненную клетку поместить некоторый груз. Для каждой свободной ячейки всегда существует только одна цепочка перераспределения. Она составляется таким образом, что на каждом углу це- почки стоят заполненные клетки, а один угол цепочки находится в клетке, куда осуществляется перераспределение.
20 – ρ 0 + ρ
+ ρ |
|
40 – ρ |
|
|
|
Рис. 2.4.1. Цикл перераспределения для клетки (3;3)
7.Определяем груз ρ, который будем перемещать по циклу, он равный минимуму грузов стоящих в клетках, в которых он вычитается от объемов в клетках
ρ= min (40,20) = 20.
8.Составляем новую таблицу. Клетка (3;3) заполняется, а клетка (2;3) освобождается. Так как в клетку (3;3) будем ставить груз равный 20 ц, то значение целевой функции при втором распределении уменьшится следую- щим образом:
Z (Х2 ) = Z (Х1) − δ33 ρ = 930− 6 20 = 810 .
54
Таблица 2.4.5. Потенциалы и оценки оптимальности второго плана |
|||||||||
ai |
bj |
20 |
80 |
20 |
40 |
|
20 |
|
ui |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
6 |
5 |
7 |
9 |
|
0 |
u1 = 0 |
|
70 |
|
20 |
50 |
[ − 6] |
[ − 3] |
[ − |
2] |
||
|
|
|
|||||||
|
|
9 |
4 |
6 |
5 |
|
0 |
u2 = -1 |
|
50 |
|
[ − 4] |
30 |
[ − 6] |
20 |
[ − |
3] |
||
|
|
|
|||||||
|
|
5 |
9 |
3 |
8 |
|
0 |
u3 |
= 2 |
60 |
|
[3] |
[ − 2] |
20 |
20 |
|
20 |
||
|
|
|
|
||||||
vj |
|
v1 = 6 v2 = 5 v3 = 1 v3 = 6 v4 = − 2 |
|
|
|
|
20 |
50 |
0 |
0 |
0 |
|
|
X2 |
= |
|
0 |
30 |
0 |
20 |
0 |
|
|
|
|||||||
|
|
|
0 |
0 |
20 |
20 |
20 |
|
|
|
|
|
Z(X2) = 20·6+50·5+30·4+20·5+20·3+20·8= 810 (грн.)
9. Возвращаемся к пункту 4 и продолжаем итерации, пока получим все оценки незаполненных клеток неположительные.
Находим потенциалы и оценки оптимальности для незаполненных кле- ток второго опорного плана. Вычисления выполняем непосредственно в табл. 2.4.5.
Второй план также не оптимален, так как имеется положительная оцен- ка для свободной клетки (3;1). Будем делать перераспределение в клетку (3;1). Для этой клетки составляем цепочку перераспределения и определяем груз, который будем перемещать по этой цепочке.
20 – ρ |
|
50 + ρ |
|
|
|
|
|
|
|
30 – ρ |
|
20 + ρ |
|
|
|||
|
|
|
|
|
|
|
|
+ ρ
20 – ρ
Рис. 2.4.2. Цепочка перераспределения для клетки (3;1)
ρ = min (20,30,20) = 20
Составляем третью таблицу. Освобождается две клетки (1;1) и (3;4), но незаполненной считаем только (1;1), так как в ней находится больший тариф. В клетку (3;4) ставим нуль и считаем её заполненной.
55
Таблица 2. 4. 6. Потенциалы и оценки оптимальности третьего плана |
||||||||
ai |
bj |
20 |
80 |
20 |
40 |
|
20 |
ui |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
6 |
5 |
7 |
9 |
|
0 |
u1 = 0 |
70 |
|
[ − 3] |
70 |
[ − 7] |
[ − 3] |
[ − |
2] |
|
|
|
|||||||
|
|
9 |
4 |
6 |
5 |
|
0 |
u2 = − 1 |
50 |
|
[ − 7] |
10 |
[ − 6] |
40 |
[ − |
3] |
|
|
|
|||||||
|
|
5 |
9 |
3 |
8 |
|
0 |
u3 =2 |
60 |
|
20 |
[ − 2] |
20 |
0 |
|
20 |
|
|
|
|
||||||
vj |
|
v1 =3 |
v2 = 5 v3 = 1 v3 = 6 v4 = − 2 |
|
||||
Получили третий опорный план (распределение). |
|
|
|
0 |
70 |
0 |
0 |
0 |
|
|
X3 |
= |
|
0 |
10 |
0 |
40 |
0 |
|
|
|
|||||||
|
|
|
20 |
0 |
20 |
0 |
20 |
|
|
|
|
|
Z(X3) = 70·5+10·4+40·5+20·5+20·3= 750 (грн.)
Он оптимальный, так как все оценки отрицательные.
Ответ. Распределение картофеля по торговым точкам имеет вид:
|
|
|
0 |
70 |
0 |
0 |
|
|
XOpt |
= Xmin |
= |
|
0 |
10 |
0 |
40 |
|
|
. |
|||||||
|
|
|
|
20 |
0 |
20 |
0 |
|
|
|
|
|
|
Общие затраты на перевозку картофеля составят 750 грн. Спрос торго- вых точек удовлетворён полностью − они получат 160 ц картофеля. У третьего фермерского хозяйства останется нереализованным 20 ц картофеля.
Рассмотрим методику решения транспортной задачи в Excel
Решение аналогичное решению задач симплекс-методом.
Решение состоит из двух этапов:
ввести, согласно стандартного приёма, формулы математической моде- ли задачи в Excel;
в диалоговом режиме произвести решение задачи по выбранной про-
грамме «Поиск решения».
56
Первый этап решения транспортной задачи с помощью Excel
Открыть Excel. Набрать исходные данные транспортной задачи в про- извольном месте таблицы Excel, как показано в табл. 2.4.7. Клетки E1:E3 и A4:D4, где должны находиться знаки ограничений, оставляем свободными (они обведены двумя линиями). В клетке E6 (обведённой жирной линией) будет находиться значение целевой функции. В клетках A6: D8 (обведённых
жирной штриховой |
линией) |
будут |
находиться |
значения |
переменных |
||||||
х11, х12 , х13 , х14 , х21 |
, х22 , х23 , х24 , х31, х32 , х33 , |
х34 и в конце – ответ. |
|
|
|||||||
|
Таблица 2.4.7. Исходные данные примера 1, набранные в Excel. |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
A |
B |
C |
|
D |
E |
F |
|
|
|
1 |
|
6 |
5 |
7 |
9 |
|
|
70 |
|
|
|
2 |
|
9 |
4 |
6 |
5 |
|
|
50 |
|
|
|
3 |
|
5 |
9 |
3 |
8 |
|
|
60 |
|
|
|
4 |
|
|
|
|
|
|
|
|
|
|
|
5 |
|
20 |
80 |
20 |
40 |
|
|
|
|
|
|
6 |
|
|
|
|
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
|
|
|
По общим правилам вводим формулы математической модели задачи. 1. Вводим формулу целевой функции. Для этого курсор ставится в
клетку E6 и выполняются действия: «Вставка»; «Функция»; «Математиче-
ские»; «СУММПРОИЗ»; «ОК».
В строку «Массив 1» вводится (выделяется) A1:D3; В строку «Массив
2» вводится A6:D8; «OK». (Рис. 2.4.3).
Рис. 2.4.3. Введение целевой функции
57
2.Вводим ограничения по поставщикам. Суммируем значения клеток массива A6: D8 по строкам и столбцам и располагаем их соответственно в клетках E1:E3 и A4:D4 (они обведены двумя линиями). Для этого ставим курсор в клетку E1 и выполняем действия: «Вставка»; «Функция»; «Мате- матические»; «СУММ»; «ОК». В строку «Массив 1» вводится (выделяется) A6:D6; «OK». Маленький плюс протягиваем по клеткам E1:E3.
3.Вводим ограничения по потребителям. Ставим курсор в клетку A4 и
выполняем действия: «Вставка»; «Функция»; «Математические»; «СУММ»; «ОК». В строку «Массив 1» вводится (выделяется) A6:A8; «OK». Маленький плюс протягиваем по клеткам A4:D4.
Математическая модель, за исключением знаков ограничений и вида оптимума, внесена (табл. 2.4.8).
Таблица 2.4.8. Вид листа Excel после набора мат. |
модели примера 2.4.1 |
|||||||
|
|
|
|
|
|
|
|
|
|
|
A |
B |
C |
D |
|
E |
F |
|
1 |
6 |
5 |
7 |
9 |
|
0 |
70 |
|
2 |
9 |
4 |
6 |
5 |
|
0 |
50 |
|
3 |
5 |
9 |
3 |
8 |
|
0 |
60 |
|
4 |
0 |
0 |
0 |
0 |
|
|
|
|
5 |
20 |
80 |
29 |
40 |
|
|
|
|
6 |
|
|
|
|
|
|
|
|
7 |
|
|
|
|
|
|
|
|
8 |
|
|
|
|
|
|
|
Второй этап решения транспортной задачи с помощью Excel
Запустись команду «Поиск Решения»: «Сервис»; «Поиск решения»
(если «Поиск Решения» нет, то в надстройке поставить галочку возле поиск решения); «OK».
Дальше работаем в диалоговом режиме. Действия, которые надо вы- полнять кратко перечислены ниже.
Установить целевую ячейку E6; указать минимальное значение; изме- няя ячейки A6: D8; «Добавить»; в ссылке на ячейку вводится массив E1:E3, знак неравенства оставляем ≤ ; в ограничения выделяем клетки F1:F3 с чис- лами 70, 50,60; «Добавить»; в ссылке на ячейку вводится массив A4:D4, вы- бираем знак равенства, согласно модели; в ограничения выделяем клетки
A5:D5 с числами 20,80,20,40; «ОК».
После этих действий экран будет иметь вид
58
Рис. 2.4.4 |
Рис. 2. 4.5 |
«Параметры»; «Линейная модель»; «Неотрицательные значения»; «ОК» (Рис. 2.4.5); «Выполнить»; «Сохранить найденное решение»; Выде- лить «Результаты»; «Устойчивость»; «Пределы»; «ОК». (Рис. 2.4.6).
Рис. 2.4.6
В результате получим решение и его анализ, табл. 2.4.9.
|
|
Таблица 2.4.9. Решение транспортной задачи |
|||||
6 |
5 |
7 |
9 |
|
70 |
70 |
|
9 |
4 |
6 |
5 |
|
50 |
50 |
|
5 |
9 |
3 |
8 |
|
40 |
60 |
|
20 |
80 |
20 |
40 |
|
|
|
|
20 |
80 |
20 |
40 |
|
|
|
|
|
0 |
70 |
0 |
0 |
|
750 |
|
|
0 |
10 |
0 |
40 |
|
|
|
20 |
0 |
20 |
0 |
|
|
|
2. 5. Задача динамического программирования
Задача 2.5.1. Задача о распределении капитальных вложений 1. Постановка задачи. Концерн, состоящий из 4 крупных предприятий
машиностроения решил выделить на их реконструкцию 500 тыс. $. Эффек- тивность функционирования j − го предприятия после его реконструкции
59