практикум по математике часть 3
.pdfДадим задаче математическую формулировку. Обозначим через xij – количество груза, отправляемого от i –го поставщика к j-му потребителю. Неотрицательные переменные x11 , x12 ,..., xmn должны удовлетворять условиям:
1.Суммарное количество груза, направляемое из каждого пункта отправления во все пункты назначения, должно быть равно запасу груза в данном пункте.
2.Суммарное количество груза, доставляемое в каждый пункт назначения изо всех пунктов отправления, должно быть равно заявке, поданной данным пунктом.
3.Суммарная стоимость всех перевозок должна быть минимальной. И тогда под планом задачи подразумевается матрица
x |
x |
... |
x |
|
|
|
11 |
12 |
|
1n |
|
x21 |
x22 |
... |
x2n |
|
|
X = |
|
|
... |
.... |
|
.... .... |
|
||||
|
|
xm2 |
... |
|
|
xm1 |
xmn |
Допустимый план, имеющий не более m + n −1 отличных от нуля компонентов xij , называется базисным, или опорным.
Тогда математическая постановка транспортной задачи состоит в нахождении неотрицательной матрицы Х, удовлетворяющую условиям
|
|
m |
= bj ,(j =1,..., n) |
|
|
|
|
∑xij |
(2.1) |
||
|
|
i=1 |
|
|
|
|
|
n |
= ai ,(i =1,..., m) |
|
|
|
|
∑xij |
(2.2) |
||
|
|
j=1 |
|
|
|
|
xij ≥ 0,(i =1,..., m; j =1,..., n) |
(2.3) |
|||
и доставляющую минимум целевой функции |
|
||||
|
|
|
m n |
xij |
|
|
|
F = ∑∑cij |
(2.4) |
||
|
|
|
i=1 j=1 |
|
|
|
|
|
|
m |
n |
Различают |
задачи |
с закрытой |
моделью, когда ∑ai |
= ∑bj и |
|
|
|
|
|
i=1 |
j=1 |
|
|
m |
n |
|
|
открытой моделью, |
когда |
∑ai |
≠ ∑bj |
, то есть баланс между запасами и |
|
|
|
i=1 |
j=1 |
|
|
потребностями отсутствует.
Необходимым и достаточным условием разрешимости транспортной задачи является равенство суммарных запасов суммарным потребностям, т.е.
m |
n |
|
∑ai = ∑bj |
(2.5) |
|
i=1 |
j=1 |
|
30
Прежде чем приступить к решению транспортной задачи, необходимо проверить условие (2.5). Если выполняется условие (2.5), то задача называется закрытой. Если же задача с неправильным балансом (открытая), то:
|
m |
n |
|
|
|
|
|
|
1. при |
∑ai |
> ∑bj |
(спрос меньше |
предложения) необходимо |
||||
|
i=1 |
j=1 |
|
|
|
|
|
|
|
|
|
|
|
bn+1 |
m |
n |
|
ввести «фиктивного» |
потребителя |
груза: |
= ∑ai − ∑bj |
и |
||||
|
|
|
|
|
|
i=1 |
j=1 |
|
соответствующие |
тарифы от |
любого |
поставщика |
до |
«фиктивного» |
потребителя принимаются равными нулю: ci,n+1 = 0.
m |
n |
|
|
|
2. при ∑ai < ∑bj (спрос больше |
предложения) |
необходимо |
||
i=1 |
j=1 |
|
|
|
|
поставщика груза: am+1 |
n |
m |
|
ввести «фиктивного» |
= ∑bj − ∑ai |
и стоимость |
||
|
|
j=1 |
i=1 |
|
перевозок от «фиктивного» поставщика до всех потребителей равна нулю: cm+1, j = 0Этим задача открытого типа сводится к транспортной задаче закрытого типа.
Решение транспортной задачи разбивается на два этапа:
1.Определение начального допустимого базисного решения (первого опорного плана)– первоначальное распределение поставок.
2.Построение последовательных итераций (шагов), улучшающих опорные планы (каждый новый план не должен увеличивать суммарные затраты)
После выполнения первого этапа шаги второго этапа проводятся до тех пор, пока не будет найдено оптимальное распределение поставок.
2.1.2. Построение первоначального плана
Начальный и последующие планы заносятся в распределительную таблицу, в которой заранее записываются исходные данные задачи. Таблица
с внесенными пунктами отправления Ai , их запасами ai , пунктами назначения B j , их запросами bj и тарифами cij (i =1,2,..., m; j =1,2,..., n) имеет вид таблицы 2.1.
31
|
|
|
|
|
|
|
Таблица 2.1 |
|
Поставщики |
|
|
Потребители |
|
|
Запасы |
|
|
|
|
|
Bj |
|
|
|
||
B1 |
B2 |
... |
… |
Bn |
|
|||
A1 |
c11 |
c12 |
… |
c1j |
… |
c1n |
a1 |
|
x11 |
x12 |
x1j |
x1n |
|
||||
|
|
|
|
|
||||
|
|
|
|
c2j |
|
|
|
|
A2 |
c21 |
c22 |
… |
… |
c2n |
a2 |
|
|
x21 |
x22 |
x2j |
x2n |
|
||||
|
|
|
|
|
||||
|
|
|
|
… |
|
|
|
|
… |
… |
… |
… |
… |
… |
… |
|
|
Ai |
ci1 |
ci2 |
… |
cij |
… |
cin |
ai |
|
xi1 |
xi2 |
xij |
xin |
|
||||
|
|
|
|
|
||||
|
|
|
|
… |
|
|
|
|
… |
… |
… |
… |
… |
… |
… |
|
|
Am |
cm1 |
cm2 |
… |
cmj |
… |
cmn |
am |
|
xm1 |
xm2 |
xmj |
xmn |
|
||||
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
m |
n |
Потребности |
b1 |
b2 |
… |
bj |
… |
bn |
∑ai = |
∑bj |
|
|
|
|
|
|
|
i=1 j=1 |
|
|
|
|
|
|
|
|
|
|
Тарифы cij записаны в верхнем правом углу, а величины поставок xij в |
середине клетки. При этом клетки в которые поместим грузы, называются занятыми, им соответствуют базисные переменные опорного решения. Остальные клетки незанятые, или пустые, им соответствуют свободные переменные.
Рассмотрим два метода построения первого опорного плана.
Метод северо–западного угла. В этом методе первой заполняется клетка с номером (1,1) максимально возможной поставкой. При этом, если закрывается строка, то следующей заполняется клетка с номером (2,1); если же закрывается столбец, то следующей заполняется клетка (1,2) и т.д.. И так каждый раз загружается клетка, соседняя по строке или столбцу. Последней будет заполнена клетка с номером (m,n). В результате заполненные клетки расположатся как бы по диагонали (1,1)– (m,n).
Недостатком этого метода является то, что при заполнении он игнорирует значения стоимости cij , поэтому построенный исходный опорный план, как правило, оказывается весьма далеким от оптимального.
32
Другим способом нахождения первоначального опорного плана является метод наименьшей стоимости. Согласно этому методу, грузы распределяются в первую очередь в те клетки, в которых находится
минимальный тариф перевозок cij . В клетке (i, j) этого тарифа (в середине) записывается максимально возможная поставка с учетом ограничений этой строки и этого столбца: xij = min(ai ,bj ). Этой поставкой либо
обеспечивается потребность одного потребителя, и тогда этот потребитель (столбец) исключается из дальнейшего рассмотрения, либо от одного поставщика забирается весь груз, и тогда этот поставщик (строка) исключается из дальнейшего рассмотрения. Поэтому, не принимая более во внимание i–ую строку ( или j–ый столбец), снова ищем клетку с наименьшей стоимостью перевозок и заполняем ее с учетом изменившихся потребностей. Продолжаем этот процесс до тех пор, пока все запасы не будут исчерпаны, а все потребности– удовлетворены.
Если имеются два или более одинаковых наименьших тарифов, то заполняемая клетка берется произвольно среди них.
Пример 1. Найти опорный план методом северо-западного угла. Исходные данные приведены в таблице 2.2.
|
|
|
|
|
|
Таблица 2.2 |
Поставщики |
|
Потребители |
|
|
Запасы |
|
|
|
|
|
|
||
B1 |
B2 |
B3 |
B4 |
|
||
|
|
|
||||
A1 |
7 |
8 |
1 |
|
2 |
160 |
|
|
|
|
|
||
A2 |
4 |
5 |
9 |
|
8 |
140 |
|
|
|
|
|
||
A3 |
9 |
2 |
3 |
|
6 |
170 |
|
|
|
|
|
||
Потребности |
120 |
50 |
190 |
110 |
|
470 |
|
|
|
|
|
|
|
Решение. Составим опорный план методом северо-западного угла. Здесь число пунктов отправления (поставщиков) m=3, а число пунктов назначения (потребителей) n=4. Следовательно, опорный план задачи должен содержать 4 +3 −1 = 6 заполненных клеток.
Заполнение таблицы начнем с клетки с номером (1,1), т.е. постараемся удовлетворить потребности первого потребителя за счет запасов первого поставщика. Так как запасы поставщика A1 больше, чем потребности пункта B1, то x11 = min(160,120)=120 , записываем это значение в клетке с
номером (1,1) таблицы 2.3 и исключаем из рассмотрения столбец B1, считая при этом запасы пункта A1 равными 40 (где 160 −120 = 40).
33
Рассмотрим первые из оставшихся пунктов отправления A1 и назначения B2. Запасы пункта A1 меньше потребностей пункта B2. Тогда весь остаток запасов пункта A1 отправляем в пункт B2, то есть записываем значение 40 в клетку с номером (1,2) таблицы 2.3 и исключаем из рассмотрения строку A1, считая при этом потребности пункта B1 равными 10 ( где 50 − 40 =10). Снова рассмотрим первых из оставшихся пунктов поставщиков A2 и потребителей B2 (так как не хватает в этот пункт 10ед.). Запасы пункта A2 (равные 140) больше потребностей пункта B2 (потребность составляет 10), то берем минимальное значение ( min(140,10)=10 ) и ставим
его в клетку с номером (2,2) таблицы 2.3, исключая из рассмотрения столбец B2, т.к. все потребности этого потребителя удовлетворены. Тогда запасы пункта A2 равны 140 −10 =130. Смотрим ближайшего потребителя и это B3.
Запасы |
пункта |
A2 |
|
меньше |
потребностей |
пункта |
B3, |
то |
||||||
x23 = min(130,190) |
=130 и исключим из рассмотрения строку A2. Значение |
|||||||||||||
x23 =130 запишем |
в |
соответствующую |
клетку таблицы 2.3 |
и считаем |
||||||||||
потребности пункта B3 равными 60 (это 190 −130 = 60 ). |
|
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 2.3 |
||
|
Поставщики |
|
|
|
Потребители |
|
Запасы |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
B1 |
|
B2 |
|
|
B3 |
|
B4 |
|
||||
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
A1 |
|
120 |
7 |
40 |
8 |
|
1 |
|
2 |
|
160 |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
A2 |
|
|
4 |
|
5 |
|
9 |
|
8 |
|
|
|
|
|
|
|
|
10 |
|
|
130 |
|
|
|
140 |
||
|
|
A3 |
|
|
9 |
|
2 |
|
3 |
|
6 |
|
|
|
|
|
|
|
|
|
|
|
60 |
|
110 |
|
170 |
||
|
Потребности |
|
120 |
|
50 |
|
|
190 |
|
110 |
|
470 |
||
|
|
|
|
|
|
|
|
|
|
|||||
|
|
Теперь перейдем к заполнению клетки для неизвестного |
x33 . |
Здесь |
||||||||||
запасы |
A3 равны |
170, |
а потребности B3 |
– 60. |
Вычисляем |
x33 = min(170,60)= 60 и исключаем из рассмотрения столбец B3. Значение
x33 = 60 запишем в соответствующую клетку таблицы 2.3 и считаем остаток
запасов пункта A3 170 −60 =110 . Что и совпадает с потребностью пункта B4. Пишем это значение в оставшуюся единственную клетку с номером (3,4) таблицы 2.3.
В результате получаем опорный план
34
120 |
40 |
0 |
0 |
|
|
|
0 |
10 |
130 |
0 |
|
X = |
|
||||
|
0 |
0 |
60 |
110 |
|
|
|
Согласно данному плану перевозок, общая стоимость перевозок всего
груза составляет
F =120 7 + 40 8 +10 5 +130 9 + 60 3 +110 6 = 3220.
Пример 2. Найти опорный план методом наименьшей стоимости. Исходные данные приведены в таблице 2.2.
Решение. Составим опорный план методом наименьшей стоимости. Минимальный тариф, равный 1, находится в клетке с номером (1,3). Находим
x13 = min(160,190)=160, запишем это значение в соответствующую
клетку таблицы 2.4 и исключим из дальнейшего рассмотрения строку A1. Считаем потребности потребителя B3 190 −160 = 30.
В оставшейся части таблицы с двумя строками A2 и A3 и четырьмя столбцами B1, B2, B3 и B4 клетка с наименьшим значением стоимости равна 2
и |
находится на пересечении строки A3 и столбца B2. Находим |
x32 |
= min(50,170)= 50 и вносим это значение в соответствующую клетку |
таблицы 2.4. исключаем из дальнейшего рассмотрения столбец B2 (т.к.
потребности его полностью удовлетворены), а запасы пункта A3 будут равны:
170 −50 =120.
|
|
Потребители |
|
Таблица 2.4 |
||
Поставщики |
|
|
Запасы |
|||
B1 |
B2 |
B3 |
B4 |
|||
|
2 |
|||||
A1 |
7 |
8 |
1 |
|
||
4 |
5 |
160 |
|
160 |
||
A2 |
9 |
|
8 |
|||
120 |
2 |
3 |
20 |
140 |
||
A3 |
9 |
|
6 |
|||
120 |
50 |
30 |
90 |
170 |
||
Потребности |
50 |
190 |
110 |
470 |
После этого рассматриваем оставшуюся часть таблицы с двумя строками A2 и A3 и тремя столбцами B1, B3 и B4. В ней находим минимальный тариф равный 3, который находится на пересечении строки A3 и столбца B3. Столбец B3 уже заполнен и не хватает 190 −160 = 30, а запасы в A3 равны
35
170 −50 =120, |
следовательно, |
находим x33 = min(120,30)= 30 и |
||||
заполняем |
эту |
клетку. |
Тогда |
остаток запасов в пункте |
A3 равен |
|
120 −30 = |
90 ед. и исключаем из дальнейшего рассмотрения столбец B3. |
|||||
Теперь рассмотрим оставшуюся часть таблицы с двумя строками A2 и |
||||||
A3 и двумя столбцами B1 |
и B4. В этой оставшейся части таблицы |
находим |
||||
минимальный тариф равный 4, который находится на пересечении строки A2 |
||||||
и столбца B1. Находим x21 |
= min(140,120)=120 и записываем это значение |
|||||
в соответствующую клетку таблицы 4. Столбец B1 |
исключаем из |
|||||
рассмотрения, и находим остаток запасов в пункте A2: 140 −120 = 20. |
||||||
Нам остается рассмотреть клетки с номерами (2,4) |
и (3,4). Так как |
остаток запасов в пункте A2 составляет 20ед., то вносим это значение в клетку с номером (2,4), а остаток запасов в пункте A3 равен 90 и это значение записываем в клетку с номером (3,4) таблицы 5. В результате получим опорный план
|
0 |
0 |
160 |
0 |
|
|
|
0 |
0 |
20 |
|
X = 120 |
|
||||
|
0 |
50 |
30 |
90 |
|
|
|
При данном плане общая стоимость перевозок всего груза составляет
F =160 1+120 4 + 20 8 +50 2 +30 3 +90 6 =1530.
Что составляет меньшую сумму, чем при составлении плана методом северо-западного угла (см. пример 1).
2.1.3.Определение оптимального плана транспортной задачи
Для определения оптимального плана транспортной задачи разработано несколько методов. Однако наиболее часто используется метод
потенциалов. |
|
|
|
|
|
|
|
|
|
Если опорное решение транспортной задачи является оптимальным, |
|||||||
то |
ему соответствует |
система |
m + n |
действительных |
чисел |
|||
αi |
(i =1,2,..., m) и β j (j =1,2,..., n), удовлетворяющих условиям |
|
||||||
|
|
|
αi |
+ β j = cij |
– |
для заполненных клеток |
(2.6) |
|
и |
|
|
= cij −αi − β j |
≥ 0 |
– для пустых клеток |
(2.7) |
||
|
|
ij |
||||||
|
Числа αi и |
β j |
называют потенциалами, где αi – потенциалы |
|||||
поставщиков (строк), |
β j |
– |
потенциалы потребителей (столбцов), а |
ij – |
оценка свободных клеток.
36
Для определения оптимальности первоначального плана необходимо составить систему уравнений из условия (2.6) для заполненных клеток и решить ее.
Так как число заполненных клеток равно m + n −1, то система из условия (2.6) с m + n неизвестными содержит m + n −1 уравнений. Поскольку число неизвестных превышает на единицу число уравнений, одно из неизвестных можно принять равным произвольному числу, например
α1 = 0 и найти последовательно из уравнений условия (2.6) значения
остальных неизвестных потенциалов.
После того как все потенциалы найдены, для каждой из пустых клеток проверяют выполнение условий оптимальности (2.7).
Если хотя бы одна из оценок |
ij < 0 , то план не является |
оптимальным и его можно улучшить методом перераспределения поставок по циклу. Отметим клетку с наименьшей отрицательной оценкой и построим цикл с начальной вершиной в этой клетке.
Циклом с начальной вершиной в данной клетке называется многоугольник, у которого:
1.все стороны лежат в строках и столбцах;
2.все углы прямые;
3.все вершины, кроме начальной, лежат в заполненных клетках, а начальная вершина – в свободной неоптимальной клетке»
4.на сторонах цикла могут быть занятые клетки, но они не являются вершинами цикла;
Циклы пересчета могут иметь следующую форму:
Примем некоторые обозначения: ο – свободная клетка (начало цикла), • – занятая клетка (вершина цикла), а возможные места расположения
занятых клеток обозначим |
|
|
|
|
|
|
|
|
|
|||
1) |
|
– |
2) |
|
– |
|
+ |
3) |
|
– |
|
+ |
+ |
|
– |
|
+ |
|
|||||||
|
|
|
+ |
|
|
|
|
|
– |
|||
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
– |
|
+ |
+ |
|
|
|
– |
– |
|
|
+ |
|
|
|
|
|
|
|
|
|
|
Число вершин цикла обязательно четно. «Неоптимальная» клетка может находиться в любой вершине цикла (на примерах рассмотрены один из вариантов).
По циклу будем перемещать поставку. Для нахождения величины этой поставки сначала проставим знаки в вершинах цикла: в «неоптимальную» клетку ставим знак «+» (плюс) (всегда), а далее, совершая обход по циклу, чередуем знаки «–» (минус) и «+» (плюс) в вершинах цикла. Найдем наименьшую из величин поставок в отрицательных вершинах. Эту
37
величину прибавим к вершинам со знаком «+» (плюс) и вычтем из вершин со знаком «–» (минус).Произведен сдвиг по циклу. В результате сдвига по циклу приходим к новому опорному плану.
Полученный опорный план проверяем на оптимальность ( при помощи равенств (2.6) и (2.7)). Улучшение новых планов проводим до тех пор, пока очередной план не станет оптимальным. Для него все оценки
свободных клеток должны быть неотрицательными, то есть ij ≥ 0 .
Из изложенного выше следует, что процесс нахождения решения транспортной задачи методом потенциалов включает следующие этапы:
1. Находим первоначальный опорный план. При этом число заполненных клеток должно быть равным m + n −1. И считаем стоимость перевозок для данного плана.
2. Находим потенциалы αi и β j соответственно поставщиков и
потребителей из условия (2.6).
3. Поверяем план на оптимальность. Для каждой свободной клетки находим ее оценку ij из условия (2.7). Если нет отрицательных
оценок, то получен оптимальный план транспортной задачи; если же такие оценки имеются, то переходим к новому опорному плану.
4. Для свободной клетки с наибольшей по модулю отрицательной оценкой( ij < 0 ) строим цикл (вариант цикла единственный) и проводим
сдвиг по этому циклу.
5. Полученный опорный план проверяем на оптимальность, т.е. повторяем все действия, начиная с этапа 2.
Замечание. Количество таблиц при решении транспортной задачи может оказаться любым. Это зависит от того, на сколько первый опорный план окажется близким к оптимальному. Может случится, что первая же таблица будет соответствовать оптимальному плану. Это устанавливается методом потенциалов.
Транспортная задача всегда имеет оптимальное решение (один или несколько опорных оптимальных планов).
2.2. Решение типовой задачи
Задача. Имеется три пункта поставки однородного груза А1, А2, А3 и пять пунктов потребления груза В1, В2, В3, В4, В5. На пунктах А1, А2, А3 находится груз соответственно в количестве 280, 220 и 300 тонн. В пункты В1, В2, В3, В4, В5 требуется доставить соответственно 190, 140, 180, 120, 170 тонн груза. Затраты на перевозку 1т. груза между пунктами поставки и пунктами потребления приведены в матрице С (в тыс.руб.) Найти такой план
38
закрепления потребителей за поставщиками, чтобы общие затраты по перевозкам груза были минимальными
|
7 |
3 |
9 |
15 |
35 |
С = |
3 |
10 |
12 |
20 |
46 |
15 |
11 |
16 |
19 |
48 |
Решение. Данные задачи запишем в виде таблицы 2.5.
|
|
|
|
|
|
|
Таблица 2.5 |
|
|
|
|
|
|
|
|
|
|
Поставщики |
|
Потребители |
|
|
|
Запасы |
||
|
|
|
|
|
|
|
||
B1 |
B2 |
B3 |
|
B4 |
|
В5 |
||
|
|
|
|
|||||
A1 |
7 |
3 |
9 |
|
15 |
|
35 |
280 |
|
|
|
|
|
|
|
||
A2 |
3 |
10 |
12 |
|
20 |
|
46 |
220 |
|
|
|
|
|
|
|
|
|
A3 |
15 |
11 |
16 |
|
19 |
|
48 |
300 |
|
|
|
|
|
|
|
|
|
Потребности |
190 |
140 |
180 |
|
120 |
|
170 |
|
|
|
|
|
|
|
|
||
Проверяем задача закрытая или открытая. Для этого найдем сумму |
||||||||
запасов – |
280 + 220 + 300 = 800 |
|
и сумму |
потребностей |
190+140+180+120+170=800. Так как эти значения равны, то мы имеем задачу закрытого типа. Теперь начнем ее решать согласно описанному ранее алгоритму.
1. Составим первоначальный опорный план методом наименьшей стоимости перевозок и результат запишем в таблице 2.6
|
|
|
|
|
|
|
Таблица 2.6 |
|
|
|
|
|
|
|
|
|
|
Поставщики |
|
Потребители |
|
|
Запасы |
|||
|
|
|
|
|
|
|
||
B1 |
B2 |
B3 |
|
|
B4 |
В5 |
||
|
|
|
|
|||||
A1 |
7 |
3 |
– |
9 |
|
15 |
+ 35 |
|
|
140 |
140 |
|
|
|
|
280 |
|
A2 |
3 |
10 |
|
12 |
|
20 |
46 |
220 |
190 |
|
30 |
|
|
|
|
|
|
A3 |
15 |
11 |
|
16 |
|
19 |
48 |
300 |
|
|
+ 10 |
|
|
120 |
170 – |
|
|
Потребности |
190 |
140 |
180 |
|
|
120 |
170 |
|
|
|
|
|
|
|
|
|
|
39