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

4 Нахождение оптимального решения транспортной задачи методом потенциалов.

Алгоритм метода потенциалов.

1.Находим решение транспортной задачи любым методом, но таким, чтобы число занятых грузом клеток было m+n-1. если таких клеток окажется меньше, то надо поставить в какую-нибудь из них 0 и считать её занятой грузом.

2.Всем клеткам таблицы приписываем буквы Ai, Bj (i=1,2...m, j=1,2...n) и назовём их потенциалами.

Таблица 3.

Bj

Ai

B1

B2

B3

B4

ai

Столбцы разностей

A1

70

*

38

*

24

14

92

*

14

1 4

14

-

-

-

-

A2

58

*

18

20

56

*

72

*

20

38

-

-

-

-

-

A3

19

23

10

2

100

1

30

*

26

9

9

9

11

81

-

A4

3

7

36

*

121

*

8

34

41

5

5

5

5

1 18

-

bj

30

22

15

34

Стоки разностей

16

8

3 2

22

16

2 6

75

22

16

26

2 1

22

16

-

21

22

16

-

21

-

-

-

-

-

3.Для всех занятых клеток записываем сумму потенциалов Ai+Bj и приравниваем её стоимости занятой клетки. Получаем систему уравнений из m+n-1 уравнений

Ai+Bj=Cij; i=1,2...m, j=1,2...n;

C n+m неизвестными, которая имеет бесчисленное множество решений. Находим любое из них. Придадим, например, А1=0, получим все остальные потенциалы.

4.Для свободных клеток записываем сумму найденных в п.3 потенциалов и сравниваем её со стоимостью данной свободной клетки. Если для всех свободных клеток Ai+Bj<=Cij, то нарушений нет и полученный план перевозок является оптимальным. Если какие-то клетки имеют нарушение, т.е. Ai+Bj>Cij, то продолжаем решение, переходим к пункту 5.

5.Выбираем из всех клеток с нарушениями одну, строим для неё так называемый цикл пересчёта, т.е. такой многоугольник (с прямыми углами), одна из вершин которого находится в выбранной клетке, а все остальные в занятых клетках.

6.Вершине цикла в свободной клетке приписывается знак "+", соседней с ней (в любом направлении) вершине приписывается знак "-" и т.д., всем вершинам цикла припишем знаки.

7.В клетках, где вершина цикла имеет знак "+", прибавляем количество груза q, а в клетках с отрицательными вершинами цикла – вычитаем то же самое количество груза q. Где q – наименьшее количество груза из всех отрицательных вершин цикла. Выполнив одну такую переброску груза по циклу, переходим к п.3. Через конечное число перебросок груза будет получено оптимальное решение, если оно существует. Пользуясь указанным алгоритмом, найдем оптимальное решение транспортной задачи, исходя из допустимого решения, методом С-З угла табл. 1.

Пример 4.

1.Приписываем потенциалы Ai, Bj.

2.Для занятых клеток записываем сумму потенциалов и приравниваем её к стоимости:

A1+B1=3; A1+B2=3;

A2+B2=3; A2+B3=1;

A2+B4=5; A3+B4=4;

Пусть A2=0, тогда B2=3(из 3-го уравнения), B3=1(из 4-го уравнения), B4=5, A3=-1, A1=-1, B1=3(из остальных).

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

A1+B3=-1+1=0<4, нарушений нет;

A1+B4=-1+5=4>1, нарушения есть;

A2+B1=0+3=3>2, нарушения есть;

A3+B1=-1+3=2<3, нарушений нет;

A3+B2=-1+3=2=2, нарушений нет;

A3+B3=-1+1=0<4, нарушений нет;

В двух клетках есть нарушения, значит план неоптимальный. Переходим к п.4,5.

4.Выбираем клетку A1B4, строим для неё цикл пересчёта.

5.Вершинам цикла приписываем знаки, в свободной клетке – знак "+".

6. q=min{200,50}=50 – наименьший груз из всех отрицательных вершин цикла. Прибавим 50 в клетках, где знак "+" и вычтем 50 где знак " – ", получим таблицу 4.

Таблица 4.

шахты

потребители

Добыча

B1

B2

B3

B4

Ш1

300

3

150

2

4

50

1

500

Ш2

2

3

300

1

5

400

Ш3

3

2

4

200

4

200

потребность

300

250

300

250

Переходим к п.3. записываем сумму потенциалов для занятых клеток и находим Ai,Bj.

A1=0; A2=1; A3=3; B1=3; B2=2; B3=0; B4=3;

Проверяем полученный план на оптимальность. Для свободных клеток

A1+B1=0<4, нарушений нет;

A2+B1=4>2, нарушения есть;

A2+B4=2<5, нарушений нет;

A3+B1=6>3, нарушения есть;

A3+B2=5>2, нарушения есть;

A3+B3=3<4, нарушений нет;

Выбираем клетку A2B1 с нарушением с строим цикл, показанный в таблице 3. Перебрасываем по циклу количество груза q=min{300,100}=100. Получаем табл. 4. Переходим к п.3, записываем сумму потенциалов для занятых клеток и определяем Ai,Bj.

Таблица 5.

шахты

потребители

добыча

B1

B2

B3

B4

Ш1

3

250

2

4

250

1

500

Ш2

100

2

3

300

1

5

400

Ш3

200

3

2

4

4

200

потребность

300

250

300

250

Имеем A1=0, A2=-1, A3=3, B1=3, B2=2, B3=1, B4=1.

Нарушения в клетках A3B1, A3B2, A3B3. Выбираем клетку A3B1, строим цикл и перебрасываем кол-во груза q=min{200,200}=200.

Получаем таблицу 5. Занятых клеток в которой 5. Ставим 0 в клетку A3B2 и считаем её за занятую.

Таблица 6.

шахты

Потребители

добыча

B1

B2

B3

B4

Ш1

3

250

2

4

250

1

500

Ш2

100

2

3

300

1

5

400

Ш3

200

3

0

2

4

4

200

потребность

300

250

300

250

Находим A1=0, A2=-1, A3=0, B1=3, B2=2, B3=2, B4=1, для которых во всех свободных клетках нет нарушений, значит получено оптимальное решение.

Таким образом, 1 шахта должна отправить 250 тонн угля потребителю В2 и 250 тонн потребителю В4 ; 2-ая шахта отправляет уголь потребителям В1 и В3 100 и 300 тонн соответственно; 3-ая отправляет 200 тонн потребителю В1. Суммарные расходы на перевозку при этом наименьшие и составляют С=1850.