Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Исследование операций и методы оптимизации. Учебное пособие
.pdf
− каждая неизвестная встречается только в двух уравнениях системы
(
)
(
)
ограничений.
3.2 Методы решения транспортной задачи
Решение транспортной задачи включает два этапа:
− определение опорного плана;
− нахождение оптимального решения, путем последовательных операций.
3.2.1 Методы нахождения опорного плана
Для транспортной задачи существует несколько методов отыскания
начального плана (опорного решения):
− метод северо-западного угла (диагональный);
− метод минимальной стоимости (метод наименьшего элемента);
− метод Фогеля;
− метод двойного предпочтения.
Рассмотрим данные методы на примере.
Дано
;; aaaAT= = (200; 450; 290);
321
;;;; bbbbbBT= = (200; 220; 170; 210; 150);
54321
2032302519
0
0
0
4121122140
2227284115
B
2
25
21
41
0
0
0
B
3
30
12
28
0
0
0
B
4
32
21
27
0
0
0
B
5
отправления)
20
41
22
=
D
Составим транспортную таблицу
Табл. 3.2. Исходная таблица:
Потребители
B
1
Поставщики
A
1
A
2
A
3
Потребность 200 220 170 210 150
0
0
0
19
40
15
Транспортная задача является открытой, так как запас груза меньше
Запасы
(объемы
200
450
290
потребностей на
фиктивного поставщика
10
единиц. Приведем задачу к закрытому типу
A .
4
41
-
Введем

Табл. 3.3. Транспортная таблица с фиктивным поставщиком:
Потребители
Поставщики
A
1
A
2
A
3
A
4
0
0
0
0
B
1
19
40
15
0
0
0
0
0
B
2
25
21
41
0
0
0
0
0
B
3
30
12
28
0
0
0
0
0
B
4
32
B
5
20
0
21
41
0
27
22
0
0
0
0
Запасы
(объемы
отправления)
200
450
290
10
Потребность 200 220 170 210 150
Метод северо-западного угла (диагональный). Сущность способа
заключается в том, что на каждом шаге заполняется левая верхняя клетка
(северо-западная) оставшейся части таблицы, причем максимально возможным
числом: либо полностью выносится груз из
удовлетворяется потребность
каком-то шаге не исчерпаются запасы
b
. Процедура продолжается до тех пор, пока на
j
a
и не удовлетворятся все потребности
i
a
, либо полностью
i
b
. В заключении проверяют, что найденные компоненты плана
j
удовлетворяют горизонтальным и вертикальным уравнениям.
Пример построения опорного плана методом северо-западного угла
Введем некоторые обозначения:
*
A
- излишек нераспределенного груза от поставщика A
i
*
B
- недостача в поставке груза потребителю Bj
j
Помещаем в клетку (1,1) меньшее из чисел A
*
=200 и B
1
i
*
=200
1
Так как запасы поставщика A1 исчерпаны, то строка 1 в дальнейшем в расчет не
принимается
Так как спрос потребителя B1 удовлетворен, то столбец 1 в дальнейшем в расчет не
принимается
Помещаем в клетку (2,2) меньшее из чисел A
*
=450 и B
2
*
=220
2
Так как спрос потребителя B2 удовлетворен, то столбец 2 в дальнейшем в расчет не
принимается
Помещаем в клетку (2,3) меньшее из чисел A
*
=230 и B
2
*
=170
3
Так как спрос потребителя B3 удовлетворен, то столбец 3 в дальнейшем в расчет не
принимается
Помещаем в клетку (2,4) меньшее из чисел A
*
=60 и B
2
*
=210
4
Так как запасы поставщика A2 исчерпаны, то строка 2 в дальнейшем в расчет не
принимается
Помещаем в клетку (3,4) меньшее из чисел A
*
=290 и B
3
*
=150
4
Так как спрос потребителя B4 удовлетворен, то столбец 4 в дальнейшем в расчет не
принимается
Помещаем в клетку (3,5) меньшее из чисел A
*
=140 и B
3
*
=150
5
Так как запасы поставщика A3 исчерпаны, то строка 3 в дальнейшем в расчет не
принимается
Помещаем в клетку (4,5) меньшее из чисел A
*
=10 и B
4
*
5
=10
x
ij
42

Табл. 3.4. Опорный план методом северо-западного угла:
{
}
{
}
Потребители
Поставщики
A
1
A
2
A
3
A
4
200
B
1
19
40
15
0
220
B
2
25
21
41
0
170
B
3
30
12
28
0
60
150
B
4
32
B
5
20
21
41
27
22
140
0
0
10
Запасы
(объемы
отправления)
200
450
290
10
Потребность 200 220 170 210 150
Целевая функция F=18850
Метод наименьшего элемента. Просматривается вся матрица тарифов
перевозок, и из нее выбирается позиция с наименьшим значением тарифа
затем просматриваются значения наличия запасов на складе
потребителя
b
, затем в данную клетку записывается величина
j
a
и потребности у
i
ba
,min
ji
c
ij
. Из
,
запасов соответствующего склада и потребностей магазина вычитается
величина
ba
,min
. Если запас товара на складе исчерпан, то эта строка
ji
исключается из дальнейшего рассмотрения. Если потребность магазина в
товаре удовлетворена полностью, то этот столбец исключается из дальнейшего
рассмотрения. Может быть случай, когда одновременно исключаются и строка
и столбец, этот случай называется вырожденным. В дальнейшем весь процесс
повторяется до тех пор, пока не будет исчерпан весь запас товаров на складах и
не будет удовлетворена потребность всех магазинов. По полученной матрице
перевозок вычисляется целевая функция задачи Z.
Пример построения опорного плана методом наименьшего элемента
Временно исключаем из рассмотрения клетки фиктивного поставщика
Находим незанятую клетку с минимальным тарифом
Помещаем туда меньшее из чисел
A
*
2
=450 и B
3
Находим незанятую клетку с минимальным тарифом
Помещаем туда меньшее из чисел
A
*
3
=290 и B
1
Находим незанятую клетку с минимальным тарифом
Помещаем туда меньшее из чисел
A
*
1
=200 и B
5
Находим незанятую клетку с минимальным тарифом
Помещаем туда меньшее из чисел
A
*
2
=280 и B
2
Находим незанятую клетку с минимальным тарифом
Помещаем туда меньшее из чисел
A
2
*
=60 и B
*
=210
4
Находим незанятую клетку с минимальным тарифом
Помещаем туда меньшее из чисел
A
3
*
=90 и B
*
=150
4
Находим незанятую клетку с минимальным тарифом
Помещаем туда меньшее из чисел
A
1
*
=50 и B
*
4
=60
*
=170
*
=200
*
=150
*
=220
: (2,3).
: (3,1).
: (1,5).
: (2,2).
: (2,4).
: (3,4).
: (1,4).
.
43

Теперь распределим фиктивный груз между потребителями и фиктивным
поставщиком A5
Поместим в клетку (4,4) 10 единиц груза
Табл. 3.5. Опорный план методом наименьшей стоимости:
Потребители
Поставщики
A
1
A
2
A
3
A
4
200
B
1
19
40
15
0
220
B
2
25
21
41
0
170
B
3
30
12
28
0
50
60
90
10
B
4
32
B
5
20
150
21
41
27
22
0
0
Запасы
(объемы
отправления)
200
450
290
10
Потребность 200 220 170 210 150
Целевая функция F=17950
В диагональном методе не учитываются величины тарифов, в методе же
наименьшей стоимости эти величины учитываются, и часто последний метод
приводит к плану с меньшими общими затратами (что и имеет место в нашем
примере), хотя это и необязательно.
Метод Фогеля. Метод состоит в следующем. Просматриваются все строки
и столбцы матрицы тарифов, вычисляется разность между двумя наименьшими
элементами в строке и в столбце. Затем из всех этих разностей выбирается
строка или столбец с максимальной разностью. В выбранной строке или
столбце, как и в методе минимального элемента, заполняется клетка с
наименьшим значением тарифа. Затем обнулявшаяся строка или столбец
исключаются из рассмотрения и весь процесс повторяется до полного
исчерпания запаса товаров на складах.
Пример построения опорного плана методом Фогеля
Временно исключаем из рассмотрения клетки фиктивного поставщика.
Этап 1.
Определим разности между двумя наименьшими тарифами в каждой строке и
каждом столбце.
Строка 1: c
Строка 2: c
Строка 3: c
Строка 4: нет свободных клеток
Столбец 1: c
Столбец 2: c
Столбец 3: c
Столбец 4: c
Столбец 5: c
1,1
2,3
3,1
- c
- c
- c
3,1
2,2
2,3
2,4
1,5
- c
- c
- c
- c
- c
1,5
2,2
3,5
= 1
= 9
= 7
1,1
1,2
3,3
3,4
3,5
= 4
= 4
= 16
= 6
= 2
44

Если одновременно несколько строк(столбцов) имеют одинаковую разницу двух
минимальных тарифов, то выберем строку(столбец), содержащую клетку с
наименьшим тарифом с
i,j
Максимальная разница двух минимальных тарифов в строке находится в строке 2.
Максимальная разница двух минимальных тарифов в столбце находится в столбце 3.
Заполняем клетку (2,3), имеющую минимальный тариф.
Этап 2.
Определим разности между двумя наименьшими тарифами в каждой строке и
каждом столбце.
Строка 1: c
Строка 2: c
Строка 3: c
1,1
2,2
3,1
- c
- c
- c
1,5
2,4
3,5
= 1
= 0
= 7
Строка 4: нет свободных клеток
Столбец 1: c
Столбец 2: c
3,1
2,2
- c
- c
1,1
1,2
= 4
= 4
Столбец 3: нет свободных клеток
Столбец 4: c
Столбец 5: c
2,4
1,5
- c
- c
3,4
3,5
= 6
= 2
Если одновременно несколько строк(столбцов) имеют одинаковую разницу двух
минимальных тарифов, то выберем строку(столбец), содержащую клетку с
наименьшим тарифом с
i,j
Максимальная разница двух минимальных тарифов в строке находится в строке 3.
Максимальная разница двух минимальных тарифов в столбце находится в столбце 4.
Заполняем клетку (3,1), имеющую минимальный тариф.
Этап 3.
Определим разности между двумя наименьшими тарифами в каждой строке и
каждом столбце.
Строка 1: c
Строка 2: c
Строка 3: c
1,5
2,2
3,5
- c
- c
- c
1,2
2,4
3,4
= 5
= 0
= 5
Строка 4: нет свободных клеток
Столбец 1: нет свободных клеток
Столбец 2: c
2,2
- c
1,2
= 4
Столбец 3: нет свободных клеток
Столбец 4: c
Столбец 5: c
2,4
1,5
- c
- c
3,4
3,5
= 6
= 2
Если одновременно несколько строк(столбцов) имют одинаковую разницу двух
минимальных тарифов, то выберем строку(столбец), содержащую клетку с
наименьшим тарифом с
i,j
Максимальная разница двух минимальных тарифов в строке находится в строке 1.
Максимальная разница двух минимальных тарифов в столбце находится в столбце 4.
Заполняем клетку (2,4), имеющую минимальный тариф.
Этап 4.
Определим разности между двумя наименьшими тарифами в каждой строке и
каждом столбце.
Строка 1: c
Строка 2: c
Строка 3: c
1,5
2,2
3,5
- c
- c
- c
1,2
2,5
3,2
= 5
= 20
= 19
Строка 4: нет свободных клеток
Столбец 1: нет свободных клеток
Столбец 2: c
2,2
- c
1,2
= 4
Столбец 3: нет свободных клеток
45

Столбец 4: нет свободных клеток
Столбец 5: c
1,5
- c
3,5
= 2
Если одновременно несколько строк(столбцов) имют одинаковую разницу двух
минимальных тарифов, то выберем строку(столбец), содержащую клетку с
наименьшим тарифом с
i,j
Максимальная разница двух минимальных тарифов в строке находится в строке 2.
Максимальная разница двух минимальных тарифов в столбце находится в столбце 2.
Заполняем клетку (2,2), имеющую минимальный тариф.
Этап 5.
Определим разности между двумя наименьшими тарифами в каждой строке и
каждом столбце.
Строка 1: c
1,5
- c
1,2
= 5
Строка 2: нет свободных клеток
Строка 3: c
3,5
- c
3,2
= 19
Строка 4: нет свободных клеток
Столбец 1: нет свободных клеток
Столбец 2: c
1,2
- c
3,2
= 16
Столбец 3: нет свободных клеток
Столбец 4: нет свободных клеток
Столбец 5: c
1,5
- c
3,5
= 2
Если одновременно несколько строк(столбцов) имют одинаковую разницу двух
минимальных тарифов, то выберем строку(столбец), содержащую клетку с
наименьшим тарифом с
i,j
Максимальная разница двух минимальных тарифов в строке находится в строке 3.
Максимальная разница двух минимальных тарифов в столбце находится в столбце 2.
Заполняем клетку (3,5), имеющую минимальный тариф.
Этап 6.
Определим разности между двумя наименьшими тарифами в каждой строке и
каждом столбце.
Строка 1: c
1,5
- c
1,2
= 5
Строка 2: нет свободных клеток
Строка 3: нет свободных клеток
Строка 4: нет свободных клеток
Столбец 1: нет свободных клеток
Столбец 2: c
1,2
- c
1,2
= 0
Столбец 3: нет свободных клеток
Столбец 4: нет свободных клеток
Столбец 5: c
1,5
- c
1,5
= 0
Если одновременно несколько строк(столбцов) имют одинаковую разницу двух
минимальных тарифов, то выберем строку(столбец), содержащую клетку с
наименьшим тарифом с
i,j
Максимальная разница двух минимальных тарифов в строке находится в строке 1.
Максимальная разница двух минимальных тарифов в столбце находится в столбце 5.
Заполняем клетку (1,5), имеющую минимальный тариф.
Этап 7.
Определим разности между двумя наименьшими тарифами в каждой строке и
каждом столбце.
Строка 1: c
1,2
- c
1,2
= 0
Строка 2: нет свободных клеток
Строка 3: нет свободных клеток
Строка 4: нет свободных клеток
Столбец 1: нет свободных клеток
46

Столбец 2: c
1,2
- c
1,2
= 0
Столбец 3: нет свободных клеток
Столбец 4: нет свободных клеток
Столбец 5: нет свободных клеток
Если одновременно несколько строк(столбцов) имют одинаковую разницу двух
минимальных тарифов, то выберем строку(столбец), содержащую клетку с
наименьшим тарифом с
i,j
Максимальная разница двух минимальных тарифов в строке находится в строке 1.
Максимальная разница двух минимальных тарифов в столбце находится в столбце 2.
Заполняем клетку (1,2), имеющую минимальный тариф.
Этап 8.
Определим разности между двумя наименьшими тарифами в каждой строке и
каждом столбце.
Строка 1: нет свободных клеток
Строка 2: нет свободных клеток
Строка 3: нет свободных клеток
Строка 4: нет свободных клеток
Столбец 1: нет свободных клеток
Столбец 2: нет свободных клеток
Столбец 3: нет свободных клеток
Столбец 4: нет свободных клеток
Столбец 5: нет свободных клеток
Теперь распределим фиктивный груз между потребителями и фиктивным
поставщиком A
4
Поместим в клетку (4,2) 10 единиц груза
Табл. 3.6. Опорный план методом Фогеля:
Потребители
B
Поставщики
A
1
A
2
A
3
A
4
200
1
19
40
15
0
140
70
10
B
2
B
3
B
4
B
5
отправления)
25
21
170
41
0
30
12
28
32
60
21
210
27
0
90
0
20
41
22
0
Потребность 200 220 170 210 150
Целевая функция F=17600
Метод двойного предпочтения
Алгоритм метода двойного предпочтения:
1) В каждом столбце отмечают галочкой клетку с наименьшей стоимостью
Запасы
(объемы
200
450
290
10
и в каждой строке отмечают галочкой клетку с наименьшей
стоимостью;
47

2) В клетки с двумя галочками записывают максимально возможные
объемы перевозок, каждый раз, исключая соответствующий столбец
или строку;
3) Распределяют перевозки по клеткам с одной галочкой;
4) В оставшейся части таблицы перевозки распределяют в клетки с
наименьшей стоимостью.
5) Когда план построен, рассчитываются транспортные расходы.
Этот метод требует интенсивных операции обмена с памятью, поэтому
более громоздок по сравнению с остальными и требует больших
вычислительных ресурсов.
Пример построения опорного плана методом двойного предпочтения
Находим опорный план методом двойного предпочтения:
Временно исключаем из рассмотрения клетки фиктивного поставщика.
Находим клетки с минимальным тарифом в каждой строке и столбце:
Строка 1: клетка (1,1)*, c1,1*=19
Строка 2: клетка (2,3)*, c2,3*=12
Строка 3: клетка (3,1)*, c3,1*=15
Строка 4: нет свободных клеток
Столбец 1: клетка (3,1)*, c3,1*=15
Столбец 2: клетка (2,2)*, c2,2*=21
Столбец 3: клетка (2,3)*, c2,3*=12
Столбец 4: клетка (2,4)*, c2,4*=21
Столбец 5: клетка (1,5)*, c1,5*=20
Строка 2 и столбец 3 содержат одну и ту же клетку с наименьшим тарифом: (2,3)**.
Помещаем в нее меньшее из чисел 450 и 170.
Строка 3 и столбец 1 содержат одну и ту же клетку с наименьшим тарифом: (3,1)**.
Помещаем в нее меньшее из чисел 290 и 200.
Теперь заполним клетки, помеченные символом «*», начиная с клеток, имеющих
наименьший тариф.
Поместим в клетку (1,1)* меньшее из чисел 200 и 0.
Поместим в клетку (1,5)* меньшее из чисел 200 и 150.
Поместим в клетку (2,2)* меньшее из чисел 280 и 220.
Поместим в клетку (2,4)* меньшее из чисел 60 и 210.
Теперь заполним все оставшиеся клетки.
Помещаем в клетку (3,4) меньшее из чисел 90 и 150.
Помещаем в клетку (1,4) меньшее из чисел 50 и 60.
Теперь распределим фиктивный груз между потребителями и фиктивным
поставщиком A5. Поместим в клетку (4,4) 10 единиц груза
48

