15
Транспортная задача Под транспортной задачей понимают целый ряд задач, имеющих определенную специфическую структуру. Наиболее простыми транспортными задачами являются задачи о перевозках некоторого продукта из пунктов отправления в пункты назначения при минимальных затратах на перевозку. Три поставщика одного и того же продукта располагают в планируемый период следующими его запасами: первый – 120 условных единиц, второй – 100 условных единиц, третий – 80 условных единиц. Этот продукт должен быть перевезен к трем потребителям, потребности которых равны 90, 90 и 120 условных единиц, соответственно. Обычно начальные условия транспортной задачи записывают в так называемую транспортную таблицу (см. таблицу 2.3). В ячейках таблицы в левом верхнем углу записывают показатели затрат (расходы по доставке единицы продукта между соответствующими пунктами), под диагональю каждой ячейки размещается величина поставки xij (т.е. xij - количество единиц груза, которое будет перевезено от i-го поставщика j-му потребителю). Таблица 2.3 - Исходные данные транспортной задачи Необходимо определить наиболее дешевый вариант перевозок, при этом каждый поставщик должен отправить столько груза, сколько имеется у него в запасе, а каждый потребитель должен получить нужное ему количество продукции. Формулируем ЗЛП: = 7x 11 + 6x 12 + 4x 13 + 3x 21 + 8x 22 + 5x 23 + 2x 31 + 3x 32 + 7x 33 → min; x 11 + x 12 + x 13 = 120, x 21 + x 22 + x 23 = 100, x 31 + x 32 + x 33 = 80, x 11 + x 21 + x 31 = 90, x 12 + x 22 + x 32 = 90, x 13 + x 23 + x 33 = 120; x ij ≥ 0, ( , ).

транспортная задача

Embed Size (px)

Citation preview

Page 1: транспортная задача

Транспортная задача Под транспортной задачей понимают целый ряд задач, имеющих

определенную специфическую структуру. Наиболее простыми

транспортными задачами являются задачи о перевозках некоторого продукта

из пунктов отправления в пункты назначения при минимальных затратах на

перевозку. Три поставщика одного и того же продукта располагают в

планируемый период следующими его запасами: первый – 120 условных

единиц, второй – 100 условных единиц, третий – 80 условных единиц. Этот

продукт должен быть перевезен к трем потребителям, потребности которых

равны 90, 90 и 120 условных единиц, соответственно. Обычно начальные

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

таблицу (см. таблицу 2.3). В ячейках таблицы в левом верхнем углу

