- •1. Основные понятия исследования операций
- •2. Геометрическая интерпретация задач оптимизации
- •3. Задача линейного программирования. Симплекс – метод
- •Двойственные задачи
- •5. Целочисленное программирование
- •6. Транспортная задача
- •7. Транспортная задача на сети
- •8. Динамическое программирование
- •9. Балансовые модели. Модель Леонтьева.
- •10. Элементы теории матричных игр
6. Транспортная задача
Транспортными задачами называются задачи определения оптимального плана перевозок груза из данных пунктов отправления в заданные пункты потребления.
Простейшая формулировка транспортной задачи, получившая название задачи по критерию стоимости, следующая:
В p пунктах отправления находится соответственно a1,…,ap единиц однородного груза (ресурсы), который должен быть доставлен g потребителям в количествах b1,…,bg единиц (потребности). Заданы стоимости cik перевозок из i – го пункта отправления к k – му пункту потребления (коэффициенты затрат). Требуется спланировать перевозки, то есть указать сколько единиц груза должно быть отправлено из любого i-го пункта отправления в любой k- ый пункт потребления так, чтобы максимально удовлетворить потребности, и чтобы суммарные затраты на перевозки были минимальными.
Если в задаче суммарные ресурсы равны суммарным потребностям, то есть , то говорят о закрытой модели транспортной задачи, если равенство нарушено, то подобная модель называется открытой.
Обозначим через xik количество единиц продукта, запланированное к перевозке из
i–го пункта в k–ый. Тогда условие задачи можно представить в виде распределительной таблицы.
Таблица 6.1
|
b1 |
b2 |
… |
bk |
… |
bg |
a1 |
c11 x11 |
c12 x11 |
… |
c1k x1k |
… |
c1g x1g |
a2 |
c21 x21 |
c22 x22 |
… |
c2k x2k |
… |
c2g x2g |
… |
… |
… |
… |
… |
… |
… |
ai |
ci1 xi1 |
ci2 xi2 |
… |
cik xik |
… |
cig xig |
… |
… |
… |
… |
… |
… |
… |
ap |
cp1 xp1 |
cp2 xp2 |
… |
cpk xpk |
… |
cpg xpg |
Переменные хik должны удовлетворять ограничительным условиям
Суммарные затраты на перевозки равны
Требуется найти n=pg переменных хik, удовлетворяющих указанным условиям и минимизирующих функцию z.
Решение такой задачи разбиваем на два этапа:
Определение исходного опорного (базисного) решения;
Построение последовательных итераций, то есть приближение к оптимальному решению.
Для каждого их этих этапов существует несколько методов.
Рассмотрим первый этап. Для построения опорного решения чаще всего используют один из следующих методов: «северо – западного» угла и метод минимальных затрат.
1. Метод «северо – западного угла».
Заполним таблицу 6.1, начиная с левого верхнего (северо – западного) угла, двигаясь затем по строке вправо и по столбцу вниз. Запишем в клетку (1.1) меньшее из числа а1 и b1, то есть x11 = min {a1, b1}. Если а1>b1, то x11=b1 и первый столбец закрыт, то есть потребности первого потребителя удовлетворены полностью. Двигаясь дальше по первой строке, записываем в соседнюю клетку (1.2) меньшее из чисел a1 - b1 и b2, то есть x12 = min {a1-b1, b2}. Если же а1 < b1, аналогично закрывается первая строка (ресурсы первого отправителя исчерпаны), и далее заполняется соседняя клетка (2.1), куда заносится x21 = min {a2, b1-а2}. Этот процесс продолжается до тех пор, пока на каждом этапе не исчерпываются ресурсы аp и потребности bg. Может оказаться, что на каком–то промежуточном, а не только последнем этапе, построение опорного плана при внесении очередной величины хik закрываются одновременно i–ая строка и k–ый столбец. Это происходит, когда очередной остаток в k–ом столбце будет равен аi, или остаток в i–ой строке равен bk. Тогда занесем в следующую по строке или столбцу клетку (в ту из них, которой соответствую меньшие затраты) величину хik+1 = 0 или (xi+1k = 0). Такие нули называются, в отличие от пустых клеток, базисными. Они необходимы для предотвращения вырождения опорного плана.
Найдем опорный план методом «северо- западного» угла для транспортной задачи, приведенной в таблице 6.2.
Таблица 6.2.
a i bk |
40 |
100 |
60 |
80 |
60 |
4 |
3 |
7 |
8 |
140 |
9 |
5 |
4 |
2 |
80 |
6 |
3 |
8 |
4 |
Заполним таблицу, начиная с клетки (1.1). х11 = min {60 ; 40}= 40. Первый столбец закрывается (потребности удовлетворены полностью) и во всех его остальных клетках ставится прочерк. Запасы первого поставщика не израсходованы на 60-40=20 единиц. Сравниваем с потребностями второго потребителя b2 = 100. Тогда х12= min {20 ; 100}= 20. Так как запасы первого поставщика исчерпаны, то в двух последних клетках первой строки ставим прочерки. Далее рассмотрим клетку (2,2).
х22= min {140 ; 80}, где 140 – запасы второго поставщика, а 80 – оставшиеся потребности второго потребителя. Таким образом, х22= 80, а в оставшейся клетки второго столбца ставим прочерк. Рассмотрим клетку (2,3). х23= min {60 ; 60}= 60. При этом одновременно закрываются вторая строчка и третий столбец, что означает полное удовлетворение потребностей третьего потребителя и исчерпание ресурсов второго поставщика. Поэтому, чтобы избежать вырождения, в соседней к (2,3) пустой клетке с наименьшей стоимостью перевозок (2,4) ставим ноль, а клетке (3,3) ставим прочерк. Заполняем оставшуюся клетку (3,4). х34= min {80 ; 80}= 80. Тем самым получено опорное решение. Таблица 6.3
a i bk |
40 |
100 |
60 |
80 |
60 |
4 40 |
3 20 |
7 |
8 |
140 |
9
|
5 80 |
4 60 |
2 0 |
80 |
6
|
3
|
8 |
4 80 |
Найдем общую стоимость перевозки как сумму произведений объемов перевозок хik на соответствующие стоимости
z= 40·4 + 20·3 + 80·5 + 60·4 + 80·4 = 1180
2. Метод минимальных затрат.
В правиле «северо- западного» угла не учитываются величины затрат сik, а, значит, опорное решение может быть далеким от оптимального. Поэтому в дальнейших расчетах может потребоваться много шагов (итераций) для достижения оптимального решения. Число итераций, как правило, можно сократить, если исходное решение строить по усовершенствованному методу минимальных затрат. Сущность его состоит в том, что на каждом шаге заполняется клетка с наименьшей величиной сik. Начинаем заполнение таблицы с клетки, которой соответствует наименьший элемент сik из всей таблицы (в таблице 6.2 начинаем с клетки (2,4), где сik =2). Затем остаток по столбцу или строке помещаем в клетку того же столбца или строки, которой соответствует следующее по величине значение сik и так далее. Таким образом, последовательность заполняемых клеток определяется по величинам сik, а помещаемые в этих клетках величины хik определяются как и в правиле «северо- западного» угла. В результате для таблице 6.2 получаем другое опорное решение.
Таблица 6.4
a i bk |
40 |
100 |
60 |
80 |
60 |
4 40(6) |
3 20(5) |
7 |
8 |
140 |
9
|
5 0(3) |
4 60(2) |
2 80(1) |
80 |
6
|
3 80(4) |
8 |
4
|
Индексы в скобках в таблице 6.4. показывают порядок заполнения. Начинаем с клетки (2,4) с наименьшей среди стоимостей сik (с24 = 2), поэтому
х 24= min {140 ; 80}= 80. Так как потребности четвертого потребителя удовлетворены, прочеркиваем остальные клетки четвертого столбца. У второго поставщика осталось 60 единиц товара. Находим минимальное значение сik для оставшихся клеток второй строки. Это с23= 4. Поэтому х23= min {60 ; 60}= 60. При этом одновременно исчерпываются ресурсы второго поставщика и удовлетворяют потребности третьего потребителя. Чтобы избежать вырождения, ставим базисный ноль в клетке (2,2) с наименьшим тарифом с22 =5. В остальных клетках второй строки и третьего столбца ставим прочерки. Затем рассматриваем второй столбец. Здесь у оставшихся клеток (1,2) и (3,2) тарифы равны. Заполним клетку (3,2) с максимальным хi из этих двух; х32= 80. Оставшиеся 20 единиц помещаем в клетку (1,2), то есть х12= 20. Ресурсы третьего поставщика исчерпаны, поэтому в пустой клетке третьей строки ставим прочерк. Наконец заполняем оставшуюся клетку (1,1), х11= 40.
Общая стоимость по такому плану равна:
z = 40·4 + 20·3 + 80·3 + 60·4 + 80·2 = 860
Для выполнения второго этапа решения транспортной задачи используют распределительный метод и метод потенциалов.
Введем понятие цикла. Циклом называется набор клеток, в котором две и только две соседние расположены в одном столбце или одной строке, причем последняя клетка находится в одном столбце или одной строке с первой.
Рассмотрим пример:
Для таблицы 6.3 построим цикл, начинающийся в клетке (3.1).
Решение имеет вид:
Таблица 6.5
a i bk |
40 |
100 |
60 |
80 |
60 |
4 [-]40 |
3 [+]20 |
7
|
8
|
140 |
9
|
5 [-]80 |
4 60 |
2 [+]0 |
80 |
6 [+] |
3
|
8
|
4 [-]80 |
Здесь все пустые клетки обозначены точками. Начинаем с клетки (3.1), в которой ставим «+», как и в дальнейшем в нечетных клетках цикла. Во второй клетке цикла (1.1) ставим « - », как и во всех четных клетках цикла. За исключением первой в цикл входят только занятые клетки, причем только две из строки и столбца, так что при его обходе можно вернуться в исходную клетку. Можно доказать, что такой цикл единственный, причем только из занятых клеток нельзя образовать цикла.
Распределительный метод описывается следующим алгоритмом:
Располагаем исходные данные в распределительной таблице.
Строим опорное решение. При этом должны оказаться занятыми r = p+g-1 клеток.
Производим оценку первой свободной клетки путем построения для нее цикла и вычисления по этому циклу величины
,
где в первую сумму входят тарифы клеток цикла со знаком «+», а во вторую со знаком « - ».
Если Δst < 0, то переходим к пункту 4.
Если Δst ≥ 0, то оцениваем следующую свободную клетку до тех пор, пока обнаружим клетку с отрицательной оценкой Δst. Если все Δst неотрицательны, то решение соответствующее таблице является оптимальным.
Находим λ= min {хij}, где хij – значения величины перевозок в клетках со знаком
«-» затем прибавляем λ ко всем клеткам цикла со знаком «+» и отнимаем из всех клеток со знаком «-». После этого возвращаемся к пункту 3.
Оценки свободных клеток связаны с определенной таблицей. На каждом новом этапе после 4 пункта оценки одних и тех же клеток будут изменяться, поэтому на каждом этапе необходимо пересчитывать оценки свободных клеток Δst.
При выполнении пункта 3 целесообразно выбирать для оценки сначала клетки с минимальными тарифами сik.
Рассмотрим приведенный алгоритм для таблицы 6.3.
Таблица 6.6
a i bk |
40 |
100 |
60 |
80 |
60 |
4 40 |
3 20 |
7
|
8
|
140 |
9
|
5 [-]80 |
4 60 |
2 [+]0 |
80 |
6
|
3 [+] |
8
|
4 [-]80 |
В таблице 6.6 построен цикл для свободной клетки (3.2), имеющий наименьший тариф с32=3.
с32==(3+2)-(5+4)=-4<0
λ=min{80;80}=80
Выполнив пункт 4, имеем таблицу 6.7. Оценим сначала клетку (3.4).
Δ34=9-5=4>0
Таблица 6.7
a i bk |
40 |
100 |
60 |
80 |
60 |
4 40 |
3 20 |
7
|
8
|
140 |
9
|
5 [+]0 |
4 60 |
2 [-]80 |
80 |
6
|
3 [-]80 |
8
|
4 [+] |
Затем остальные свободные клетки (3,3), (3,1), (2,1), (1,3), (1,4).
Δ34=6>0; Δ31=2>0; Δ13=5>0; Δ14=8>0; Δ21=3>0.
Таким образом, решение в таблице 6.7 является оптимальным. Заметим, что в данном примере метод минимальных затрат сразу дал оптимальное решение (см.таблицу 6.4), а для правила «северо – западного» угла потребовалась одна итерация.
Распределительный метод обладает существенным недостатком, заключающимся в том, что для выполнения одной итерации требуется строить большое количество оценочных циклов. Этот недостаток устранен в методе потенциалов. Рассмотрим метод потенциалов на примере таблицы 6.3
Каждому поставщику ai сопоставил величину Ui, называемую потенциалом. Каждому потребителю bj сопоставим потенциал Vj.
Составим уравнение вида Vj-Ui-cij=0 для всех занятых клеток. Для удобства перепишем эту таблицу в виде:
Таблица 6.8
a i bk |
V1 |
V2 |
V3 |
V4 |
U1 |
4 40 |
3 20 |
7
|
8
|
U2 |
9
|
5 80 |
4 60 |
2 0 |
U3 |
6
|
3
|
8
|
4 80 |
Получаем:V1-U1=4; V2-U1=3; V2-U2=5; V3-U2=4; V4-U2=2; V4-U3=4.
Полагая одну из неизвестных (наиболее часто встречающуюся) равной нулю (здесь U2=0), найдем все остальные.
V1=6; V2=5; V3=4; V4=2; U1=2; U3= -2.
Проверим выполнение условий оптимальности для занятых клеток. Для этого должно выполняться соотношение δij = Vj - Ui-Cij 0.
δ13=V3-U1-C13=4-2-7=-5<0
δ14=V4 - U1-C14=2 - 2 - 8 = - 8 < 0
δ21=V1 - U2 - C21=6 – 0 - 9= - 3 < 0
δ31=V1 - U2 - C31 = 6 + 2 - 6 = 2 > 0
δ32=V2 - U3 - C32 = 5 + 2 – 3 = 4 > 0
δ33=V3 - U3 - C33 = 4 + 2 - 8 = -2 < 0
Построим цикл для клетки с наибольшем нарушением δij. Это клетка (3,2). Как в распределительном методе пересчитаем xij для клеток цикла. Полученный результат запишем в таблице 6.9.
Таблица 6.9
ai bk |
V1 |
V2 |
V3 |
V4 |
U1 |
4 40 |
3 20 |
7
|
8 |
U2 |
9
|
5 0 |
4 60 |
2 80 |
U3 |
6
|
3 80 |
8 |
4
|
Опять проверяем на оптимальность. Имеем систему из 6 уравнений с 7 неизвестными.
V1 - U1 = 4; V2 - U1 = 3; V2 - U2 = 5; V2 - U3 = 3; V3 - U2 = 4; V4 - U2 = 2.
Система имеет множество решений. Полагая V2 =5, находим U1=2; U2=0; U3=2;
V3 = 4; V4 = 2; V1 = 6.
В таком случае δ13 = - 5; δ14 = - 8; δ21 = - 3; δ31 = -2; δ33 = - 6; δ34 = - 4.
Все δij, соответствующие пустым клеткам, отрицательны. Значит, решение в таблице 6.9 является оптимальным (оно совпадает с таблицей 6.4 и таблицей 6.7).