Табл. 3.7. Опорный план методом двойного предпочтения:
Потребители
B
1
Поставщики
A
1
A
2
A
3
A
4
Потребность 200 220 170 210 150
Целевая функция F=17950
200
19
40
15
0
220
B
2
25
21
41
0
170
B
3
30
12
28
0
50
60
90
10
B
4
32
21
27
0
150
B
5
отправления)
20
41
22
0
3.2.2 Методы нахождения оптимального решения
В данном разделе рассмотрим два метода нахождения оптимального
решения транспортной задачи:
1) распределительный метод;
2) метод потенциалов.
Распределительный метод
Циклом называется такая последовательность клеток таблицы
Запасы
(объемы
200
450
290
10
транспортной задачи, в которой две и только две соседние клетки расположены
в одной строке или столбце, причем первая и последняя клетки также находятся
в одной строке или столбце.
Цикл изображают в таблице транспортной задачи в виде замкнутой
ломаной линии. В любой клетке цикла происходит поворот звена ломаной
линии на 900.
Существует несколько вариантов цикла:
Рис. 3.1. Виды циклов
Нетрудно убедиться, что каждый цикл имеет чётное число вершин и
значит, чётное число звеньев (стрелок). Условимся отмечать знаком + те
вершины цикла, в которых перевозки необходимо увеличить, а знаком –, те
вершины, в которых перевозки необходимо уменьшить. Цикл с отмеченными
вершинами будем называть означенным. Перенести какое-то количество
единиц груза по означенному циклу, это значит увеличить перевозки, стоящие
49

в положительных вершинах цикла, на это количество единиц, а перевозки,
стоящие в отрицательных вершинах уменьшить на то же количество. Очевидно,
при переносе любого числа единиц по циклу равновесие между запасами и
заявками не меняется: по прежнему сумма перевозок в каждой строке равна
запасам этой строки, а сумма перевозок в каждом столбце - заявке этого
столбца. Таким образом, при любом циклическом переносе, оставляющем
перевозки неотрицательными допустимый план остаётся допустимым.
Стоимость же плана при этом может меняться: увеличиваться или уменьшатся.
Назовём ценой цикла увеличение стоимости перевозок при перемещении
одной единицы груза по означенному циклу.
Очевидно, цена цикла равна алгебраической сумме стоимостей, стоящих в
вершинах цикла, причём стоящие в положительных вершинах берутся со
знаком +, а в отрицательных со знаком –. Обозначим цену цикла через γ. При
перемещении одной единицы груза по циклу стоимость перевозок
увеличивается на величину γ. При перемещении по нему k единиц груза
стоимость перевозок увеличиться на kγ. Очевидно, для улучшения плана имеет
смысл перемещать перевозки только по тем циклам, цена которых
отрицательна. Каждый раз, когда нам удаётся совершить такое перемещение,
стоимость плана уменьшается на соответствующую величину kγ. Так как
перевозки не могут быть отрицательными, мы будем пользоваться только
такими циклами, отрицательные вершины которых лежат в базисных клетках
таблицы, где стоят положительные перевозки. Если циклов с отрицательной
ценой в таблице больше не осталось, это означает, что дальнейшее улучшение
плана невозможно, то есть оптимальный план достигнут.
Метод последовательного улучшения плана перевозок и состоит в том, что
в таблице отыскиваются циклы с отрицательной ценой, по ним перемещаются
перевозки, и план улучшается до тех пор, пока циклов с отрицательной ценой
уже не останется. При улучшении плана циклическими переносами, как
правило, пользуются приёмом, заимствованным из симплекс-метода: при
каждом шаге (цикле) заменяют одну свободную переменную на базисную, то
есть заполняют одну свободную клетку и взамен того освобождают одну из
базисных клеток. При этом общее число базисных клеток остаётся неизменным
и равным m + n - 1 . Этот метод удобен тем, что для него легче находить
подходящие циклы.
Можно доказать, что для любой свободной клетке транспортной таблице
всегда существует цикл и притом единственный, одна из вершин которого
лежит в этой свободной клетке, а все остальные в базисных клетках. Если цена
такого цикла, с плюсом в свободной клетке, отрицательна, то план можно
улучшить перемещением перевозок по данному циклу. Количество единиц
груза k, которое можно переместить, определяется минимальным значением
50
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
