Методы оптимизации
Конспект лекций
назад | содержание | вперед

Тема 7. Задачи транспортного типа

7.1 Общая формулировка сбалансированной транспортной задачи

Важным частным случаем общей задачи линейного программирования является задача об оптимальном маршруте перевозок грузов, которая обычно называется транспортной задачей. Впервые она была рассмотрена в 1931 году российским экономистом А.Н. Толстым, изучавшим проблему рациональной организации перевозок. Ее математическую модель создал в 1941 г. американский учёный Ф. Хичкок. Эта модель и ее модификации в настоящее время широко используются при решении различных задач перевозок и распределения.

Общая формулировка классической транспортной задачи следующая. Имеется m пунктов производства P1, P2, ... , Pm и n пунктов потребления Q1, Q2, ... , Qn.  Производится и потребляется один и тот же продукт.  Известно, что в пункте Pi производится не более pi единиц продукта. Известно, что в пункте Qj потребляется не менее qj единиц продукта. Кроме того, затраты по перевозке одной единицы продукта из пункта Pi в пункт Qj равны bij³0 (i=, j=)..

Требуется составить план, минимизирующий затраты по перевозке, при котором из каждого пункта Pi вывозится не более pi единиц продукта, а в каждый пункт Qj привозится не менее qj единиц продукта.

Пусть yij – количество продукта, перевозимого из пункта Pi в пункт Qj.

Прямая задача. Найти такие yij (i=j=), что

 Двойственная задача. Найти   такие   ui (i=)  и   vj (j=), что

Транспортную задачу называют сбалансированной, если суммарный объем груза, имеющегося у производителей (поставщиков), равен суммарному спросу потребителей, т. е. выполняется равенство

,

где p– объем производства в пункте Рi  (i=),

      qj – объем потребления в пункте Qj  (j=).

Если для транспортной задачи выполняется условие

,

то  транспортную задачу называют несбалансированной.

В экономико-математической модели транспортной задачи  имеет смысл требовать, чтобы выполнялось следующее условие:

,



т.е. чтобы каждому потребителю привозилось ровно столько продукта, сколько он может принять (и не более того).

Действительно,  рассмотрим некоторый допустимый для классической транспортной задачи план перевозок .    Пусть существует некоторый потребитель Q, которому в сумме от всех поставщиков привозится товара больше, чем он может принять, т.е.

 .

Тогда существует некоторый допустимый план перевозок , при котором потребителю Q перевозится ровно столько единиц товара, сколько составляет спрос этого потребителя, т.е. выполняется условие

.

Действительно, в качестве  можно взять такой план, для которого верно следующее:

Тогда

,

т.е.  план   является допустимым.

Далее, с точки зрения затрат на перевозки план   , по крайней мере, не хуже  плана   .  Действительно,  стоимость bij  перевозки единицы груза из пункта производства  Р­i (i=)  в пункт производства Q(j=) есть неотрицательная величина  (bij³0,  i=j=). Следовательно, уменьшение количества груза, перевозимого в пункт Q, может только уменьшить значение целевой функции, что и требуется в транспортной задаче.

Любую  несбалансированную   транспортную   задачу   можно сбалансировать.  Так, при выполнении условия

можно ввести дополнительный, (n+1)-й, фиктивный пункт потребления  Qn+1. Спрос фиктивного потребителя полагают равным разнице между суммарным предложением и суммарным спросом, т.е.

.



Все тарифы на перевозки из пунктов Рi (i=) в пункт Qn+1 полагают одинаковыми и равными нулю, т.е.

bi, n+1=0,    i=.

      В фиктивный пункт Qn+1 перевозятся все излишки в количестве  yi,n+1 (i=), причем бесплатно. Фактически это означает, что  yi,n+1 единиц товара в пункте Рi остаются невостребованными.

 Замечание. В случае, когда суммарный спрос превосходит суммарное предложение, аналогично можно ввести фиктивного поставщика. Объем предложения фиктивного поставщика полагают разнице между суммарным спросом и суммарным предложением, т.е.

.

Соответственно в матрице переменных появляется дополнительная строка переменных ym+1,j  (j=), обозначающих объемы фиктивных перевозок от фиктивного поставщика потребителям. Фактически при нахождении оптимального решения задачи выясняется - кому из потребителей и в каком объеме не хватит товара.