записывают показатели затрат (расходы по доставке единицы продукта

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

размещается величина поставки xij (т.е. xij - количество единиц груза,

которое будет перевезено от i-го поставщика j-му потребителю).

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

Необходимо определить наиболее дешевый вариант перевозок, при

этом каждый поставщик должен отправить столько груза, сколько имеется у

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

количество продукции. Формулируем ЗЛП:

= 7x11 + 6x12 + 4x13 + 3x21 + 8x22 + 5x23 + 2x31 + 3x32 + 7x33 → min;

x11 + x12 + x13 = 120, x21 + x22 + x23 = 100, x31 + x32 + x33 = 80, x11 + x21 + x31 = 90, x12 + x22 + x32 = 90, x13 + x23 + x33 = 120;

xij ≥ 0, ( , ).

Page 2: транспортная задача

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

(метод северо-западного угла, метод потенциалов)

Задача:

Имеется 4 склада содержащие некоторое количество единиц

однотипной продукции (см.таблицу 1), имеется также 6 потребителей

нуждающихся в определенном количестве данной продукции (см.таблицу 2).

При перевозке одной единицы продукции со склада i потребителю j

возникают издержки Pij. Величины издержек приведены в таблице 3. При

перевозке K единиц продукции со склада i потребителю j суммарные затраты

на перевозку составляют K*Pij.

Требуется найти такой план перевозок при котором общие затраты на

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

Таблица 1

Склад

Запас ед.

продукции

1 14

2 7

3 22

4 17

Таблица 2

Потребитель

Потребность в ед.

продукции

1 7

2 12

3 3

4 11

5 8

6 20

Таблица 3 Издержки на перевозку единицы продукции со склада i потребителю j

Потребители

Склад № 1 2 3 4 5 6

1 1.1 2 2.05 1 3 0.5

2 3 2.15 4.8 3 11.07 2.2

3 0.8 1 0.75 2.12 0.1 2.8

Page 3: транспортная задача

4 0.7 0.3 1.1 3.7 1 0.2

Шаг:1

Проверка на сбалансированность

Общее число запасов на складах : 60 ; Общая потребность : 61

Мы видим, что общая потребность превышает общее число запасов на 1.

Задача является открытой (несбалансированной), для приведения ее к

закрытой введем фиктивного производителя №5

c запасом продукции равному 1.

Все издержки по доставке продукции с данного производителя (склада)

любому потребителю принимаем равными нулю.

Шаг:2

Отыскание начального решения. Метод северо-западного угла

Запишем настоящую задачу в виде транспортной таблицы. В верхней

строке перечислим потребности потребителей по порядку номеров. В левом

столбце перечислим имеющиеся запасы на складах. На пересечении j-го

столбца и i-й строки будем записывать количество продукции, поставляемое

с i-го склада j-му потребителю. Пока начальное решение не найдено, оставим

эти клетки пустыми.

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

a2= 7

a3= 22

a4= 17

a5= 1

Введем вспомогательные строку и столбец, в которых будем отмечать

оставшиеся нераспределенные запасы и соответственно потребности

Page 4: транспортная задача

(остатки). Изначально их содержимое равно исходным запасам и

потребностям , так как еще ничего не распределялось. На рисунке они

представлены желтым цветом.

Выберем клетку в которую будем распределять продкуцию на

следующей итерации, это левая верхняя клетка (севрозападный угол). На

рисунке как сама клетка так и соответсвующие ей остатки отображаются

красным шрифтом.

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

X 14

a2= 7

7

a3= 22

22

a4= 17

17

a5= 1

1

7 12 3 11 8 20

Итерация: 1 Заполним клетку a1,b1.

Сравним значения остатков для производителя a1 и потребителя b1.

Нераспределенных остатков по потребностям для b1 меньше (см.

таблицу выше, красный шрифт), запишем меньшее число в клетку a1,b1

одновременно вычитая его из обеих клеток остатков (см. таблицу ниже). При

этом клетка остатков по потребностям обнулится указывая, что все

потребности для b1 удовлетворены (см. таблицу ниже). Поэтому исключим

столбец b1 из дальнейшего рассмотрения (серый фон).

Ненулевое значение остатка по запасам для a1 показывает, сколько

единиц продукции у него осталось не потребленной.

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7 X 7

a2= 7

7

a3= 22

22

Page 5: транспортная задача

a4= 17

17

a5= 1

1

0 12 3 11 8 20

Итерация: 2

Заполним клетку a1,b2.

Сравним значения остатков для производителя a1 и потребителя b2.

Нераспределенных остатков по запасам для a1 меньше (см. таблицу

выше, красный шрифт), запишем меньшее число в клетку a1,b2 одновременно

вычитая его из обеих клеток остатков (см. таблицу ниже). При этом клетка

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

использованы (см. таблицу ниже). Поэтому исключим строку a1 из

дальнейшего рассмотрения (серый фон).

Ненулевое значение остатка по потребностям для b2 показывает,

сколько единиц продукции ему еще требуется.

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7 7 0

a2= 7

X 7

a3= 22

22

a4= 17

17

a5= 1

1

0 5 3 11 8 20

Итерация: 3

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7 7 0

a2= 7

5 X 2

a3= 22

22

a4= 17

17

Page 6: транспортная задача

a5= 1

1

0 0 3 11 8 20

Итерация: 4

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7 7 0

a2= 7

5 2 0

a3= 22

X 22

a4= 17

17

a5= 1

1

0 0 1 11 8 20

Итерация: 5

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7 7 0

a2= 7

5 2 0

a3= 22

1 X 21

a4= 17

17

a5= 1

1

0 0 0 11 8 20

Итерация: 6

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7 7 0

a2= 7

5 2 0

a3= 22

1 11 X 10

a4= 17

17

Page 7: транспортная задача

a5= 1

1

0 0 0 0 8 20

Итерация: 7

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7 7 0

a2= 7

5 2 0

a3= 22

1 11 8 X 2

a4= 17

17

a5= 1

1

0 0 0 0 0 20

Итерация: 8

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7 7 0

a2= 7

5 2 0

a3= 22

1 11 8 2 0

a4= 17

X 17

a5= 1

1

0 0 0 0 0 18

Итерация: 9

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7 7 0

a2= 7

5 2 0

a3= 22

1 11 8 2 0

a4= 17

17 0

Page 8: транспортная задача

a5= 1

X 1

0 0 0 0 0 1

Итерация: 10

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7 7 0

a2= 7

5 2 0

a3= 22

1 11 8 2 0

a4= 17

17 0

a5= 1

1 0

0 0 0 0 0 0

Получено допустимое начальное решение (опорный план) (см. таблицу

ниже), удовлетворенны нужды всех потребителей и использованы все запасы

производителей.

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7 7

a2= 7

5 2

a3= 22

1 11 8 2

a4= 17

17

a5= 1

1

Шаг:3

Проверрим полученный опорный план на невырожденность.

Количество заполненных клеток N должно удовлетворять условию N=n+m-1.

В нашем случае N=10, n+m=6+5=11 , что удовлетворяет условию

невырожденности плана.

Шаг:4

Page 9: транспортная задача

Вычислим общие затраты на перевозку всей продукции. Для этого

запишем транспортную таблицу в которой совместим найденный опорный

план с величинами издержек. В левом верхнем углу каждой клетки будем

указывать количество единиц продукции а в правом нижнем затраты на

перевозку единицы продукции. (см. таблицу ниже)

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7

1.1

7

2

a2= 7

5

2.15

2

4.8

a3= 22

1

0.75

11

2.12

8

0.1

2

2.8

a4= 17

17

0.2

a5= 1

1

0

Перемножим числа стоящие в одной клетке (для всех клеток) затем

полученные произведения сложим. Получим значение суммарных затрат, для

данного начального решения.

P

нач=

7

5.92

Шаг:5

Проведем поэтапное улучшение начального решения, используя метод

потенциалов.

Итерация: 1

Составим вспомогательную рабочую матрицу затрат. Она строится из

исходной матрицы издержек (см. Таблицу 3) путем переноса только тех

ячеек Pij которые соответствуют заполненным клеткам транспортной

таблицы. Остальные ячейки остаются пустыми.

Кроме того, введем вспомогательный столбец в который внесем

значения неизвестных U1 ... U5 (5,это m - число складов) и вспомогательную

Page 10: транспортная задача

строку в которую внесем значения неизвестных V1 ... V6 (6,это n - число

потребителей). На рисунке они представлены желтым цветом. Эти n+m

неизвестных должны для всех (i,j), соответствующих загруженым клеткам,

удовлетворять линейной системе уравнений

Ui+Vj=Pij

Эту систему всегда можно решить следующим способом: На первом

шаге полагают V6=0. Если на k-м шаге найдено значение неизвестной, то в

системе всегда имеется еще не определенная неизвестная, которая

однозначно может быть найдена на (k+1)-м шаге из уравнения Ui+Vj=Pij, так

как значение другой неизвестной в этом уравнении уже известно. То какую

неизвестную можно найти на (k+1)-м шаге, определяют методом проб.

Переменные Ui и Vj называются симплекс-множителями или потенциалами.

Рабочая матрица затрат с рассчитанными потенциалами представлена

ниже.

b1

b2

b3

b4

b5

b6

a1

1.1 2 u1= 6.7

a2

2.15 4.8 u2= 6.85

a3

0.75 2.12 0.1 2.8 u3= 2.8

a4

0.2 u4= 0.2

a5

0 u5= 0

v1= -5.6

v2= -4.7

v3= -2.05

v4= -0.68

v5= -2.7

v6= 0

Порядок вычисления потенциалов был следующий:

1) Пусть V6 = 0 ;

