Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭММ_Часть2_печать.doc
Скачиваний:
64
Добавлен:
03.09.2019
Размер:
5.35 Mб
Скачать

2.2.Дельта-метод решения транспортной задачи

При составлении плана перевозок с помощью транспортной задачи линейного программирования большое значение имеет время, затраченное на ее решение. Применение метода двойного предпочтения и метода МОДИ для решения транспортной задачи с 10 - 15 поставщиками и 15 - 20 потребителями требует 4 - 5 часов непрерывных вычислений. Это происходит потому, что существующие методы составления первоначального опорного плана позволяют получить план, далекий от оптимального. Как показала практика, использование дельта-метода совместно с методом МОДИ дает возможность найти оптимальный план в 3 - 4 раза быстрее, причем, чем больше размер таблицы, тем ощутимее разница во времени. Это объясняется тем, что в результате применения дельта-метода всегда находится оптимальный план. Если построенный план оказался неоптимальным, то это произошло только в результате допущенных в процессе построения плана ошибок.

Алгоритм метода:

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

  2. Таблицу преобразуем в таблицу , выбирая в каждой строке наименьшее приращение и вычитая его из всех приращений строки; результаты записываем под значениями . Если в какой-нибудь строке уже имеется уже нулевое приращение после первого преобразования, то в этой строке приращения оставляем без изменения и преобразуем приращения строк, не содержащих нулевых приращений.

  3. Просматриваем столбцы, содержащие одно нулевое приращение, и в клетки, содержащие его, записываем потребности bj, не обращая внимания на величину запасов поставщиков. Затем просматриваем столбцы, содержащие два нулевых приращения, и клетки, содержащие их, заполняем, учитывая ранее произведенное закрепление и запасы поставщиков. Затем переходим к столбцам, содержащим 3, 4, и так далее нулевых приращений. Процесс закрепления потребителей за поставщиками продолжается до тех пор, пока все объемы потребителей не будут закреплены за поставщиками.

  4. Подсчитываем для строк

i=1,2,..,m.

(2.8)

Если все , то построение плана закончено. Он же является оптимальным, т.к. все грузы перевозятся с наименьшими приращениями стоимостей.

В общем случае получаем:

а) для одних строк , они называются нулевыми.

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

в) для третьих , такие строки называются недостаточными и отмечаются знаком ˝+˝.

  1. Отмечаем знаком ˝V˝ столбцы, имеющие занятые клетки в избыточных строках.

  2. Для каждой недостаточной и нулевой строки сравниваем , стоящие в отмеченных столбцах, выбираем наименьшее и проставляем в последнюю графу таблицы.

  3. В последней графе просматриваем недостаточных строк, выбираем наименьшее и сравниваем его с Сi0j для нулевых строк. При этом может быть два случая:

а) для каждой нулевой строки

(2.9)

б) для некоторых нулевых строк

(2.10)

  1. Если выполняется условие (2.9), то производится непосредственное распределение потребности из избыточной строки в недостаточную клетку отмеченного столбца, которой соответствует . Величина перераспределения находится по формуле (2.11).

,

(2.11)

где - величина перевозки, стоящая в отмеченном столбце избыточной строки; r - величина разностей, стоящих в избыточной и недостаточной строках.

  1. Если для некоторой нулевой строки выполняется условие (2.10), то перераспределение проверяем по цепочкам, идущим через эту нулевую строку из избыточной строки в недостаточную. Для построения цепочки в этой нулевой строке в отмеченном столбце находим клетку, для которой , и отмечаем ее знаком ˝+˝, в том же столбце находим занятую клетку, стоящую в избыточной строке, и отмечаем ее знаком ˝˝ – это начало цепочки. Начиная движение по построенному звену цепочки от ˝˝ к ˝+˝ попадаем в нулевую строку, затем передвигаемся по нулевой строке к занятой клетке и отмечаем ее знаком ˝˝, далее по столбцу переходим в клетку недостаточной строки и отмечаем ее знаком ˝+˝. Цепочка построена, если матрица содержит большое число нулевых строк, то цепочки перераспределения могут проходить через несколько нулевых строк и их количество значительно возрастает, поэтому руководствуемся следующим правилом: При переходе из одной нулевой стоки в другую определяем полученную сумму приращений и сравниваем ее с минимумом приращений в выделенных столбцах данной строки. Если полученная сумма превышает этот минимум, то продолжение цепочки по данной строке не рассматриваем. Очевидно также, что если сумма приращений, полученная при переходе в недостаточную строку, меньше, чем при переходе в нулевую строку.

  2. Составляем для каждой цепочки алгебраическую сумму приращений , считая их отрицательными, если они стоят в клетке, отмеченной знаком ˝˝, и положительными, если клетка отмечена знаком ˝+˝. Полученную сумму сравниваем с :