Итак, всегда можно

.

Но тогда нужно потребовать, чтобы

,    i=.

Теперь мы можем сформулировать сбалансированную транспортную задачу. В m пунктах производства  Р1, Р2, ... , Рm сосредоточен некоторый груз в количестве  р1,  р2, ... , рm единиц соответственно. Имеющийся груз необходимо доставить потребителям Q1, Q2, ... , Qn, спрос которых равен q1, q2, ... , qn единиц соответственно. При этом

.

Кроме того, известна стоимость bij перевозки единицы груза из  пункта производства Рi в  пункт потребления Qj (i=j=). Требуется составить план перевозок, который полностью удовлетворяет предложению и спросу,  и при котором суммарные транспортные издержки минимизируются.

      Пусть yij – количество груза, перевозимого из пункта Рi в пункт Qj.  Тогда математической моделью сбалансированной транспортной задачи является задача линейного программирования, записанная в несимметричной канонической форме.

       Прямая задача. Найти такие yij (i=j=), что

      Двойственная задача. Найти   такие   ui (i=)  и  vj (j=), что

Критерий  оптимальности  (условия о дополняющей нежесткости для сбалансированной транспортной задачи).  Допустимый  план перевозок  (i=,  j=) является оптимальным в том и только в том случае, если  найдутся  такие  числа    (i=)  и   (j=), допустимые  в двойственной задаче,  что выполнены  следующие условия:

                                    

                        (-+-bij) = 0      (i=,  j=).                      (*)



       Заметим, что условия (*) теоремы можно  записать  следующим  образом: 

если   >0,   то  -+=bij    (i=,  j=).



7.2  Пример транспортной задачи и ее решение

Пример

 Пусть имеется три пункта производства телевизоров – заводы  Р1, Р2 и Р3. Максимально возможные объемы производства на каждом заводе за единицу времени равны соответственно 48, 48 и 40 телевизорам. Пусть имеется четыре пункта потребления – рынки Q1, Q2, Q3 и Q4, объемы продаж на каждом рынке за ту же самую единицу времени равны соответственно 32, 57, 32 и 15 телевизорам. Пусть известны затраты bij на перевозку одного телевизора из  пункта  производства  Pi   в  пункт потребления Qj. Величины ij заданы в следующей таблице 7.1.

 

             Таблица 7.1Данные задачи

Pi\Qj

Q1

Q2

Q3

Q4

P1

5

8

24

30

P2

8

10

20

32

P3

17

28

35

40



Требуется составить план перевозок, который полностью удовлетворяет ограничениям на объемы производства и потребления, и при котором суммарная стоимость перевозок минимальна.

Заметим, что данная задача является сбалансированной, поскольку

т.е.

Пусть  yij – объемы перевозок из пункта производства Pi в  пункт потребления Qj. Математическая модель данной задачи будет следующей.

        Прямая задача.  Найти такие yij (i=, j=), что



        5y11+8y12+24y13+30y14+8y21+10y22+20y23+32y24+   

 

                                    +17y31+28y32+35y33+40y34  ® min,


        Двойственная задача.  Найти такие  ui (i=)  и  vj  (j=), что        



             -48u1-48u2-40u3+32v1+57v2+32v3+15v4   ®  max,



Транспортная задача решается так называемым  методом потенциалов. В основе метода потенциалов лежит та же идея последовательного улучшения плана, что и в симплекс-методе. Он представляет собой итеративную процедуру, начинающую свою работу с некоторого опорного плана. Опорный план - допустимый план транспортной задачи, при котором столбцы матрицы условий, соответствующие его положительным компонентам, линейно независимы.

Можно доказать (теорема), что опорный план имеет не более  1 положительных компонент. Если опорный план имеет ровно  1 положительных компонент, то он является невырожденным, а если меньше, то вырожденным.  Для нахождения опорного плана  можно использовать метод северо-западного угла или метод минимального элемента.

Нахождение опорного плана методом  северо-западного угла

При использовании этого метода сбалансированная транспортная задача   представляется в виде таблицы, в последнем столбце которой находятся запасы поставщиков, а в последней строке — потребности потребителей. В левом верхнем углу ячеек, соответствующих перевозкам, находятся их тарифы.

