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

Задание лп-6

Решить транспортную задачу методом потенциалов. Первоначальный план составить методами северо-западного угла и наименьших затрат:

bj

ai

40

60

50

50

50

6

3

4

4

60

3

4

5

3

90

4

4

6

5

30

3

5

3

6

Решение. Алгоритм метода потенциалов  следующий:

1) Построить первоначальный опорный план.

2) Проверить план на оптимальность. Для этого:

2.1) Вычислить потенциалы ui (i=1, 2, …, m) и vj (j=1, 2, …, n).

2.2) Проверить условие оптимальности ui+vj=cij (i=1, 2, …, m, j=1, 2, …, n). Если критерий оптимальности не выполнен, то перейти к пункту 3). В противном случае задача решена. Перейти к пункту 5).

3) Перейти к очередному опорному плану. Для этого:

3.1) Найти оценки ij=ui+vjcij для клеток (i, j) ui+vj>cij.

3.2) Выбрать клетку с максимальным ij>0.

3.3) Из выбранной клетки построить помеченный цикл.

3.4) Осуществить сдвиг по циклу.

4) Перейти к пункту 2).

5) Вычислить стоимость перевозок.

Алгоритм применяется, вообще говоря, к задаче закрытого типа. Если задача является задачей закрытого типа, то её необходимо привести к задаче закрытого типа.

Имеем =50+60+90+30=230 и =40+60+50+50=200, то есть  . При этом > , то есть у поставщиков имеется излишки груза, и задача является задачей открытого типа. Сведём её к задаче закрытого типа, вводя фиктивного потребителя с b5=  =30 единицами груза и нулевыми стоимостями перевозок:

bj

ai

40

60

50

50

30

50

6

3

4

4

0

60

3

4

5

3

0

90

4

4

6

5

0

30

3

5

3

6

0

А) Решим задачу, составив первоначальный опорный план методом северо-западного угла. Итак, реализуем алгоритм:

1) Построим первоначальный опорный план.

У первого поставщика имеется 50 единиц груза, а первому потребителю нужно 40 единиц. Поэтому можем спланировать перевозку 40 единиц груза от первого поставщика к первому потребителю: вписываем в клетку (1, 1) 40 и как бы вычёркиваем первого потребителя  он «получил своё» и в дальнейшем распределении груза не участвует: ставим знак «» над первым столбцом:

bj

ai

40

60

50

50

30

50

6

40

3

4

4

0

60

3

4

5

3

0

90

4

4

6

5

0

30

3

5

3

6

0

У первого поставщика осталось 10 единиц груза, а второму потребителю всего нужно 60. Поэтому вписываем эти 10 единиц в клетку (1, 2), вычеркнув первую строку (у первого поставщика все 50 единиц груза использованы, и он выбывает из дальнейшего распределения поставок):

bj

ai

40

60

50

50

30

50

6

40

3

10

4

4

0

60

3

4

5

3

0

90

4

4

6

5

0

30

3

5

3

6

0

Второму потребителю требуется ещё 50 единиц, которые мы «заберём» у второго поставщика (у него их имеется 60 единиц): вписываем 50 в клетку (2, 2) и вычеркнем второй столбец:

bj

ai

40

60

50

50

30

50

6

40

3

10

4

4

0

60

3

4

50

5

3

0

90

4

4

6

5

0

30

3

5

3

6

0

У второго поставщика осталось ещё 10 единиц груза, а третьему потребителю требуется 50 единиц. Вписав эти 10 единиц в клетку (2, 3) вычёркиваем второго поставщика:

bj

ai

40

60

50

50

30

50

6

40

3

10

4

4

0

60

3

4

50

5

10

3

0

90

4

4

6

5

0

30

3

5

3

6

0

Аналогично рассуждая, заполняем клетки (3, 3) и (3, 4) соответственно 40 и 50 единицами грузов. При этом при заполнении клетки (3, 3) выбывает только один участник  третий потребитель (соответственно, его вычёркиваем), а при заполнении клетки (3, 4) фактически выбывают сразу два участника  третий поставщик и четвёртый потребитель, но вычеркивать должны только одного участника, скажем, третьего поставщика. Вычёркивание на одном шаге только одного участника обеспечивает участие второго в следующем шаге заполнения таблицы, и в результате будет заполнено в точности m+n1 клеток:

bj

ai

40

60

50

50

30

50

6

40

3

10

4

4

0

60

3

4

50

5

10

3

0

90

4

4

6

40

5

50

0

30

3

5

3

6

0

Так как четвёртый потребитель ещё не вычеркнут, то вписываем 0 в клетку (4, 4) и вычёркиваем четвёртого потребителя:

bj

ai

40

60

50

50

30

50

6

40

3

10

4

4

0

60

3

4

50

5

10

3

0

90

4

4

6

40

5

50

0

30

3

5

3

6

0

0

Наконец, на последнем, 4+51=8-м шаге, вписываем 30 в клетку (4, 5) и вычёркиваем обоих участников  четвёртого поставщика и пятого потребителя, и получили первоначальный опорный план задачи:

bj

ai

40

60

50

50

30

50

6

40

3

10

4

4

0

60

3

4

50

5

10

3

0

90

4

4

6

40

5

50

0

30

3

5

3

6

0

0

30

21) Проверим план на оптимальность. Для этого

2.11) Найдём потенциалы:

bj

ai

40

60

50

50

30

50

6

40

3

10

4

4

0

0

60

3

4

50

5

10

3

0

1

90

4

4

6

40

5

50

0

2

30

3

5

3

6

0

0

30

3

6

3

4

3

3

Присваиваем u1=0 и по заполненным клеткам (1, 1) и (1, 2) первой строки определяем v1=c11u1=60=6 и v2=c12u1=30=3. По заполненной клетке (2, 2) второго столбца определяем u2=c22v2=43=1. Далее, по заполненной клетке (2, 3) второй строки определяем v3=c23u2=51=4. Теперь по заполненной клетке (3, 3) третьей строки определяем u3=c33v3=64=2, а по заполненной клетке (3, 4) третьей строки определяем v4=c34u3=52=3. Наконец, по заполненным клеткам (4, 4) и (4, 5) четвёртой строки определяем сначала u4=c44v4=63=3, а затем v5=c45u4=03=3.

2.21) Проверяем условие оптимальности для пустых клеток:

u1+v3=0+44=c13, u1+v4=0+34=c13, u1+v5=03<0=c15,

u2+v1=1+6>3=c21, u2+v4=1+3>3=c24, u2+v5=13<0=c25,

u3+v1=2+6>4=c31, u3+v2=2+3>4=c22, u3+v5=23<0=c35,

u4+v1=3+6>3=c41, u4+v2=3+3>5=c42, u4+v3=3+4>3=c43,

и условие оптимальности нарушается в клетках (2, 1), (2, 4), (3, 1), (3, 2), (4, 1), (4, 2) и (4, 3): u2+v1>c21, u2+v4>c24, u3+v1>c31, u3+v2>c22, u4+v1>c41, u4+v2>c42, u4+v3>c43.

3.11) Вычисляем оценки клеток, в которых нарушается условие оптимальности:

21=u2+v1c21=1+63=4, 24=u2+v4c24=3+13=1,

31=u3+v1c31=2+64=4, 32=u3+v2c32=2+34=1,

41=u4+v1c41=3+63=6, 42=u4+v2c42=3+35=1,

43=u4+v3c43=3+43=4.

Для удобства работы вписываем эти оценки в квадратных скобках в нижних правых углах клеток:

bj

ai

40

60

50

50

30

50

6

40

3

10

4

4

0

0

60

3

[4]

4

50

5

10

3

[1]

0

1

90

4

[4]

4

[1]

6

40

5

50

0

2

30

3

[6]

5

[1]

3

[4]

6

0

0

30

3

6

3

4

3

3

3.21) Выбираем клетку с максимальным ij>0  клетка (4, 1): 41=6.

3.31) Строим помеченный цикл из выбранной клетки (4, 1):

bj

ai

40

60

50

50

30

50

6

Группа 13 40

3

10

+

4

4

0

0

60

3

[4]

4

50

Прямая соединительная линия 11

5

10

+

3

[1]

0

1

90

4

[4]

4

[1]

6

40

5

50

+

0

2

30

3

+ [6]

5

[1]

3

[4]

6

0

0

30

3

6

3

4

3

3

3.41) «Перемещаем» по циклу 0 единиц груза (минимальное содержание клеток со знаком «»). Получили очередной опорный план (фактически тот же, что и предыдущий, но с другой системой заполненных клеток):

