Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка исо 2012.doc
Скачиваний:
23
Добавлен:
10.11.2019
Размер:
4.49 Mб
Скачать

Задачи для самостоятельного решения

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

25.

26.

27.

28.

29.

30.

Глава 7. Транспортная задача

Транспортные задачи (ТЗ) – специальный класс задач линейного программирования. Эти модели часто описывают перевозку какого-либо товара из пункта отправления в пункт назначения. Транспортная задача ставится следующим образом: имеется m пунктов отправления A1, A2, . . . , Am, в которых сосредоточены запасы однородных грузов в количестве соответственно a1, a2, . . . , am единиц. Имеется n пунктов назначения В1, В2, . . . , Вn, подавших заявки соответственно на b1, b2, . . . , bn единиц груза. Если сумма всех заявок равна сумме всех запасов

,

то задача называется задачей закрытого типа. Известны стоимости Сij перевозки единицы груза от каждого пункта отправления Ai до каждого пункта назначения Bj. Все числа Cij образующие прямоугольную матрицу, заданы:

.

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

Обозначим xij - количество единиц груза, отправляемого из пункта Ai в пункт назначения Bj . Неотрицательные переменные xij можно записать в виде матрицы:

.

Эти неотрицательные переменные должны удовлетворять следующим условиям:

1) Суммарное количество груза, направляемого из каждого пункта отправления во все пункты назначения, должно быть равно запасу груза в данном пункте. Это даёт m условий-равенств:

2) Суммарное количество груза, доставляемого в каждый пункт назначения из всех пунктов отправления, должно быть равно заявке, поданной данным пунктом. Это даёт n условий-равенств:

3) Суммарная стоимость всех перевозок должна быть минимальной:

В силу особой структуры ТЗ все операции по нахождению оптимального плана сводятся к манипуляциям непосредственно с таблицей. Транспортная таблица состоит из m строк и n столбцов. В верхнем левом углу каждой клетки будем указывать стоимость Cij перевозки единицы груза из Аi в Вj , а в правом нижнем углу помещаем перевозку xij.

Таблица 1. Структура транспортной таблицы

Заказы

Запасы

B1

B2

Bn

b1

b2

bn

A1

a1

c11

 c12

 c1n

 

 x11

 

 x12

 

 x1n

A2

a2

 c21

 c22

 c2n

 

 x21

 

 x22

 

 x2n

Am

am

 cm1

 cm2

 cmn

 

 xm1

 

 xm2

 

 xmn

Алгоритм решения транспортной задачи:

Шаг 1: составляется опорный план методом северо-западного угла или наименьшей стоимости.

Шаг 2: проверяется вырожденность плана. Если число заполненных перевозками клеток в опорном плане меньше, чем (m+n-1), то план называется вырожденным. Для вырожденного плана невозможно использовать метод потенциалов. Для превращения вырожденного плана в невырожденный необходимо в незаполненные клетки с наименьшим тарифом внести ноль, превратив их в заполненные клетки. При этом число заполненных клеток должно быть равно (m+n-1).

Шаг 3: для полученного распределения поставок подбирается потенциалы строк и столбцов так, чтобы коэффициенты затрат заполненных клеток стали равны нулю. Составляется матрица оценок.

Шаг 4: если оценки всех свободных клеток неотрицательны, то найденное распределение оптимально, и решение закончено. Если среди оценок свободных клеток есть отрицательные, то выбирается максимальная по модулю для передачи в неё поставки.

Шаг 5: для избранной свободной клетки строится означенный цикл пересчёта. Поставка y, передаваемая по циклу, определяется как минимум среди поставок в клетках со знаком «-». Найденная поставка передвигается по циклу. При этом поставка в клетках цикла со знаком «+» увеличивается на y, а в клетках со знаком «-» уменьшается на y. Клетка, поставка в которой при этом станет равной нулю, будет считаться свободной, остальные клетки цикла – заполненными. Таким образом, получено новое базисное распределение поставок.

Шаг 6: перейди к третьему шагу алгоритма.

Алгоритм составления опорного плана методом северо-западного угла:

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

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

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

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

Пример №1

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

Таблица 2. Условие транспортной таблицы

Потребности

Запасы

 B1

B2

B3

B4

B5

170

140