Эта таблица заполняется, начиная с левого верхнего (северо-западного) угла, т.е. определения перевозки y11. Для этого сравниваются запас первого поставщика  и потребность первого потребителя . В первую клетку (1, 1) заносим меньшее из чисел  и, т.е. y11 = min {, }.

Если  > , то полагаем y11=  и "закрываем" (исключаем из рассмотрения) первый столбец, соответствующий первому потребителю, так как его потребности полностью удовлетворены. Оставшийся запас первого поставщика равен .

Затем, двигаясь по первой строке, соответствующей первому поставщику, определяем элемент y12. Для этого сравниваем оставшийся запас первого поставщика  и потребность второго потребителя q2. В клетку (1, 2) записываем меньшее из чисел  и q2, т.е. x12 = min {, q2}. Пусть, например, y12 = . Тогда, поскольку запас первого поставщика исчерпан, закрываем эту строку, т.е. считаем, что y1k = 0 для всех k > 2.

Для удовлетворения оставшейся части потребности второго потребителя  = q2   используется запас сырья второго поставщика. По описанной выше схеме определяется величина поставки y22 и т.д. 

Таким образом, для формирования объема перевозки в текущей клетке (i, j) рассматриваются объемы нераспределенного запаса текущего поставщика (i) и неудовлетворенной потребности текущего потребителя (j). Из них выбирается минимум и назначается в качестве объема перевозки (yij) от текущего поставщика текущему потребителю. Нераспределенный запас текущего поставщика и неудовлетворенная потребность текущего потребителя уменьшаются на величину объема перевозки.

Если исчерпывается запас текущего поставщика, то следует закрыть текущую строку и перейти к распределению запаса следующего поставщика, т.е. на следующую строку. Если же исчерпывается потребность текущего потребителя, то нужно закрыть этот столбец и перейти к удовлетворению потребности следующего потребителя, т.е. на следующий столбец.

Отметим, что при заполнении очередной клетки мы закрываем или столбец, или строку. При заполнении последней клетки в силу равенства суммарных запасов суммарным потребностям одновременно закрываются и последний столбец, и последняя строка. Так как число строк в таблице равно m, а число столбцов равно n, то в общем случае допустимый план перевозок будет иметь m + n – 1 элементов, отличных от нуля, т.е. будет найден невырожденный опорный план транспортной задачи.

Для рассматриваемого примера опорный план, найденный методом северо-западного угла, представлен в таблице 7.2.

Таблица 7.2 – Опорный план, найденный методом северо-западного угла

5

8

24

30

48

32

16

 

 

8

10

20

32

48

 

41

7

 

17

28

35

40

40

 

 

25

15

32

57

32

15

 


Из самого способа его построения вытекает сбалансированность плана перевозок по поставщикам и потребителям. Однако во избежание ошибок рекомендуется проверить балансы путем суммирования поставок по строкам и столбцам.

Замечание. Возможна ситуация, когда на каком-то шаге одновременно исчерпывается запас у текущего поставщика и полностью удовлетворяется потребность текущего потребителя. Тогда нужно закрыть либо текущую строку, либо текущий столбец, а в следующую незанятую клетку записать 0 (нулевую поставку). В этом случае после окончания работы метода будет получен так называемый вырожденный опорный план.

Нахождение опорного плана методом  минимального элемента

В методе минимального элемента на каждом шаге выбирается клетка с минимальным тарифом. Поэтому опорный план, построенный этим методом, обычно (но не всегда!) лучше, чем опорный план, построенный методом северо-западного угла (затраты на перевозку на нем меньше).

Нахождение опорного плана методом минимального элемента начинается с поиска клетки, в которой стоит минимальный элемент матрицы тарифов B= (bij). Если в матрице B таких элементов несколько, то берется любой из них.

Пусть . Тогда построение опорного плана начинается с клетки (i, j). Сравниваются запасы поставщика pi и потребность потребителя qj. В качестве перевозки берется величина .

Если pi < qj, то закрывается строка i; если же pi > qj, то закрывается столбец j. Если pi = qj, то закрываются одновременно и строка, и столбец, а в одну из клеток, расположенных в этой строке или столбце, заносится 0 (нулевая перевозка).

Затем среди оставшихся клеток таблицы выбирается клетка с наименьшим тарифом, и в нее записывается максимально возможная перевозка. Процесс продолжается до тех пор, пока не будет получен опорный план перевозок, возможно, вырожденный.

