Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебное пособие 3000430.doc
Скачиваний:
10
Добавлен:
30.04.2022
Размер:
4.05 Mб
Скачать

Метод потенциалов

Для решения транспортной задачи можно использовать метод потенциалов. Пусть задан опорный план задачи, тогда каждому пункту отправления Аi приписывается некоторое число Ui, а каждому пункту назначения Вj – число Vj. Эти числа называют потенциалами, они подбираются так, чтобы для каждой базисной клетки (i, j) выполнялось равенство

Ui + Vj = Cij.

Таким образом, получаем m + n – 1 простых уравнений с m + n неизвестными Ui и Vj. В таком случае, когда система состоит из числа уравнений, меньшего, чем число неизвестных, появляется свободная неизвестная величина, которой мы можем придать любое значение. Все остальные неизвестные можно найти из системы уравнений.

После того, как будут найдены все потенциалы Ui и Vj, для каждой свободной клетки (i, j) определяют числа ij = Cij– – (Ui + Vj). Далее поступаем так же, как и в распределительном методе: находим наибольшее по модулю отрицательное число (т.е. самое малое из отрицательных) и делаем сдвиг по соответствующему циклу пересчета. Таким образом, в методе потенциалов для нахождения чисел ij не нужно искать циклы пересчета для всех свободных клеток. Надо найти только один цикл пересчета, соответствующий наименьшему отрицательному .

Пример решения задачи методом потенциалов:

V1 = 5

V2 = 4

V3 = 2

V4 = 1

Для занятых клеток

U1 + V1 = 5,

U1 + V2 = 4,

U2 + V2 = 1,

U3 + V2 = 3,

U3 + V3 = 1,

U4 + V3 = 2,

U4 + V4 = 1.

U1 = 0

20 5

10 4

2

5

30

U2 = -3

6

70 1

1

3

70

U3 = -1

2

10 3

40 1

8

50

U4 = 0

6

3

30 2

70 1

100

20

90

70

70

Положим U1 = 0, тогда учитывая занятые клетки

V1 = 5, V2 = 4, U2 = –3, U3 = –1, V3 = 2, U4 = 0, V4 = 1.

Подсчитаем ij для свободных клеток:

13 = 2 – (0 + 2) = 0, 14 = 5 – (0 + 1) = 4,

21 = 6 – (–3 + 5) = 4, 23 = 1 – (–3 + 2) = 2,

24 = 3 – (–3 + 1) = 5,

31 = 2 – (–1 + 5) = –2, 34 = 8 – (–1 + 1) = 8,

41 = 6 – (0 + 5) = 1, 42 = 3 – (0 + 4) = –1.

Поскольку среди значений ij есть отрицательные, то план перевозок не оптимален и необходимо, сделав сдвиг по циклу пересчета для клетки (3,1), перейти к новому плану.

V1 = 5

V2 = 4

V3 = 4

V4 = 3

Для занятых клеток

U1 + V1 = 5,

U1 + V2 = 4,

U2 + V2 = 1,

U3 + V1 = 2,

U3 + V3 = 1,

U4 + V3 = 2,

U4 + V4 = 1.

U1 = 0

10 5

20 4

2

5

30

U2 = -3

6

70 1

1

3

70

U3 = -3

10 2

3

40 1

8

50

U4 = -2

6

3

30 2

70 1

100

20

90

70

70

Положим U1 = 0, тогда

V1 = 5, V2 = 4, U2 = –3, U3 = –3, V3 = 4, U4 = –2, V4 = 3.

Подсчитаем ij для свободных клеток:

13 = 2 – (0 + 4) = –2, 14 = 5 – (0 + 3) = 2,

21 = 6 – (– 3 + 5) = 4, 23 = 1 – (–3 + 4) = 0,

24 = 3 – (–3 + 3) = 3,

32 = 3 – (–3 + 4) = 2, 34 = 8 – (–3 + 3) = 8,

41 = 6 – (–2 + 5) = 3, 42 = 3 – (–2 + 4) = 1.