200

195

145

A1

350

 22

 

 14

 

 16

 

 28

 

 30

 

 

 

 

 

 

 

 

 

 

 

A2

200

19

17

26

 

36

 

36

 

 

 

 

 

 

A3

300

37

30

31

 

39

 

41

 

 

 

 

 

 

 

 

 

 

 

Решение:

, следовательно, задача закрытого типа.

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

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

Шаг 1.

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

Итерация 1:

Начинаем с распределения запасов 1-го поставщика: A1=350>B1=170. В клетку (1,1) записываем сумму запроса первого потребителя x11 = min(350,170) = 170, при этом уменьшаем запас A1 и заказ В1 на эту сумму. Получаем: А1=350-170=180, В1=170-170=0. Весь заказ первого потребителя был выполнен, поэтому его столбец выходит из рассмотрения, т.е. все ячейки в этом столбике зачеркиваются (таблица 3).

Таблица 3. Метод северо-западного угла. Итерация 1

 Потребности

Запасы

B1

B2

B3

B4

B5

170/0

140

200

195

145

A1

350/

180

22

14

16

28

30

170

000

000

000

000

A2

200

19

17

26

36

36

A3

300

37

30

31

39

41

Итерация 2:

Переходим ко второму потребителю В2. A1=180>B2=140 записываем в клетку (1,2) x12 = min(180,140) = 140 сумму заказа второго потребителя 140, при этом уменьшаем запас A1 и заказ В2 на эту сумму. Получаем А1=180-140=40, В2=140-140=0. Весь заказ второго потребителя выполнен, поэтому его столбец выходит из рассмотрения (таблица 4).

Таблица 4. Метод северо-западного угла. Итерация 2

 Потребности

Запасы

B1

B2

B3

B4

B5

170/0

140/0

200

195

145

A1

350/

180/40

 22

 

 14

 

 16

 

 28

 

 30

 

 

 170

 

 140

 

 000

 

 000

 

 000

A2

200

19

17

26

 

36

 

36

 

 

 

 

 

 

A3

300

37

30

31

 

39

 

41

 

 

 

 

 

 

 

 

 

 

 

Итерация 3:

Переходим к третьему потребителю В3. A1=40<B3=200 записываем в клетку (1,3) x13 = min(40,200) = 40 оставшуюся сумму запаса первого поставщика, при этом уменьшаем запас A1 и заказ В3 на эту сумму. Получаем А1=40-40=0, В3=200-40=160. Запас первого поставщика исчерпан, поэтому его строка выходит из рассмотрения (таблица 5).

Таблица 5. Метод северо-западного угла. Итерация 3

 Потребности

Запасы

 B1

B2

B3

B4

B5

170/0

140/0

200/

160

195

145

A1

350/

180/40/0

 22

 

 14

 

 16

 

 28

 

 30

 

 

 170

 

 140

 

 40

 

 000

 

 000

A2

200

19

17

26

 

36

 

36

 

 

 

 

 

 

 A3

300

37

30

31

 

39

 

41

 

 

 

 

 

 

 

 

 

 

 

Итерация 4:

Переходим ко второму поставщику A2. A2=200>B3=160 записываем в клетку (2,3) x23=min(200,160)=160 сумму заказа третьего потребителя 160, при этом уменьшаем запас A2 и заказ В3 на эту сумму. Получаем А2=200-160=40, В3=160-160=0. Весь заказ второго потребителя выполнен, поэтому его столбец выходит из рассмотрения (таблица 6).

Таблица 6. Метод северо-западного угла. Итерация 4

 Потребности

Запасы

 B1

B2

B3

B4

B5

170/0

140/0

200/

160/0

195

145

A1

350/

180/40/0

 22

 

 14

 

 16

 

 28

 

 30

 

 

 170

 

 140

 

 40

 

 000

 

 000

A2

200/

40

19

17

26

 

36

 

36

 

 160

 

 

 

 

 A3

300

37

30

31

 

39

 

41

 

 

 

 

 

 

 

 

 

 

 

Итерация 5:

Переходим к четвертому потребителю В4. A2=40<B4=195 записываем в клетку (2,4) x24 = min(40,195) = 40 оставшуюся сумму запаса второго поставщика, при этом уменьшаем запас A2 и заказ В4 на эту сумму. Получаем А2=40-40=0, В4=195-40=155. Весь запас второго поставщика исчерпан, поэтому его строка выходит из рассмотрения (таблица 7).