Отметим, что для рассматриваемого примера опорный план, найденный методом минимального элемента совпадает с опорным планом, найденным методом северо-западного угла.

После того, как найден опорный план, приступают к реализации собственно метода потенциалов. Каждый шаг работы процедуры состоит из двух этапов:

1.   Проверка на оптимальность текущего опорного плана.

2.   Построение по определенному алгоритму нового опорного плана в том случае, если текущий опорный план не является оптимальным. Этому плану соответствует меньшее значение целевой функции.

Здесь не будем более подробно разбирать алгоритм метода, отметим, что, как и любую задачу линейного программирования, транспортную задачу можно решить , используя пакеты прикладных программ, например, Excel (далее будет приведен пример).

Отметим, что для приведенного примера оптимальным будет следующий допустимый план перевозок :

Таблица 7.3 – Оптимальный план перевозок

Pi\Qj

Q1

Q2

Q3

Q4

P1

7

41

0

0

P2

0

16

32

0

P3

25

0

0

15



При этом плане перевозок затраты составят


            5*7 + 8*41 + 10*16 + 20*32 + 17*25 + 40*15 = 2188.


Докажем оптимальность этого решения, используя условия дополняющей нежесткости. Допустимый план  (i=, j=) будет являться оптимальным  в том и только в том случае, если найдутся   числа   (i=)  и  (j=), допустимые в двойственной задаче и удовлетворяющие  условиям  дополняющей нежесткости.  Имеем:



Итак, необходимо решить следующую систему линейных уравнений:

Эта система имеет не единственное решение, поскольку ранг системы равен n+m-1=6, а число неизвестных равно n+m=7. Найдем частное решение этой системы.  Пусть одна из переменных, например и3, принимает какое-нибудь фиксированное значение, например, ноль.  Итак, пусть  = 0. Тогда

Итак,    

Проверим допустимость полученных   и .  Для этого проверим выполнение ограничений двойственной задачи, соответствующих   таким парам (Рi, Qj),  что =0.



,     т.е.    -12+30=18 £ 24   (верно),

,     т.е.    -12+40=28 £ 30   (верно),

,     т.е.    -10+17=7   £  8    (верно),

,     т.е.    -10+40=30 £  32  (верно),

,     т.е.    -0 + 20= 20 £ 28  (верно),

,     т.е.     -0 +30= 30 £ 35  (верно).

 

Итак,  предложенный план  перевозок    является оптимальным.



7.3 Решение транспортной задачи в Excel

Рассмотрим решение транспортной задачи, суть которой заключается в оптимальной организации транспортных перевозок штучного товара со складов в магазины (табл.7.4).

 Таблица 7.4 Исходные данные транспортной задачи

Тарифы, руб./шт.

1-й магазин

2-й магазин

3-й магазин

Запасы, шт.

1-й склад

2

9

7

25

2-й склад

1

0

5

50

3-й склад

5

4

100

35

4-й склад

2

3

6

75

Потребности, шт.

45

90

50

 

 

 

 

Целевая функция и ограничения данной задачи имеют вид



Экранные формы, задание переменных, целевой функции, ограничений и граничных условий транспортной задачи и ее решение представлены на рис.7.1, 7.2, 7.3 и в табл.7.5.

Рисунок 7.1 – Экранная форма транспортной задачи



Таблица 7.5 – Задание переменных, целевой функции, левых частей ограничений   транспортной задачи

Объект математической модели

Выражение в Excel

Переменные задачи

C3:E6

Формула в целевой ячейке F15

=СУММПРОИЗВ(C3:E6;C12:E15)

Ограничения по строкам

в ячейках F3, F4, F5, F6

=СУММ(C3:E3)

=СУММ(C4:E4)

=СУММ(C5:E5)

=СУММ(C6:E6)

Ограничения по столбцам

в ячейках С7, D7, E7

=СУММ(C3:C6)

=СУММ(D3:D6)

=СУММ(E3:E6)

Суммарные запасы и потребности

в ячейках H8, G9

=СУММ(H3:H6)

=СУММ(C9:E9)



Рисунок 7.2 – Ограничения и граничные условия задачи


Рисунок 7.3 – Экранная форма после получения решения задачи



7.4  Задача о назначениях