а) если для всех построенных цепочек, то отбрасываем их и производим непосредственное перераспределение;

б) если , то перераспределение по цепочке рассчитывается по формуле (2.12).

,

(2.12)

где - числа, указывающие на перевозки, которые стоят в клетках, отмеченных знаком ˝˝, 1 к m, 1 p n; - разности, стоящие в избыточной и недостаточной сроках, в которых начинается и заканчивается цепочка, 1 r m. Следуя по цепочке, вычитаем величину перераспределения из чисел, помещенных в клетках, отмеченных знаком ˝˝, и прибавляем к числам, которые стоят в клетках, помеченных знаком ˝+˝, на эту же величину изменяем . В результате получаем новое закрепление потребителей за поставщиками.

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

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

Алгоритм дельта - метода рассмотрим на примере транспортной задачи, записанной в таблице 25.

Таблица 25

Поставщики

Ui

Vj

Потребители

ai

ai

отмеченных столбцов

В1

В2

В3

В4

В5

В6

V

V

А1

10

0

19

8

17

10

18

1

16

1

21

5

450

+

250

8

200

А2

13

3

14

3

11

4

17

0

18

3

19

3

400

+

300

3

100

А3

Ө

15

5

11

0

7

0

19

2

19

4

22

6

150

550

300

400

А4

14

4

3

13

2

1

12

5

4

18

1

0

21

6

5

23

7

6

150

0

1

150

А5

21

11

23

12

10

3

20

3

15

0

16

0

250

0

3

150

100

bj

200

300

400

250

150

100

1400

В таблице 25 при переходе к матрице (п. 2 алгоритма) преобразованию подлежит строка А4, где . Появившиеся в таблице нули указывают на наименьшие приращения стоимостей по отношению к наименьшим стоимостям, выбранным в столбцах.

Согласно п. 3 алгоритма, в таблице 25 в столбцах В1, В2, В3, В5 и В6 по одной клетке с нулевыми приращениями, записываем в эти клетки потребности соответствующих потребителей. В столбце В4 два нулевых приращения, стоящие в клетках А2В4 и А4В4. За поставщиком А4 следует закрепить 150 ед. потребностей, а за поставщиком А2 – 400 ед. Имеется же всего 250 ед., поэтому планируем полное удовлетворение поставщика А4 и 100 ед. закрепляем за поставщиком А2. В результате получено первоначальное закрепление потребителей за поставщиками по нулевым приращениям стоимостей.

В рассматриваемом примере находим (п. 4 алгоритма) a= 450  200, a= 400  100 = 300, a3  = 150  700 = 550, a= 150  150 = 0, a= 250  250 = 0, т.е. А4 и А5 нулевые строки.

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

Так как a1, a2, а3 не равны нулю, то первоначальное закрепление не является планом. Чтобы получить план, необходимы избыточные 550 ед. потребностей, закрепленных за поставщиком А3, закрепить за поставщиками А1 и А2 соответственно в количестве 250 и 300 ед.

В первоначальном закреплении потребности распределены по нулевым приращениям, поэтому дальнейшее их перезакрепление связано с увеличением суммарной стоимости планируемых перевозок. Необходимо 550 ед. потребностей перезакрепить за поставщиками А1 и А2 таким образом, чтобы получить при этом минимальное приращение стоимости на единицу перезакрепленных потребностей. Для этого выполняем следующие операции. В табл. 25 отмечаем ˝V˝ столбцы В2 и В3 (п. 5 алгоритма).

Находим отмеченных столбцов (п. 6 алгоритма):

для недостаточной строки А1

min(8;10)=8;

для недостаточной строки А2

min(3;4)= 3;

для нулевой строки А4

min(1;4)= 1;

для нулевой строки А5

min(12;3)= 3.

Эти значения показывают какое приращение стоимости на данном шаге будет получено, если единицу потребности непосредственно перезакрепить от поставщика А3 соответственно к поставщикам А1, А2, А4, А5.