bj

ai

40

60

50

50

30

50

6

40

3

10

4

4

0

60

3

4

50

5

10

3

0

90

4

4

6

40

5

50

0

30

3

0

5

3

6

0

30

22) Проверим план на оптимальность. Для этого

2.12) Найдём потенциалы. Присваиваем u1=0 и по заполненным клеткам (1, 1) и (1, 2) первой строки определяем v1=c11u1=60=6 и v2=c12u1=30=3. По заполненной клетке (2, 2) второго столбца определяем u2=c22v2=43=1. Далее, по заполненной клетке (2, 3) второй строки определяем v3=c23u2=51=4. Теперь по заполненной клетке (3, 3) третьей строки определяем u3=c33v3=64=2, а по заполненной клетке (3, 4) третьей строки определяем v4=c34u3=52=3. Наконец, по заполненным клеткам (4, 1) и (4, 5) четвёртой строки определяем сначала u4=c41v4=36=3, а затем v5=c45u4=0(3)=3:

bj

ai

40

60

50

50

30

50

6

40

3

10

4

4

0

0

60

3

4

50

5

10

3

0

1

90

4

4

6

40

5

50

0

2

30

3

0

5

3

6

0

30

3

6

3

4

3

3

2.22) Проверяем условие оптимальности для пустых клеток:

u1+v3=0+44=c13, u1+v4=0+34=c13, u1+v5=0+3>0=c15,

u2+v1=1+6>3=c21, u2+v4=1+3>3=c24, u2+v5=1+3>0=c25,

u3+v1=2+6>4=c31, u3+v2=2+3>4=c22, u3+v5=2+3>0=c35,

u4+v2=3+35=c42, u4+v3=3+43=c43, u4+v4=3+36=c43,

и условие оптимальности нарушается в клетках (1, 5), (2, 1), (2, 4), (2, 5), (3, 1), (3, 2), (3, 5): u1+v5>c15, u2+v1>c21, u2+v4>c24, u2+v5>c25, u3+v1>c31, u3+v2>c32, u3+v5>c35.

3.12) Вычисляем оценки клеток, в которых нарушается условие оптимальности:

15=u1+v5c15=0+30=3, 21=u2+v1c21=1+63=4,

24=u2+v4c24=3+13=1, 25=u2+v5c25=1+30=4,

31=u3+v1c31=2+64=4, 32=u3+v2c32=2+34=1,

35=u3+v5c35=2+30=5.

3.22) Выбираем клетку с максимальным ij>0  клетка (3, 5): 35=5.

3.32) Строим помеченный цикл из выбранной клетки (3, 5):

bj

ai

40

60

50

50

30

50

6

40

Прямая соединительная линия 14 Группа 22

3

10

+

4

4

0

[3]

0

60

3

[4]

4

50

5

10

+

3

[1]

0

[4]

1

90

4

[4]

4

[1]

6

40

5

50

0

+ [5]

2

30

3

0

+

5

3

6

0

30

3

6

3

4

3

3

3.42) «Перемещаем» по циклу 30 единиц груза (минимальное содержание клеток со знаком «»). Получили очередной опорный план:

bj

ai

40

60

50

50

30

50

6

10

3

40

4

4

0

60

3

4

20

5

40

3

0

90

4

4

6

10

5

50

0

30

30

3

30

5

3

6

0

2.13) Найдём потенциалы, приведя только вычисления без комментариев: u1=0, v1=c11u1=60=6, v2=c12u1=30=3, u2=c22v2=43=1, v3=c23u2=51=4, u3=c33v3=64=2, v4=c34u3=52=3, u4=c41v4=36=3, v5=c35u3=02=2:

bj

ai

40

60

50

50

30

50

6

10

3

40

4

4

0

0

60

3

4

20

5

40

3

0

1

90

4

4

6

10

5

50

0

30

2

30

3

30

5

3

6

0

3

6

3

4

3

2

2.23) Проверяем условие оптимальности для пустых клеток:

u1+v3=0+44=c13, u1+v4=0+34=c13, u1+v5=02<0=c15,

u2+v1=1+6>3=c21, u2+v4=1+3>3=c24, u2+v5=12<0=c25,

u3+v1=2+6>4=c31, u3+v2=2+3>4=c22, u4+v2=3+35=c42,