Таблица 7. Метод северо-западного угла. Итерация 5

 Потребности

Запасы

 B1

B2

B3

B4

B5

170/0

140/0

200/

160/0

195/

155

145

A1

350/

180/40/0

 22

 

 14

 

 16

 

 28

 

 30

 

 

 170

 

 140

 

 40

 

 000

 

 000

A2

200/

40/0

19

17

26

 

36

 

36

 

 160

 

 40

 

 

 A3

300

37

30

31

 

39

 

41

 

 

 

 

 

 

 

 

 

 

 

Итерация 6:

Переходим к третьему поставщику A3. A3=300>B3=155 записываем в клетку (3,4) x34=min(300,155)=155 сумму заказа третьего потребителя 155, при этом уменьшаем запас A3 и заказ В4 на эту сумму. Получаем А3=300-155=145, В4=155-155=0. Весь заказ четвертого потребителя выполнен.

Таблица 7. Метод северо-западного угла. Итерация 6

 Потребности

Запасы

 B1

B2

B3

B4

B5

170/0

140/0

200/

160/0

195/

155/0

145

A1

350/

180/40/0

 22

 

 14

 

 16

 

 28

 

 30

 

 

 170

 

 140

 

 40

 

 

 

 000

A2

200/

40/0

19

17

26

 

36

 

36

 

 160

 

 40

 

 

A3

300/

145

37

30

31

 

39

 

41

 

 

 

 

 

 

 

 

 155

 

 

Итерация 7:

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

Таблица 8. Первоначальное распределение поставок

методом северо-западного угла. Итерация 7

 Потребности

Запасы

B1

B2

B3

B4

B5

170

140

200

195

145

A1

350

 22

 

 14

 

 16

 

 28

 

 30

 

 

 170

 

 140

 

 40

 

 

 

 

A2

200

19

17

26

 

36

 

36

 

 160

 

 40

 

 

A3

300

37

30

31

 

39

 

41

 

 

 

 

 

 

 

 

 155

 

 145

Шаг 2.

Проверяем вырожденность плана.

Число заполненных перевозками клеток = 7 и (m+n-1)=3+5-1=7. План невырожден.

Значение целевой функции для этого опорного плана равно:

.

Шаг 3.

Находим оптимальное распределение методом потенциалов.

Для этого расширим таблицу на 1 столбец для потенциала U, и на одну строку для потенциала V.

Проверим оптимальность опорного плана. Найдем предварительные потенциалы ui, vi. по занятым клеткам таблицы, в которых ui + vi = cij, полагая, что u1 = 0.

u1 + v1 = 22; 0 + v1 = 22; v1 = 22

u1 + v2 = 14; 0 + v2 = 14; v2 = 14

u1 + v3 = 16; 0 + v3 = 16; v3 = 16

u2 + v3 = 26; 16 + u2 = 26; u2 = 10

u2 + v4 = 36; 10 + v4 = 36; v4 = 26

u3 + v4 = 39; 26 + u3 = 39; u3 = 13

u3 + v5 = 41; 13 + v5 = 41; v5 = 28

Проставим потенциалы строк и столбцов ui и vj в расширенную транспортную таблицу (таблица 9).

Таблица 9. Расширенная таблица с потенциалами

 Потребности

Запасы

B1

B2

B3

B4

B5

U

170

140

200

195

145

A1

350

 22

 

 14

 

 16

 

 28

 

 30

 

u1 = 0

 

 170

 

 140

 

 40

 

 

 

 

A2

200

19

17

26

 

36

 

36

 

u2 = 10

 160

 

 40

 

 

A3

300

37

30

31

 

39

 

41

 

u3 = 13

 

 

 

 

 

 

 

 155

 

 145

V

v1 = 22

v2 = 14

v3 = 16

v4 = 26

v5 = 28

Опорный план не является оптимальным, так как существуют оценки свободных клеток, для которых ui + vi > cij

Составим матрицу оценок, вычитая из стоимости каждой клетки потенциалы строк и столбцов. aij= cij-ui - vj.

