Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Христиановский ЭММ для зо_2008.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
5.32 Mб
Скачать

6. Транспортная задача

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

  1. Проверяется открытая или закрытая модель. Если задача открытая, то вводят фиктивного поставщика или фиктивного потребителя с нулевыми тарифами перевозок.

  2. Составляют начальный опорный план (первоначальное распределение).

  3. Проверяют на вырожденность (заполненных клеток должно быть m+n–1).

  4. Находят потенциалы.

  5. Находят оценки оптимальности незаполненных клеток.

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

  7. Если все свободные клетки имеют оценки , то оптимальное решение задачи найдено. Если все оценки незанятых клеток , то оптимальный план единственный. Если некоторые оценки в оптимальном плане незанятых клеток = 0, то план не единственный. Эти клетки можно сделать занятыми, а общая стоимость перевозки не изменится.

Пример 6.1 . Решить транспортную задачу.

Таблица 6.1

bj

ai

120

80

300

150

4

1

3

50

2

0

1

200

3

5

6

Решение.

  1. Проверяем наличие закрытости транспортной модели.

Задача называется закрытой, если

a1 +a2 +…+am= b1+ b2 +…+bn. (6.1)

Если a1 +a2 +…+am b1+ b2 +…+bn, то задача называется открытой.

В нашем случае

,

.

Задача открытая.

Вводим фиктивного поставщика с запасом груза равным 500 – 400=100 и тарифами перевозок равными нулю. Для этого в матрицу транспортной задачи вводим дополнительную строку, соответствующую фиктивному поставщику с и .

Таблица 6.2

bj

ai

120

80

300

150

4

1

3

50

2

0

1

200

3

5

6

100

0

0

0

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

У первого поставщика берём 120 ед. груза и даём его первому потребителю. Оставшиеся 30 ед. груза даём второму потребителю. Второму потребителю надо ещё 50 ед. груза. Его берём у второго поставщика. Первый и второй потребители полностью удовлетворены в своих потребностях. Весь груз первого и второго поставщиков распределён. 200 ед. груза даём третьему потребителю от третьего поставщика и 100ед. груза от фиктивного четвёртого поставщика. Проверяем баланс по каждой строке и каждому столбцу.

Таблица 6.3

0

50,0

100,0

bj

ai

120

80

300

150

4

1

3

30,0

120

30

50

2

0

1

50,0

50

200

3

5

6

200,0

200

100

0

0

0

0

100

Z(X1) = 120·4+30·1+50·0+0·1+200·6+100·0= 1710.

3. Проверяем вырожденность. Заполненных клеток должно быть m+n–1=4+3–1=6. Мы получили пять заполненных клеток. В одну незаполненную клетку (2,3) ставим 0 и считаем ее заполненной. Нельзя ставить 0 лишь в клетке (2,1). Все заполненные клетки должны соединяться ломаной с горизонтальными и вертикальными звеньями с угловыми точками лишь в заполненных клетках.

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

(6.2)

Таблица 6.4

bj

ai

120

80

300

ui

150

4

1

3

1 20

30

[–1]

u1=0

50

2

0

1

[1]

50

0*

u2 = – 1

200

3

5

6

[5]

[0]

200

u3 = 4

100

0

0

0

[2]

[–1]

100

u4 = –2

vj

v1 = 4

v2 = 1

v3 = 2

Получили систему из пяти уравнений, она неопределённая, то есть имеет бесконечное множество решений. Один из потенциалов приравниваем к нулю, а остальные находятся однозначно из условия (6.2). Пусть . Тогда из первого уравнения находим , из второго – и т.д. Систему можно не выписывать, а значения потенциалов находить непосредственно в таблице.

  1. Находим оценки незаполненных клеток:

, (6.3)

13= 2+0 –3= – 1<0, 21 = 4–1 –2= 1>0, 31= 4+4 –3= 5>0,

32 = 4–+1 –5= 0, 41 = 4–2 –0= 2>0, 42= 1–2 –0= – 1<0.

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

План не оптимален. Переходим к новому опорному плану. Наиболее ″неблагоприятная″ клетка (3,1). Оценка 5 в клетке (3,1) показывает, что если в эту клетку поместить единицу груза, то стоимость перевозок уменьшится на пять единиц. Действительно, для сохранения баланса с клетки (3,3) необходимо отнять единицу груза, в клетку (2,3) необходимо прибавить единицу груза, с клетки (2,2) необходимо отнять единицу груза, в клетку (1,2) необходимо добавить единицу груза, с клетки (1,1) необходимо отнять единицу груза. Стоимость перевозки при этом будет изменятся на 3-6+1-0+1-4=-5 единиц.

Для клетки (3,1) строим цикл пересчёта (цепочку перераспределения). Циклом для незаполненной клетки называется последовательность заполненных клеток, в которые поочерёдно добавляется и вычитается груз для сохранения баланса, если в незаполненную клетку поместить некоторый груз. Определяем груз ρ, который будем перемещать по циклу. По циклу перемещаем груз равный минимуму грузов, стоящих в клетках, в которых груз вычитается от объемов в клетках.

30+ρ

120–ρ

0+ρ

50–ρ

+ ρ

200–ρ

ρ = min(120,50,200)=50.

  1. Составляем новую таблицу. Так как в клетку будем ставить груз равный 50 единицам, то значение целевой функции во втором плане уменьшится на 5·50=250, то есть Z(X2)=1710-5·50=1460.

Таблица 6.5

bj

ai

120

80

300

ui

150

4

1

3

70

80

[4]

u1=0

50

2

0

1

[-4]

[-5]

50

u2 = – 6

200

3

5

6

50

[-5]

150

u3 = -1

100

0

0

0

[-3]

[–6]

100

u4 = –7

vj

v1 = 4

v2 = 1

v3 = 7

Z(X2)=1710-250 =1460 или Z(X2)=70·4+80·1+50·1+50·3+150·6=1460.

Второй план также не оптимален, так как имеется положительная оценка свободной клетки. ″Неблагоприятная″ клетка (1,3). Для этой клетки составляем цепочку перераспределения и определяем груз, который будем перемещать по этой цепочке.

70–ρ

150–ρ

50 + ρ

ρ = min(70,150)=70.