u4+v3=3+43=c43, u4+v4=3+36=c44, u4+v5=320=c45,

и условие оптимальности нарушается в клетках (2, 1), (2, 4), (3, 1), (3, 2): u2+v1>c21, u2+v4>c24, u3+v1>c31, u3+v2>c32.

3.13) Вычисляем оценки клеток, в которых нарушается условие оптимальности: 21=u2+v1c21=1+63=4, 24=u2+v4c24=3+13=1, 31=u3+v1c31=2+64=4, 32=u3+v2c32=2+34=1.

3.23) Выбираем клетку с максимальным ij>0. На этот раз таких клеток два: клетки (2, 1) и (3, 1): 21=31=4. Выберем клетку с наименьшей стоимостью перевозок: (2, 1).

3.33) Строим помеченный цикл из выбранной клетки (3, 5):

bj

ai

40

60

50

50

30

50

Группа 27 6

10

3

40

+

4

4

0

0

60

Прямая соединительная линия 25 3

+ [4]

4

20

5

40

3

[1]

0

1

90

4

[4]

4

[1]

6

10

5

50

0

30

2

30

3

30

5

3

6

0

3

6

3

4

3

2

3.43) «Перемещаем» по циклу 10 единиц груза (минимальное содержание клеток со знаком «»). Получили очередной опорный план:

bj

ai

40

60

50

50

30

50

6

3

50

4

4

0

60

3

10

4

10

5

40

3

0

90

4

4

6

10

5

50

0

30

30

3

30

5

3

6

0

2.14) Находим потенциалы, опуская вычисления и комментарии:

bj

ai

40

60

50

50

30

50

6

3

50

4

4

0

0

60

3

10

4

10

5

40

3

0

1

90

4

4

6

10

5

50

0

30

2

30

3

30

5

3

6

0

1

2

3

4

3

2

2.24)  3.13) Проверяем условие оптимальности для пустых клеток и вычисляем оценки клеток, в которых нарушается условие оптимальности, опуская подробности:

bj

ai

40

60

50

50

30

50

6

3

50

4

4

0

0

60

3

10

4

10

5

40

3

[1]

0

1

90

4

4

[1]

6

10

5

50

0

30

2

30

3

30

5

3

[2]

6

0

1

2

3

4

3

2

3.24)  3.33) Выбираем клетку с максимальным ij>0 и строим помеченный цикл из выбранной клетки (4, 3):

bj

ai

40

60

50

50

30

50

6

3

50

4

4

0

0

60

3

Группа 224 10

+

4

10

5

40

3

[1]

0

1

90

4

4

[1]

6

10

5

50

0

30

2

30

3

Прямая соединительная линия 30 30

5

3

+ [2]

6

0

1

2

3

4

3

2

3.44) «Перемещаем» по циклу 30 единиц груза (минимальное содержание клеток со знаком «»). Получили очередной опорный план:

bj

ai

40

60

50

50

30

50

6

3

50

4

4

0

60

3

40

4

10

5

10

3

0

90

4

4

6

10

5

50

0

30

30

3

5

3

30

6

0

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

2.15)  3.45):

bj

ai

40

60

50

50

30

50

6

3

50

4

4

0

0

60

3

40

4

10

5

Группа 229 10

3

+ [1]

0

1

90

4

4

[1]

6

Прямая соединительная линия 227 10

+

5

50

0

30

2

30

3

5

3

30

6

0

1

2

3

4

3

2

2.16)  3.46):

bj

ai

40

60

50

50

30

50

6

3

50

4

4

0

0

60

3

40

4

Группа 237 10

5

3

Прямая соединительная линия 235 10

+

0

1

90

4

[1]

4

+ [2]

6

20

5

40

0

30

3

30

3

5

3

30

6

0

0

2

3

3

2

3

2.17)  3.47):

bj

ai

40

60

50

50

30

50

6

3

50

4

[1]

4

0

0

60

3

Группа 242 40

4

5

3

20

+

0

1

90

4

Прямая соединительная линия 240

+ [1]

4

10

6

20

5

30

0

30

1

30

3

5

3

30

6

0

2

4

3

5

4

1

2.18)  3.48):

bj

ai

40

60

50

50

30

50

6

3

Группа 247 50

4

+ [1]

4

0

0

60

3

10

4

5

3