Допустим, что на некоторой фирме имеется n различных работ Т1, Т2,..., Тn   и n лиц  М1, М2,..., Мn,  способных выполнять каждую из этих работ. Эксперт, занимающийся вопросами эффективности (производительности), испытал каждое лицо на каждой работе и дал некоторую количественную информацию относительно пригодности претендента на каждую из n работ.

Случай 1.     Пусть bij (i=, j=) – неотрицательные числа, оценивающие время выполнения работы Тj претендентом Мi. То есть задана матрица


 ,

называемая матрицей квалификаций.

Тогда задача о назначениях состоит в распределении претендентов по работам так, чтобы выполнялись следующие условия:

(1) каждый претендент выполняет только одну работу;

(2) каждая работа выполняется только одним претендентом;

(3) минимизируется суммарное время выполнения всех работ.

        Выпишем    математическую   модель задачи о назначениях.  Пусть yij (i=, j=) – количественное выражение того, будет ли выполнять претендент Мi работу Тj или нет:

yij = 1,   если претендент Мi выполняет работу  Тj;

yij = 0,   если претендент Мi не выполняет работу  Тj.

 

Тогда условие (1) математически запишется следующим образом:

,    i=.

Это  условие означает, что только одна из переменных  yij  в i-й строке матрицы

равна единице, т.е.  претендент  Мi  выполняет только одну работу.

Условие  (2) математически запишется следующим образом:

,  j=.                                  

                             

Это условие означает, что только одна из переменных yij   в j-ом столбце матрицы Y равна единице, т.е. работа Тj выполняется только одним претендентом.

 

         Условие (3) математически запишется следующим образом:


Здесь, если yij=1, то в суммарное время выполнения всех работ входит слагаемое bij.  В конечном итоге только n слагаемых в этой сумме будут ненулевыми.

 

          Итак, прямая задача состоит в том, чтобы найти такие yij (i=, j=),  что

,

 Двойственная   задача   состоит   в   том,   чтобы найти такие  ui (i=)  и   vj (j=),  что

Задача о назначениях  является  частным случаем сбалансированной транспортной задачи. Точнее, задача о назначениях является сбалансированной транспортной задачей, в которой

1)   m=n;

2)   pi=1,   i=;

3)   qj=1,   j=.

 

Заметим, что задача о назначениях является задачей с целочисленными переменными, в результате решения которой искомые переменные   могут принимать только одно из двух значений: 0 или 1. Такие переменные в честь предложившего их английского математика Джорджа Буля называют булевыми.


Случай 2.   Пусть  bij (i=, j=) – неотрицательные числа, оценивающие производительность претендента  Мна  работе  Тj. Необходимо распределить людей на работы так, чтобы выполнялись следующие условия:

(1) каждому претенденту достается только одна работа;

(2) каждая работа выполняется только одним претендентом;

(3) максимизируется   эффективность,  измеряемая  суммой производительностей.

 

           Математическая модель этой задачи будет следующей.

           Прямая задача.  Найти такие yij (i=, j=), что

,

Двойственная   задача.   Найти такие ui (i=) и vj (j=),  что

Замечание .  Рассмотренная задача о назначениях является частным случаем общей задачи, в которой число претендентов может быть больше числа работ, т.е.  m>n.  В этом случае при решении задачи вводится m-n фиктивных работ. При этом, конечно, необходимо изменить матрицу квалификаций, добавив в нее m-n новых столбцов. В случае несбалансированной задачи о назначениях некоторые претенденты фактически остаются без работы (поскольку выполняют фиктивные работы).

Пример решения задачи о назначениях в Excel

  На рис.7.4 представлена экранная форма с решением     задачи о назначениях, в которой три работы надо было распределить между тремя работниками с целью минимизировать суммарное время выполнения всех работ.

 

Рисунок 7.4 – Решение задачи о назначениях

 

Помимо задания требования целочисленности   при вводе условия задач с булевыми переменными необходимо в окне "Поиск решения" добавить граничные условия, имеющие смысл ограничения значений переменных по их единичной верхней границе (рис.7.5).

 

Рисунок 7.5 – Добавление условия единичной верхней границы значений переменных транспортной задачи с булевыми переменными

 

Вид окна "Поиск решения" для задачи с булевыми переменными  приведен на рис.7.6.

Рисунок 7.6 – Окно "Поиск решения" для задачи с булевыми переменными




наверх


назад | содержание | вперед