2) U3 = P3,6 - V6 ;

3) U4 = P4,6 - V6 ;

4) U5 = P5,6 - V6 ;

5) V3 = P3,3 - U3 ;

6) V4 = P3,4 - U3 ;

7) V5 = P3,5 - U3 ;

8) U2 = P2,3 - V3 ;

9) V2 = P2,2 - U2 ;

10) U1 = P1,2 - V2 ;

11) V1 = P1,1 - U1 ;

Page 11: транспортная задача

Теперь для всех свободных клеток рабочей матрицы затрат вычислим

оценки Sij, по формуле Sij = Pij – Ui - Vj (зеленый цвет). Каждая такая оценка

показывает на сколько изменятся общие транспортные затраты при загрузке

данной клетки единицей груза. Таким образом, если среди оценок имеются

отрицательные (затраты уменьшаются) то данный план можно улучшить

переместив в соответствующую клетку некоторое количество продукции.

Если же среди оценок нет отрицательных - план является оптимальным.

Рабочая матрица затрат с заполнеными оценками клетками

представлена ниже.

b1

b2

b3

b4

b5

b6

a1

1.1 2 -2.6 -5.02 -1 -6.2 u1= 6.7

a2

1.75 2.15 4.8 -3.17 6.92 -4.65 u2= 6.85

a3

3.6 2.9 0.75 2.12 0.1 2.8 u3= 2.8

a4

6.1 4.8 2.95 4.18 3.5 0.2 u4= 0.2

a5

5.6 4.7 2.05 0.68 2.7 0 u5= 0

v1= -

5.6

v2= -4.7

v3= -2.05

v4= -0.68

v5= -2.7

v6= 0

Из всех отрицательных оценок имеет смысл выбрать наибольшую по

модулю (красный цвет), так как ее воздействие на общие затраты является

максимальным. В нашем случае такая оценка находится в ячейке а1,b6