Матрица оценок:

A=

Т. к. в матрице оценок есть отрицательные коэффициенты, распределение поставок не оптимальное. Перераспределим поставку в клетку (2, 1), поскольку в ней максимальное по модулю отрицательная оценка. Построим цикл пересчёта.

Циклом называется такая последовательность клеток таблицы транспортной задачи (i1, j1),(i1, j2),(i2, j2),...,(ik, j1), в которой две и только две соседние клетки распложены в одной строке или столбце, причем первая и последняя клетки также находятся в одной строке или столбце. Примеры: На рисунке 1 изображены возможные варианты циклов пересчета, где:

*заполненные ячейки;

+ ячейка в которую нужно сделать поставку.

Это не единственные варианты, могут быть и другие циклы.

Рис.1. Схемы возможных циклов пересчёта

В нашем случае цикл будет выглядеть так:

 Потребности

Запасы

B1

B2

B3

B4

B5

170

140

200

195

145

A1

350

 22

 -

 14

 

 16

 +

 28

 

 30

 

 

 170

 

 140

 

 40

 

 

 

 

A2

200

19

+

17

26

 -

36

 

36

 

 160

 

 40

 

 

A3

300

37

30

31

 

39

 

41

 

 

 

 

 

 

 

 

 155

 

 145

В углах цикла проставим знаки «+» и «-» чередуя их. Начнем с выбранной клетки для поставки и со знака «+». Цикл приведен в таблице (2,1; 2,3; 1,3; 1,1).

Из грузов хij стоящих в минусовых клетках, выбираем наименьшее, т.е.:

.

Прибавляем 160 к объемам грузов, стоящих в плюсовых клетках и вычитаем 160 из хij, стоящих в минусовых клетках. Обратите внимание на то, что ячейка в которой ранее было число 160, теперь становится свободной . В результате получим новый опорный план (таблица 10).

Таблица 10. Новый опорный план ТЗ

 Потребности

Запасы

B1

B2

B3

B4

B5

170

140

200

195

145

A1

350

 22

 

 14

 

 16

 28

 

 30

 

 

 10

 

 140

 

 200

 

 

 

 

A2

200

19

17

26

 

36

 

36

 

160

 

 

 40

 

 

A3

300

37

30

31

 

39

 

41

 

 

 

 

 

 

 

 

 155

 

 145

Проверим оптимальность опорного плана. Найдем предварительные потенциалы ui, vi. по занятым клеткам таблицы, в которых ui + vi = cij, полагая, что u1 = 0.

u1 + v1 = 22; 0 + v1 = 22; v1 = 22

u2 + v1 = 19; 22 + u2 = 19; u2 = -3

u2 + v4 = 36; -3 + v4 = 36; v4 = 39

u3 + v4 = 39; 39 + u3 = 39; u3 = 0

u3 + v5 = 41; 0 + v5 = 41; v5 = 41

u1 + v2 = 14; 0 + v2 = 14; v2 = 14

u1 + v3 = 16; 0 + v3 = 16; v3 = 16

Рассчитываем матрицу оценок. Можно не пересчитывать всю матрицу оценок, а рассчитать только те значения, для которых ui + vi > cij:

(1;4): 0 + 39 > 28; a14 = 28 -0 - 39 = -11

(1;5): 0 + 41 > 30; a15 = 30 - 0 - 41 = -11

(2;5): -3 + 41 > 36; a25 = 36 - (-3) - 41 = -2

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

Выбираем максимальную по модулю оценку свободной клетки (1;4), хотя можно выбрать и свободную клетку (1;5). Построим цикл пересчета, для этого в перспективную клетку (1;4) поставим знак «+», а в остальных вершинах многоугольника (1,4; 1,1; 2,1; 2,4) чередующиеся знаки «-», «+», «-» (таблица 11).

Таблица 11. Цикл пересчета

 Потребности

Запасы

B1

B2

B3

B4

B5

U

170

140

200

195

145

A1

350

 22

 -

 14

 

 16

 28

 +

 30

 

u1 = 0

 

 10

 

 140

 

 200

 

 

 

 

A2

200

19

+

17

26

 

36

 -

36

 

u2 = -3

160

 

 

 40

 

 

A3

300

37

30

31

 

39

 

41

 