50

0

0

90

4

30

4

Прямая соединительная линия 245 10

+

6

20

5

0

30

1

30

3

5

3

30

6

0

2

3

3

5

3

1

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

bj

ai

40

60

50

50

30

50

6

3

30

4

20

4

0

60

3

10

4

5

3

50

0

90

4

30

4

30

6

5

0

30

30

3

5

3

30

6

0

Проверяем его на оптимальность:

bj

ai

40

60

50

50

30

50

6

3

30

4

20

4

0

0

60

3

10

4

5

3

50

0

0

90

4

30

4

30

6

5

0

30

1

30

3

5

3

30

6

0

1

3

3

4

3

1

u1+v1=0+36=c11, u1+v4=0+34=c13, u1+v5=010=c15,

u2+v2=0+33=c22, u2+v3=0+43=c23, u2+v5=010=c25,

u3+v3=1+46=c33, u3+v4=1+35=c34, u4+v1=1+33=c41,

u4+v2=1+35=c42, u4+v4=1+36=c44, u4+v5=110=c45,

и критерий оптимальности ui+vjcij выполняется для всех клеток таблицы. Поэтому закрытая задача решена.

Вычисляем стоимость перевозок:

303+204+103+503+304+304+303=680.

В ответе не учитываются перевозки к фиктивному потребителю: матрица перевозок  следующая

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

Б) Решаем задачу, составив первоначальный опорный план методом методом наименьших затрат. Реализуем алгоритм:

1) Построим первоначальный опорный план.

Из всех стоимостей реальных перевозок самыми дешёвыми являются перевозки в клетках ((1, 2), (2, 1), (2, 4), (4, 1), (4, 3) со стоимостью 3 ед. Заполняем из них клетку (1, 2). При этом вычёркиваем первого поставщика:

bj

ai

40

60

50

50

30

50

6

3

50

4

4

0

60

3

4

5

3

0

90

4

4

6

5

0

30

3

5

3

6

0

Из оставшихся клеток с данной стоимостью (3 ед.) заполняем клетку (2, 1), вычеркнув первого потребителя:

bj

ai

40

60

50

50

30

50

6

3

50

4

4

0

60

3

40

4

5

3

0

90

4

4

6

5

0

30

3

5

3

6

0

Во второй строке имеется ещё одна клетка со стоимостью 3 ед. Это  (2, 4). При этом у второго поставщика имеется ещё 20 единиц груза. Поэтому в эту клетку вписываем 20 и вычёркиваем второго поставщика:

bj

ai

40

60

50

50

30

50

6

3

50

4

4

0

60

3

40

4

5

3

20

0

90

4

4

6

5

0

30

3

5

3

6

0

Невычеркнутой клеткой с наименьшей стоимостью 3 ед. является единственная  (4, 3). Заполняем её:

bj

ai

40

60

50

50

30

50

6

3

50

4

4

0

60

3

40

4

5

3

20

0

90

4

4

6

5

0

30

3

5

3

30

6

0

Невычеркнутой осталась единственная строка  третья. В этой строке невычеркнутыми являются клетки со второго и до конца. Заполняем их, начиная с наиболее дешёвой из невычеркнутых: 10 вписываем в клетку ((3, 2) и вычёркиваем второй столбец, 30 вписываем в клетку (3, 4) и вычёркиваем четвёртый столбец, наконец, 20 вписываем в клетку (3, 3) и вычёркиваем третий столбец. Таким образом, клетки с реальными перевозками заполнены:

bj

ai

40

60

50

50

30

50

6

3

50

4

4

0

60

3

40

4

5

3

20

0

90

4

4

10

6

20

5

30

0

30

3

5

3

30

6

0

На последнем шаге заполняем клетку с фиктивным участником  это клетка (3, 5), вычеркнув третью строку и пятый столбец, тем самым завершая составление первоначального опорного плана:

bj

ai

40

60

50

50

30

50

6

3

50

4

4

0

60

3

40

4

5

3

20

0

90

4

4

10

6

20

5

30

0

30

30

3

5

3

30

6

0

Как видим, мы получили таблицу, которая была получена на седьмой итерации при решении после составления первоначального опорного плана методом северо-западного угла. Поэтому задача решена.

Ответ: Матрица перевозок: . Стоимость перевозок Fmin=680 у.е.

151

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]