Поскольку среди значений ij есть отрицательное, то план перевозок не оптимален и необходимо, сделав сдвиг по циклу пересчета для клетки (1,3), перейти к новому плану.

V1 = 3

V2 = 4

V3 = 2

V4 = 1

Для занятых клеток

U1 + V2 = 4,

U1 + V3 = 2,

U2 + V2 = 1,

U3 + V1 = 2,

U3 + V3 = 1,

U4 + V3 = 2,

U4 + V4 = 1.

U1 = 0

5

20 4

10 2

5

30

U2 = -3

6

70 1

1

3

70

U3 = -1

20 2

3

30 1

8

50

U4 = 0

6

3

30 2

70 1

100

20

90

70

70

Положим U1 = 0, тогда учитывая занятые клетки

V2 = 4, V3 = 2, U2 = –3, U3 = –1, V1 = 3, U4 = 0, V4 = 1.

Подсчитаем ij для свободных клеток:

11 = 5 – (0 + 3) = 2, 14 = 5 – (0 + 1) = 4,

21 = 6 – (– 3 + 3) = 6, 23 = 1 – (–3 + 2) = 2,

24 = 3 – (–3 + 1) = 5,

32 = 3 – (–1 + 4) = 0, 34 = 8 – (–1 + 1) = 8,

41 = 6 – (0 + 3) = 3, 42 = 3 – (0 + 4) = –1.

Поскольку среди значений ij есть отрицательное, то план перевозок не оптимален и необходимо, сделав сдвиг по циклу пересчета для клетки (4,2), перейти к новому плану.

V1 = 3

V2 = 4

V3 = 2

V4 = 1

Для занятых клеток

U1 + V3 = 2,

U2 + V2 = 1,

U3 + V1 = 2,

U3 + V3 = 1,

U4 + V2 = 2,

U4 + V3 = 2,

U4 + V4 = 1.

U1 = 0

5

4

30 2

5

30

U2 = -3

6

70 1

1

3

70

U3 = -1

20 2

3

30 1

8

50

U4 = 0

6

20 3

10 2

70 1

100

20

90

70

70

Положим U1 = 0, тогда учитывая занятые клетки

V3 = 2, U3 = –1, U4 = 0, V1 = 3, V2 = 4, U2 = –3, V4 = 1.

Подсчитаем ij для свободных клеток:

11 = 5 – (0 + 3) = 2, 12 = 4 – (0 + 4) = 0,

14 = 5 – (0 + 1) = 4,

21 = 6 – (– 3 + 3) = 6, 23 = 1 – (–3 + 2) = 2,

24 = 3 – (–3 + 1) = 5,

32 = 3 – (–1 + 4) = 0, 34 = 8 – (–1 + 1) = 8,

41 = 6 – (0 + 3) = 3.

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

f(х) = 30  2 + 70  1 + 20  2 + 30  1 + 20  3 + 10  2 + 70  1 = 350.

Решение транспортной задачи методом потенциалов, реализованным в ППП PRIMA показано на рис. 24 и 25.

Рис. 24. Заполнение диалоговой формы Транспортная задача

Рис. 25. Решение транспортной задачи в ППП PRIMA

Рис. 25. Продолжение

Этапы метода потенциалов:

1. Найти первоначальный опорный план. Число заполненных клеток равно m + n – 1.

2. Найти потенциалы Ui и Vj. Составить для базисных клеток m + n – 1 уравнений с m + n неизвестными.

3. Для каждой свободной клетки найти значения ij = Cij –– (Ui + Vj). Если среди значений ij нет отрицательных, то полученный план транспортной задачи оптимальный. Если же такие имеются, то перейти к новому опорному плану.

4. Среди отрицательных ij выбрать наибольшее по модулю отрицательное число ij. Построить для этой свободной клетки цикл пересчета и произвести сдвиг по циклу пересчета.

5. Полученный опорный план проверить на оптимальность. Если он не оптимален, то перейти к п. 2.