u3 = 0

 

 

 

 

 

 

 

 155

 

 145

V

v1 = 22

v2 = 14

v3 = 16

v4 = 39

v5 = 41

Из грузов хij стоящих в минусовых клетках, выбираем наименьшее, т.е. . Прибавляем 10 к объемам грузов, стоящих в плюсовых клетках и вычитаем 10 из Хij, стоящих в минусовых клетках. В результате получим новый опорный план (таблица 12).

Таблица 12. Новый опорный план ТЗ

 Потребности

Запасы

B1

B2

B3

B4

B5

170

140

200

195

145

A1

350

 22

 

 14

 

 16

 28

 

 30

 

 

 

 

 140

 

 200

 

 10

 

 

A2

200

19

17

26

 

36

 

36

 

170

 

 

 30

 

 

A3

300

37

30

31

 

39

 

41

 

 

 

 

 

 

 

 

 155

 

 145

Проверим оптимальность опорного плана. Найдем предварительные потенциалы ui, vi. по занятым клеткам таблицы, в которых ui + vi = cij, полагая, что u1 = 0.

u1 + v2 = 14; 0 + v2 = 14; v2 = 14

u1 + v3 = 16; 0 + v3 = 16; v3 = 16

u1 + v4 = 28; 0 + v4 = 28; v4 = 28

u2 + v4 = 36; 28 + u2 = 36; u2 = 8

u2 + v1 = 19; 8 + v1 = 19; v1 = 11

u3 + v4 = 39; 28 + u3 = 39; u3 = 11

u3 + v5 = 41; 11 + v5 = 41; v5 = 30

Опорный план не является оптимальным, так как существуют оценки свободных клеток, для которых ui + vi > cij

(2;2): 8 + 14 > 17; a22 = 17-8 - 14 = -5

(2;5): 8 + 30 > 36; a25 = 36-8 - 30 = -2

Выбираем максимальную по модулю оценку свободной клетки (2;2).

Построим цикл пересчета, для этого в перспективную клетку (2;2) поставим знак «+», а в остальных вершинах многоугольника (2,2; 2,4; 1,4; 1,2 )чередующиеся знаки «-», «+», «-» (таблица 13).

Таблица 13. Цикл пересчета

 Потребности

Запасы

B1

B2

B3

B4

B5

170

140

200

195

145

A1

350

 22

 

 14

 -

 16

 28

 +

 30

 

 

 

 

 140

 

 200

 

 10

 

 

A2

200

19

17

+

26

 

36

 -

36

 

170

 

 

 30

 

 

A3

300

37

30

31

 

39

 

41

 

 

 

 

 

 

 

 

 155

 

 145

Из грузов хij стоящих в минусовых клетках, выбираем наименьшее, т.е. . Прибавляем 30 к объемам грузов, стоящих в плюсовых клетках и вычитаем 30 из Хij, стоящих в минусовых клетках. В результате получим новый опорный план (таблица 14).

Таблица 14. Новый опорный план ТЗ

 Потребности

Запасы

B1

B2

B3

B4

B5

170

140

200

195

145

A1

350

 22

 

 14

 

 16

 28

 

 30

 

 

 

 

 110

 

 200

 

 40

 

 

A2

200

19

17

26

 

36

 

36

 

170

30

 

 

 

 

 

A3

300

37

30

31

 

39

 

41

 

 

 

 

 

 

 

 

 155

 

 145

Проверим оптимальность опорного плана. Найдем предварительные потенциалы ui, vi. по занятым клеткам таблицы, в которых ui + vi = cij, полагая, что u1 = 0.

u1 + v2 = 14; 0 + v2 = 14; v2 = 14

u2 + v2 = 17; 14 + u2 = 17; u2 = 3

u2 + v1 = 19; 3 + v1 = 19; v1 = 16

u1 + v3 = 16; 0 + v3 = 16; v3 = 16

u1 + v4 = 28; 0 + v4 = 28; v4 = 28

u3 + v4 = 39; 28 + u3 = 39; u3 = 11

u3 + v5 = 41; 11 + v5 = 41; v5 = 30

Опорный план является оптимальным (таблица 14), так все оценки свободных клеток удовлетворяют условию ui + vi <= cij.

Минимальные затраты составят:

.