(красный цвет), в сответствующую ячейку транспортной таблицы мы

должны переместить некоторое количество продукции т.е. загрузить ее.

Отметим в транспортной таблице ячейку а1,b6 знаком + . Кроме нее мы

пометим знаками - и + другие занятые числами ячейки таким образом, что в

каждой строке и каждом столбце транспортной таблицы число знаков +

будет равно числу знаков - . Это всегда можно сделать единственным

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

и - .То есть помеченные знаками клетки должны образовывать цикл.

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7

7

-

+

a2= 7

5 2

Page 12: транспортная задача

+

-

a3= 22

1

+

11

8

2

-

a4= 17

17

a5= 1

1

Затем мы определим минимум M из всех элементов, помеченных

знаком - , и выбираем одну ячейку где этот минимум достигается. В нашем

случае таковой является а2,b3 и обозначает загруженую клетку, которая

должна стать свободной.

Число M при этом

составляет: 2

Переход к новой транспортной таблице разбивается на следующие

шаги.

а) В ячейку а1,b6 новой таблицы записывается число M.

б) Ячейка а2,b3 остается пустой.

в) В остальных ячейках, помеченных знаками - или +, число M

соответственно вычитается из стоящего в ячейке числа или складывается с

ним. Результат вносится в соответствующую ячейку новой таблицы.

г) Непомеченные числа переносятся в новую таблицу без изменений.

Остальные ячейки новой таблицы остаются пустыми.

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7 5 2

a2= 7

7

a3= 22

3 11 8 0

a4= 17

17

a5= 1

1

Page 13: транспортная задача

Итерация: 2 Рабочая матрица затрат с пересчитанными потенциалами и оценкам.

b1

b2

b3

b4

b5

b6

a1

1.1 2 3.6 1.18 5.2 0.5 u1= 0.5

a2

1.75 2.15 6.2 3.03 13.12 1.55 u2= 0.65

a3

-2.6 -3.3 0.75 2.12 0.1 2.8 u3= 2.8

a4

-0.1 -1.4 2.95 4.18 3.5 0.2 u4= 0.2

a5

-0.6 -1.5 2.05 0.68 2.7 0 u5= 0

v1= 0.6

v2= 1.5

v3= -2.05

v4= -0.68

v5= -2.7

v6= 0

Ячейка а3,b2, транспортной таблицы, должна загрузиться.

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7

5

-

2

+

a2= 7

7

a3= 22

+

3

11

8

0

-

a4= 17

17

a5= 1

1

Ячейка а3,b6 становится свободной.

M

= 0

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7 5 2

Page 14: транспортная задача

a2= 7

7

a3= 22

0 3 11 8

a4= 17

17

a5= 1

1

Итерация: 3 Рабочая матрица затрат с пересчитанными потенциалами и оценкам.

b1

b2

b3

b4

b5

b6

a1

1.1 2 0.3 -2.12 1.9 0.5 u1= 0.5

a2

1.75 2.15 2.9 -0.27 9.82 1.55 u2= 0.65

a3

0.7 1 0.75 2.12 0.1 3.3 u3= -0.5

a4

-0.1 -1.4 -0.35 0.88 0.2 0.2 u4= 0.2

a5

-0.6 -1.5 -1.25 -2.62 -0.6 0 u5= 0

v1= 0.6

v2= 1.5

v3= 1.25

v4= 2.62

v5= 0.6

v6= 0

Ячейка а5,b4, транспортной таблицы, должна загрузиться.

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7

5

-

2

+

a2= 7

7

a3= 22

0

+

3

11

-

8

a4= 17

17

a5= 1

+

1

-

Ячейка а5,b6 становится свободной.

Page 15: транспортная задача

M

= 1

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20

a1= 14

7 4 3

a2= 7

7

a3= 22

1 3 10 8

a4= 17

17

a5= 1

1

Итерация: 4 Рабочая матрица затрат с пересчитанными потенциалами и оценкам.

b1

b2

b3

b4

b5

b6

a1

1.1 2 0.3 -2.12 1.9 0.5 u1= 0.5

a2

1.75 2.15 2.9 -0.27 9.82 1.55 u2= 0.65

a3

0.7 1 0.75 2.12 0.1 3.3 u3= -0.5

a4

-0.1 -1.4 -0.35 0.88 0.2 0.2 u4= 0.2

a5

2.02 1.12 1.37 0 2.02 2.62 u5= -2.62

v1= 0.6

v2= 1.5

v3= 1.25

v4= 2.62

v5= 0.6

v6= 0

Ячейка а1,b4, транспортной таблицы, должна загрузиться.

b1= 7

b2= 12

b3= 3

b4= 11

b5= 8

b6= 20