Записываем полученные значения в табл. 25 в последней графе. Находим для недостаточных строк . Сравниваем это значение с Сij нулевых строк. Для нулевой строки А4 выполняется условие (2.10) п. 7 алгоритма, поэтому перераспределение проводим по цепочке. Для построения цепочки находим в строке А4 приращение  С42=1, стоящее в отмеченном столбце, и эту клетку отмечаем знаком ˝+˝, в столбце В2 находим занятую клетку А3В2, которая находится в избыточной строке, и отмечаем ее знаком ˝˝. Начинаем движение по звену цепочки А3В22А4 и приходим в нулевую строку А4, находим в ней занятую клетку А4В4 и отмечаем ее знаком ˝˝, затем по столбцу В4 переходим в клетку недостаточной строки. В данном случае цепочку можно окончить в двух клетках (А4В4 и А2В4), которые и отмечаем знаками ˝+˝. Получены две цепочки: А3В2В2А4 А4В4 В4А1 и А3В2 В2А4 А4В4 В4А2. Подсчитаем по цепочкам сумму приращений: (для первой цепочки). (для второй цепочки).

Для обеих цепочек сумма меньше трех, следовательно обе они годятся. Для перераспределения выбираем вторую цепочку, так как для нее сумма приращения меньше (1<2). Определяем величину перераспределения: min(300;150;550;300)=150.

Двигаясь по цепочке, перераспределяем 150 ед., затем а2 и а3 изменяем на то же число. В результате получим новое закрепление, приведенное в табл. 26. После первой итерации количество отмеченных столбцов и недостаточных строк осталось без изменения, поэтому как и прежде, min  Сij=3 и для строки А4 имеем 1<3.Проверяем перераспределение по цепочке, которая начинается в клетке А2В2 и проходит через клетку А4В2 нулевой строки А4. Но из клетки А4В2 движение по нулевой строке А4 продолжить невозможно, так как в ней нет других занятых клеток. Для нулевой строки А5 имеем min Cij=Ci0j=3, поэтому производим непосредственное перезакрепление из строки А3 в клетку А2В2, в которой теперь находится min .

Определяем теперь величину перераспределения min (150;400;150)=150 и производим его, внося изменения в табл. 26.

Таблица 26

Поставщики

Ui

Vj

Потребители

ai

ai

отмеченных столбцов

В1

В2

В3

В4

В5

В6

V

V

А1

10

0

19

8

17

10

18

1

16

1

21

5

450

+

250

8

200

А2

13

3

14

3

11

4

17

0

18

3

19

3

400

+

150

3

250

А3

15

5

11

0

7

0

19

2

19

4

22

6

150

400

150

400

А4

14

4

3

13

2

1

12

5

4

18

1

0

21

6

5

23

7

6

150

0

1

150

А5

21

11

23

12

10

3

20

3

15

0

16

0

250

0

3

150

100

bj

200

300

400

250

150

100

1400

В результате получаем новое закрепление, приведенное в табл. 27.

В результате перераспределения клетка А3В2 стала свободной, столбец В2 выбыл из отмеченных, строка стала нулевой. Подсчитываем min в отмеченных столбцах для избыточных и нулевых строк и помещаем эти значения в последнюю графу табл. 27. Находим для недостаточных строк min =10. Любое из значений , стоящих в нулевых строках, меньше десяти, поэтому возможность перераспределения по цепочкам надо проверить для всех нулевых строк. Проверку начинаем с нулевой строки А5, так как ей соответствует min =3. Клетку А5В3, отмечаем знаком ˝+˝ и строим цепочку из клетки А3В3, отмечая ее знаком ˝˝. В строке А5 две занятые клетки, поэтому строим через каждую из них цепочки и составляем сумму приращений:

Для цепочки А3В3В3А5А5В5В5А1 сумма приращений -0+3-0+1=4

Для цепочки А3В33А5А5В6В6А1 сумма приращений -0+3-0+5=8

Таблица 27

Поставщики

Ui

Vj

Потребители

ai

ai

отмеченных столбцов

В1

В2

В3

В4

В5

В6

V

А1

10

0

19

8

17

10

18

1

16

1

21

5

450

+

250

10

200

А2

13

3

14

3

11

4

17

0

18

3

19

3

400

0

4

150

250

А3

15

5

Ө

11

0

7

0

19

2

19

4

22

6

150

250

400

А4

14

4

3

13

2

1

12

5

4

18

1

0

21

6

