
Управленческие решения / mat_Gelrud / ТЕМА04_транспортная _зад
.docТема 4
Задачи линейного программирования транспортного типа
Важным частным случаем задачи линейного программирования является так называемая транспортная задача.
Классическая транспортная задача – задача о наиболее экономном плане перевозок однородного продукта (или взаимозаменяемых продуктов) из пунктов производства в пункты потребления.
Экономико-математическая модель транспортной задачи в общем виде может быть сформулирована следующим образом:
Имеется m пунктов производства однородного продукта и n пунктов потребления. Для каждого пункта производства i задан объем производства Аi, для каждого пункта потребления j известна потребность (спрос) Вj (в тех же единицах измерения). Известны издержки сij , связанные с перевозкой единицы продукта из пункта i в пункт j.
Требуется составить план перевозок, обеспечивающий наиболее экономным путем (т.е. при наименьших транспортных издержках) удовлетворение всех пунктов потребления за счет реализации всего продукта, произведенного пунктами производства. При этом предполагается, что суммарный спрос (В = jВj ) равен суммарному объему производства (А =iАi ). Такие задачи называются закрытыми транспортными задачами.
Что такое план перевозок? План перевозок определяет:
Сколько единиц продукта перевозится от каждого пункта производства к каждому пункту потребления, т.е. план представляется набором чисел хij (всего таких чисел mn), где хij показывает, сколько единиц продукта должно быть перевезено от i-го производителя j-му потребителю. Отметим также, что в термин «транспортные издержки» (сij) не всегда вкладывается строгий экономический смысл. Это могут быть расстояния, тарифы, время, расход топлива и т.п. В каждой конкретной задаче оговаривается конкретный смысл сij.
Система ограничений примет вид
n
хij = Аi (i=1,2,…,m), (4.1)
J=1
m
хij = Вj (j=1,2,…n). (4.2)
i=1
Система (4.1) включает в себя уравнения баланса по поставщикам, а система (4.2) – по потребителям. Суммарные транспортные издержки выражаются в виде следующей линейной функции, которую необходимо минимизировать
n m
F = сij хij min (4.3)
J=1 i=1
Математическая модель транспортной задачи в общей постановке будет следующей: на множестве неотрицательных решений системы ограничений (4.1), (4.2) (мы будем называть такие решения допустимые) найти такое решение Х=( х11, х12,…,хij ,…,хmn ), при котором значение целевой функции (4.3) минимально.
Условия транспортной задачи весьма удобно представлять в табличной форме
Таблица 4.1
Пункт произ- водст- ва
i |
Объем произ- водст- ва
Аi
|
Пункты потребления j и их спрос Вj |
|||
1 |
2 |
… |
n |
||
В1 |
В2 |
… |
Вn |
||
1 |
А1
|
с11
х11 |
с12
х12 |
… |
с1n
х1n |
2
|
А2
|
с21
х21 |
с22
х22 |
… |
с2n
х2n |
… |
…
|
… |
… |
… |
… |
m |
Аm |
сm1
хm1 |
сm2
хm2 |
… |
сmn
хmn |
В левом верхнем углу произвольной клетки (i,j) (i- номер строки, j- номер столбца) стоит показатель транспортных затрат сij , в правом нижнем – значения переменных хij(план перевозок). Любое решение Х=(х11, х12,…, хij ,…, хmn) системы ограничений (4.1) -(4.2) назовем распределением поставок.
Рассмотрим простейший числовой пример (таб. 4.2).
Здесь параметры задачи принимают следующие значения:
с11 =2, с12 =1, с13 =5, с21 =3, с22 =4, с23 =3, с31 =4, с32 =6, с33=6;
А1 =50, А2 =60, А3 =70, В1 =40, В2 =85, В3=55.
Таблица 4.2
|
40 |
85 |
55 |
50 |
2 х11 |
1 х12 |
5 х13 |
60 |
3 х21 |
4 х22 |
3 х23 |
70 |
4 х31 |
6 х32 |
6 х33 |
Составим систему уравнений для этого примера:
Чтобы объем производства каждого поставщика был реализован, необходимо выполнение баланса по каждой строке таблицы, т.е.
х11 + х12 + х13 = 50
х21 + х22 + х23 = 60 (4.4)
х31 + х32 + х33 = 70
Аналогично, чтобы спрос каждого из потребителей был удовлетворен, подобные уравнения баланса выписываем для каждого столбца таблицы:
х11 + х21 + х31 = 40
х12 + х22 + х32 = 85 (4.5)
х13 + х23 + х33 = 55
Суммарные транспортные затраты F(целевая функция) выражаются через издержки и поставки следующим образом:
F = 2х11 + х12 +5х13 +3х21 +4х22 +3х23 +4х31 +6х32 +6х33
В этом примере шесть уравнений и девять переменных, система (4.4)-(4.5) имеет бесчисленное множество решений (допустимых поставок). Вот одно из них:
Таблица 4.3
|
40 |
85 |
55 |
50 |
2 40 |
1 10 |
5 0 |
60 |
3 0 |
4 60 |
3 0 |
70 |
4 0 |
6 15 |
6 55 |
Суммарные транспортные затраты для данного распределения:
F = 2*40 +1*10 +5*0 +3*0 +4*60 +3*0 +4*0 +6*15 +6*55=750
Всего в этом примере около 3600 только целочисленных решений, а если допустить дробность – то бесконечное множество. Все допустимые решения удовлетворяют системе ограничений, но отличаются друг от друга величиной суммарных транспортных издержек.
Вот еще одна допустимая поставка:
Таблица 4.4
|
40 |
85 |
55 |
50 |
2
|
1 50 |
5
|
60 |
3 40 |
4
|
3 20 |
70 |
4
|
6 35 |
6 35 |
Суммарные транспортные затраты для данного распределения:
F = 1*50 +3*40 +3*20 +6*35 +6*35=650
Наша задача научиться находить оптимальное решение, т.е. такое, для которого целевая функция имеет наименьшее значение.
Первым шагом при решении транспортной задачи является получение допустимого решения, которое называют исходный опорный план. Исходный план можно легко получить, используя алгоритм, разработанный Данцигом и названный Чарнсом и Купером “правилом северо-западного угла”. Это наиболее простой метод, хотя исходный план, полученный этим способом ,как правило, весьма далек от оптимального.
“Правило северо-западного угла” формулируется следующим образом:
-
Начать с северо-западного угла исходной таблицы – клетки (1,1), куда дать максимально возможную поставку:
х11 =minА1,В1.
-
Следующую максимально возможную поставку дать либо в клетку (1,2), либо в клетку (2,1), в зависимости от результата первого шага.
-
Продолжить этот процесс шаг за шагом от северо-западного до юго-восточного угла таблицы.
Таким образом, в нашем примере (см. табл. 4.3) процесс определения исходного плана происходит следующим образом:
В клетку (1,1) даем максимально возможную поставку:
х11 =min50,40=40. После этого спрос 1-го потребителя будет полностью удовлетворен, в результате чего первый столбец таблицы выпадает из последующего рассмотрения. Переходим к клетке (1,2) и даем в нее максимально возможное значение. Учитывая, что 1-й поставщик уже отдал 40 единиц своей продукции и у него осталось только 50 – 40 = 10 единиц, получим х12=min10,85=10. После этого объемы 1-го производителя полностью реализованы и из рассмотрения выпадает первая строка таблицы. В оставшейся таблице снова находим «северо-западный угол» и т.д. В результате получаем исходное распределение поставок (см. табл. 4.3).
Число заполненных клеток в полученном распределении оказалось равным m+n–1 = 3+3–1 = 5. Это не случайно. Действительно, на каждом шаге (кроме последнего) из рассмотрения выпадали либо строка, либо столбец, а на последнем шаге и столбец и строка.
Поэтому число заполненных клеток на единицу меньше, чем сумма числа строк и столбцов, т.е. равно m+n-1. Справедлива теорема (которую мы примем без доказательств) утверждающая, что в оптимальном решении число заполненных клеток (т.е. основных, так называемых базисных переменных) должно быть равно m+n–1.
Существенный недостаток метода “северо-западного угла” состоит в том, что он построен без учета значений транспортных издержек. Можно модифицировать данный метод, избавившись от этого недостатка: на каждом шаге максимально возможную поставку следует давать не в “северо-западную” клетку оставшейся таблицы, а в клетку с наименьшим значением транспортных издержек. При этом распределение поставок оказывается, вообще говоря, ближе к оптимуму, чем распределение, полученное методом “северо-западного угла”. Такой метод получения исходного плана называется методом наименьших затрат. Исходный план, полученный данным методом, приведен в табл. 4.4. Слушателям предоставляется право самостоятельно убедиться в справедливости последнего утверждения.
Рассмотрим сейчас так называемый распределительный метод решения транспортной задачи. Этот метод довольно сложен и неудобен для решения практических задач, однако мы его подробно рассмотрим, т.к. этот метод позволяет понять основные идеи, лежащие в основе решения задач линейного программирования и, в частности, транспортных задач.
Вернемся к нашему примеру и возьмем базисный план, построенный методом северо-западного угла (табл. 4.3). Соответствующие данному плану суммарные транспортные затраты
(значение целевой функции) F =750. Чтобы определить, является ли полученный план оптимальным, необходимо «оценить» различные варианты, связанные с неиспользованием клеток, в которых нет поставок (выделенных чисел). Таких клеток в нашем примере четыре. Посмотрим, что произойдет с таблицей, если дать единичную поставку в одну из пустых клеток, например в (2,1).
Чтобы не нарушался баланс по строкам и столбцам необходимо уменьшить на единицу поставку в клетки (2,2) и (1,1). Уменьшив поставку в (1,1) мы должны увеличить на единицу поставку в клетку (1,2). Заметим, что последнее изменение восстановило баланс по столбцу 2, нарушенный уменьшением поставки в клетку (2,2). Мы получили новый допустимый план поставок (см. табл. 4.5).
Таблица 4.5
|
40 |
85 |
55 |
50 |
2 39 |
1 11 |
5
|
60 |
3 1 |
4 59 |
3
|
70 |
4
|
6 15 |
6 55 |
Заметим, что число ненулевых поставок (выделенных чисел) здесь превышает m+n–1, т.е. этот допустимый план не является базисным.
Перераспределяя поставки мы прошли по четырем клеткам. Путь нашего движения образовал так называемый цикл (цепь, контур). Представим этот цикл на рис. 4.1. На нем изображены клетки, в которых будем менять поставки (слева от каждой клетки написан в скобках ее номер).
(1,1) 2 - (1,2) 1 +
40 10
(2,1) 3 + (2,2) 4 -
60
Рис. 4.1
При этом знаком “+” помечены те клетки, поставка в которых увеличится (положительные вершины). Знаком “-“ отмечены клетки, в которых поставка уменьшится (отрицательные вершины).
Для циклов в транспортной задаче характерны следующие особенности:
а) цикл является замкнутым многоугольником;
б) вершинами цикла являются клетки таблицы, причем одна из вершин – пустая клетка, а все остальные – клетки с поставками базисного плана ( с выделенными числами);
в) все углы цикла прямые и каждый отрезок цикла, ограниченный двумя вершинами, целиком принадлежит к одному столбцу или к одной строке таблицы;
г) в цикле четное число вершин;
д) отрезки цикла могут проходить заполненные поставками клетки, не являющиеся вершинами данного цикла;
е) в цикле одинаковое количество положительных и отрицательных вершин.
Цикл, сохраняя все перечисленные свойства, может иметь самую различную форму, но всегда для любой пустой клетки цикл пересчета существует, причем единственный (доказательство этого утверждения опускаем).
Введем теперь понятие оценки пустой клетки. Так же как и в общей задаче линейного программирования поставим вопрос следующим образом: на сколько изменится значение целевой функции, после совершения единичной поставки в рассматриваемую пустую клетку?
Рассмотрим табл. 4.5. Записав единичную поставку в клетку (2.1),
мы увеличили целевую функцию на 3 (с21 =3). Уменьшив поставку в клетку (1,1) на единицу, мы уменьшили значение целевой функции на 2 (с11 =2). Увеличив поставку в клетку (1.2), мы увеличили целевую функцию на 1 (с12 =1). И, наконец, уменьшив поставку в клетку (2,2) на единицу, мы уменьшили значение целевой функции на 4 (с22=4). В итоге целевая функция изменилась на 3-2+1-4= -2 (т.е. уменьшилась на 2). Эту величину и будем называть оценкой пустой клетки (i,j) и обозначать еij. Отметим, что оценка может быть как отрицательная, так и положительная.
Только что мы вычислили е21 =-2. Значит каждая единичная поставка в клетку (2,1) будет уменьшать значение целевой функции на 2. Чем больше будет величина поставки в клетку (2,1), тем лучше будет план поставок. Очевидно, наибольшее значение поставки в клетке (2,1) будет равно величине меньшей из поставок в отрицательных вершинах цикла. В противном случае в одной из этих вершин появится отрицательная поставка, что противоречит условиям задачи.
Наибольшее значение х21 в данном случае равно 40 (перепоставка из отрицательной вершины (1,1)). Принимая х21 = 40, для сохранения баланса по строкам и столбцам корректируем на эту величину поставки в остальных вершинах цикла:
х11 = 0, х12 = 50, х22 = 20.
Получим новый базисный план (клетка (1,1) освободилась от поставки). Транспортные издержки этого плана (см. табл. 4.6) изменились на е21 х21 = -2*40 = -80, т.е. уменьшились на 80.
Суммарные транспортные затраты для данного распределения можно посчитать и по общей формуле:
F = 1*50 +3*40 +4*20 +6*15 +6*55=670
Мы видим, что и по общей формуле расчета суммарные транспортные затраты уменьшились на 750 – 670 = 80 единиц.
Таблица 4.6
|
40 |
85 |
55 |
50 |
2
|
1 50 |
5
|
60 |
3 40 |
4 20 |
3
|
70 |
4
|
6 15 |
6 55 |
Итак, базисный план находить мы умеем (метод северо-западного угла или метод наименьших затрат). Научились определять оценки пустых клеток с помощью циклов и перераспределять по цепи поставки. Этого достаточно, чтобы решить транспортную задачу. Общий ход решения таков:
-
Находим исходный базисный план.
-
Для пустых клеток определяем оценки еij ,пока не найдем клетку с отрицательной оценкой.
-
В эту клетку записываем максимально возможную поставку, производя необходимую корректировку поставок в вершинах соответствующего цикла. В результате получаем новый базисный план, лучший чем предыдущий.
-
Для нового базисного плана выполняем опять процедуру 2.
Если все оценки еij 0, то план поставок улучшить невозможно (суммарные транспортные издержки не уменьшаются), значит, полученный на последнем шаге план поставок оптимальный.
Если существует хотя бы одна клетка с отрицательной оценкой – переходим к процедуре 3.
Будем придерживаться этого общего алгоритма решения для улучшения нашего нового базисного плана(табл. 4.6).
Определим оценку клетки (1,3) с помощью цикла (рис. 4.2).
(1,2) 1 - (1,3) 5 +
50
е13
=5 –1 + 6 – 6 = +4
(3,2) 6 + (3,3) 6 -
15 55
Рис. 4.2
Значит давать поставку в клетку (1,3) невыгодно – приращение целевой функции положительное, т.е. это приведет к удорожанию плана перевозок.
Определим оценку следующей пустой клетки (2,3) с помощью цикла (рис. 4.3).
(2,2) 4 - (2,3) 3 +