5

23

7

6

150

0

4

150

А5

21

11

23

12

10

3

Ө

20

3

15

0

16

0

250

0

3

150

100

bj

200

300

400

250

150

100

1400

Так как для первой цепочки сумма приращений равна четырем и в остальных нулевых строках Сi0j =4, то проверять возможность перераспределения через них нецелесообразно. Перераспределение min (400,150,250) = 150 производим по первой цепочке и в результате получаем табл. 28.

Таблица 28

Поставщики

Ui

Vj

Потребители

ai

ai

отмеченных столбцов

В1

В2

В3

В4

В5

В6

V

А1

10

0

19

8

17

10

18

1

16

1

21

5

450

+

100

10

200

150

А2

13

3

14

3

Ө

11

4

17

0

18

3

19

3

400

0

4

150

250

А3

15

5

Ө

11

0

7

0

19

2

19

4

22

6

150

100

250

А4

14

4

3

13

2

1

12

5

4

18

1

0

21

6

5

23

7

6

150

0

4

150

А5

21

11

23

12

10

3

20

3

15

0

16

0

250

0

3

150

100

bj

200

300

400

250

150

100

1400

В табл. 28 построение цепочек начинаем с клетки А5В5 нулевой строки А5. Для цепочек:

А3В3В3А5А5В6В6А1 сумма приращений -0+3-0+5=8;

А3В3В3А5А5В6В6А2А2В4В4А1 сумма приращений =-0+3-0+3-0+1=8.

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

Для строки А2

А3В3В3А2А2В4В4А1, -0+4-0+1=5;

А3В3В3А2А2В2В2А1, -0+4-3+8 = 9.

Для строки А4

А3В3В3А4А4В2В2А1, -0+4-1+8=11;

А3В3В3А4А4В2В2А2А2В4В4А1, -0+4-1+3-0+1 = 7.

Перераспределение min(250;250;100;100)=100 производим по третьей цепочке. В результате получаем табл. 29, в которой все строки преобразованы в нулевые. Следовательно, в результате последней итерации получен оптимальный план. Построенная система потенциалов показывает, что этот план является оптимальным.

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

Таблица 29

Поставщики

Ui

Vj

Потребители

ai

ai

отмеченных столбцов

В1

В2

В3

В4

В5

В6

V

А1

10

0

19

8

17

10

18

1

16

1

21

5

450

+

100

10

200

150

А2

13

3

14

3

Ө

11

4

17

0

18

3

19

3

400

0

4

150

250

А3

15

5

Ө

11

0

7

0

19

2

19

4

22

6

150

100

250

А4

14

4

3

13

2

1

12

5

4

18

1

0

21

6

5

23

7

6

150

0

4

150

А5

21

11

23

12

10

3

20

3

15

0

16

0

250

0

3

150

100

bj

200

300

400

250

150

100

1400

Для того, чтобы нулевые стоимости фиктивных перевозок не привели к увеличению вычислений при преобразовании таблицы Сij в таблицу Сij, минимальные стоимости в столбцах отыскивают среди стоимостей реальных поставщиков и потребителей. При этом отрицательные приращения, имеющие место для фиктивного поставщика, преобразуют в положительные при переходе к таблице . Для фиктивного потребителя отрицательные приращения получаем при переходе к таблице , а затем преобразуем их в положительные, вычитая из этих приращений наименьшее отрицательное приращение по столбцу фиктивного потребителя. Решение транспортной задачи с фиктивным потребителем рассмотрено в таблице 30.

Таблица 30

Поставщики

Ui

Vj

Потребители

ai

В1

В2

В3

В4

В5

В6

В6

Вn+1

19

24

20

19

20

20

18

‑1

А1

0

19

6

2

24

9

5

26

9

5

28

10

6

30

16

12

22

4

0

185

1

0

-4

0

450

250

200

А2

1

31

18

15

29

14

11

27

10

7

25

7

4

23

9

6

213 0

196

3

0

-3

1

450

300

150

0

А3

-9

25

12

15

0

17

0

22

4

24

10

18

0

13

0

0

4

300

300

А4

1

28

15

13

25

10

8

21

4

2

20

2

0

23

9

7

27

9

7

29

16

14

0

-2

2

400

50

50

150

150

А5

-6

13

0

20

5

27

10

18

0

14

0

30

12

24

11

0

4

350

150

200

bj

400

350

50

150

200

300

350

150

1950