Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Исследование операций и методы оптимизации. Учебное пособие
.pdf
перевозок, стоящих в отрицательных вершинах цикла (если переместить
большее число единиц груза, возникнут отрицательные перевозки).
Применённый выше метод отыскания оптимального решения
транспортной задачи называется распределённым; он состоит в
непосредственном отыскании свободных клеток с отрицательной ценой цикла и
в перемещении перевозок по этому циклу.
Распределительный метод решения транспортной задачи обладает одним
недостатком: нужно отыскивать циклы для всех свободных клеток и находить
их цены. От этой трудоёмкой работы нас избавляет специальный метод
решения транспортной задачи, который называется методом потенциалов.
Рассмотрим пример решения задачи распределительным методом
(опорный план получен методом северо-западного угла).
Примем некоторые обозначения: i - индекс строки; j - индекс столбца; m количество поставщиков; n - количество потребителей.
Этап 1
Опорный план является вырожденным, так как число занятых клеток меньше, чем
m+n-1=9. Сделаем его невырожденным, поместив базисные нули в клетки с
координатами (i,j): (4,1)
Табл. 3.8. Опорный невырожденный план
Потребители
B
Поставщики
A
1
A
2
A
3
A
4
200
0
1
19
40
15
0
220
B
2
B
3
B
4
B
5
отправления)
25
21
170
41
0
30
12
28
32
21
60
27
150
0
140
0
10
20
41
22
0
Потребность 200 220 170 210 150
Определим значения оценок S
для всех свободных клеток.
i,j
Для этого строим цикл для каждой свободной клетки и, перемещаясь по клеткам
цикла, складываем тарифы клеток. При этом тарифы в нечетных клетках берутся со
знаком «плюс», в четных - со знаком «минус».
S
= c
1,2
1,2-c1,1+c4,1-c4,5+c3,5-c3,4+c2,4-c2,2
S
= c
1,3
1,3-c1,1+c4,1-c4,5+c3,5-c3,4+c2,4-c2,3
S
= c
1,4
1,4-c1,1+c4,1-c4,5+c3,5-c3,4
S
= c
1,5
1,5-c1,1+c4,1-c4,5
S
= c
2,1
2,1-c2,4+c3,4-c3,5+c4,5-c4,1
S
= c
2,5
2,5-c2,4+c3,4-c3,5
= c
S
3,1
3,1-c3,5+c4,5-c4,1
S
= c
3,2
3,2-c3,4+c2,4-c2,2
S
= c
3,3
3,3-c3,4+c2,4-c2,3
= 1.
= 25.
= -7.
= 14.
= 10.
= 8.
= 24.
= 1.
= 15.
Запасы
(объемы
200
450
290
10
51

S
41
10
= c
4,2
4,2-c4,5+c3,5-c3,4+c2,4-c2,2
S
= c
4,3
4,3-c4,5+c3,5-c3,4+c2,4-c2,3
S
= c
4,4
4,4-c4,5+c3,5-c3,4
Если имеется несколько клеток с одним и тем же наименьшим значением оценки, то
из них выбирается клетка, имеющая наименьший тариф. Наиболее перспективной
является клетка (3,1). Для нее оценка равна -7.
Строим для нее цикл, помечая клетки цикла знаками «плюс» и «минус».
Табл. 3.9. Этап 1
= -5.
= 4.
= -5.
Потребители
B
Поставщики
A
1
A
2
A
3
A
4
1
200
+ 15
– 0
0
19
40
220
B
2
B
3
B
4
B
5
отправления)
25
21
170
0
30
12
28
32
21
27
0
– 22
140
+ 0
60
150
0
20
41
Потребность 200 220 170 210 150
Перемещаем по циклу груз величиной в 0 единиц, прибавляя эту величину к грузу в
клетках со знаком «плюс» и отнимая ее от груза в клетках со знаком «минус».
В результате перемещения по циклу получим новый план:
Табл. 3.10. Результат этапа 1
Потребители
B
Поставщики
A
1
A
2
A
3
A
4
200
1
19
40
15
0
220
B
2
B
3
B
4
B
5
отправления)
25
21
170
41
0
30
12
28
32
21
60
27
150
0
140
0
10
20
41
22
0
Потребность 200 220 170 210 150
Целевая функция F= 18850
Запасы
(объемы
200
450
290
10
Запасы
(объемы
200
450
290
10
Этап 2
Определим значения оценок S
для всех свободных клеток.
i,j
Для этого строим цикл для каждой свободной клетки и, перемещаясь по клеткам
цикла, складываем тарифы клеток. При этом тарифы в нечетных клетках берутся со
знаком «плюс», в четных - со знаком «минус».
S
= c
1,2
1,2-c1,1+c3,1-c3,4+c2,4-c2,2
= c
S
1,3
1,3-c1,1+c3,1-c3,4+c2,4-c2,3
S
= c
1,4
1,4-c1,1+c3,1-c3,4
S
= c
1,5
1,5-c1,1+c3,1-c3,5
= 1.
= -6.
= -6.
= 8.
52

S
25
41
0 0 0 0
= c
2,1
2,1-c2,4+c3,4-c3,1
S
= c
2,5
2,5-c2,4+c3,4-c3,5
S
= c
3,2
3,2-c3,4+c2,4-c2,2
S
= c
3,3
3,3-c3,4+c2,4-c2,3
S
= c
4,1
4,1-c4,5+c3,5-c3,1
S
= c
4,2
4,2-c4,5+c3,5-c3,4+c2,4-c2,2
S
= c
4,3
4,3-c4,5+c3,5-c3,4+c2,4-c2,3
S
= c
4,4
4,4-c4,5+c3,5-c3,4
Если имеется несколько клеток с одним и тем же наименьшим значением оценки, то
из них выбирается клетка, имеющая наименьший тариф. Наиболее перспективной
является клетка (1,5). Для нее оценка равна -6.
Строим для нее цикл, помечая клетки цикла знаками «плюс» и «минус».
Табл. 3.11. Этап 2
= 31.
= 25.
= 14.
= 10.
= 7.
= -5.
= 4.
= -5.
Потребители
B
Поставщики
A
1
A
2
A
3
A
4
1
– 19
200
+ 15
0
40
0
220
B
2
B
3
B
4
B
5
отправления)
21
170
30
12
60
28
150
32
21
27
+ 20
41
– 22
140
10
Потребность 200 220 170 210 150
Перемещаем по циклу груз величиной в 140 единиц, прибавляя эту величину к грузу
в клетках со знаком «плюс» и отнимая ее от груза в клетках со знаком «минус».
В результате перемещения по циклу получим новый план:
Табл. 3.12. Результат этапа 2
Потребители
B
Поставщики
A
1
A
2
A
3
A
4
60
140
1
19
40
15
0
220
B
2
B
3
B
4
B
5
отправления)
25
21
170
41
0
30
12
28
32
140
21
60
27
150
0
0
10
20
41
22
0
Потребность 200 220 170 210 150
Целевая функция F= 18010
Значение целевой функции изменилось на 840 единиц по сравнению с предыдущим
этапом.
Запасы
(объемы
200
450
290
10
Запасы
(объемы
200
450
290
10
53

Этап 3
25
12
41
60
41
22
0 0
Определим значения оценок S
для всех свободных клеток.
i,j
Для этого строим цикл для каждой свободной клетки и, перемещаясь по клеткам
цикла, складываем тарифы клеток. При этом тарифы в нечетных клетках берутся со
знаком «плюс», в четных - со знаком «минус».
S
= c
1,2
1,2-c1,1+c3,1-c3,4+c2,4-c2,2
S
= c
1,3
1,3-c1,1+c3,1-c3,4+c2,4-c2,3
S
= c
1,4
1,4-c1,1+c3,1-c3,4
S
= c
2,1
2,1-c2,4+c3,4-c3,1
S
= c
2,5
2,5-c2,4+c3,4-c3,1+c1,1-c1,5
S
= c
3,2
3,2-c3,4+c2,4-c2,2
S
= c
3,3
3,3-c3,4+c2,4-c2,3
S
= c
3,5
3,5-c3,1+c1,1-c1,5
S
= c
4,1
4,1-c4,5+c1,5-c1,1
S
= c
4,2
4,2-c4,5+c1,5-c1,1+c3,1-c3,4+c2,4-c2,2
S
= c
4,3
4,3-c4,5+c1,5-c1,1+c3,1-c3,4+c2,4-c2,3
S
= c
4,4
4,4-c4,5+c1,5-c1,1+c3,1-c3,4
= 1.
= 31.
= 14.
= 10.
= 6.
= 1.
= -6.
= 8.
= 31.
= -11.
= -2.
= -11.
Наиболее перспективной является клетка (4,2). Для нее оценка равна -11.
Строим для нее цикл, помечая клетки цикла знаками «плюс» и «минус».
Табл. 3.13. Этап 3
Потребители
B
Поставщики
A
1
A
2
A
3
A
4
1
– 19
60
+ 15
140
40
0 + 0
B
2
– 21
220
B
3
B
4
B
5
отправления)
30
32
+ 20
140
+ 21
170
28
– 27
150
– 0
10
Потребность 200 220 170 210 150
Перемещаем по циклу груз величиной в 10 единиц, прибавляя эту величину к грузу в
клетках со знаком «плюс» и отнимая ее от груза в клетках со знаком «минус».
В результате перемещения по циклу получим новый план
Запасы
(объемы
200
450
290
10
Табл. 3.14. Результат этапа 3
Потребители
Поставщики
A
1
A
2
A
3
A
4
50
150
B
1
19
40
15
0
210
10
B
2
25
21
41
0
170
B
3
30
12
28
0
70
140
B
4
32
B
5
20
150
21
41
27
22
0
0
Запасы
(объемы
отправления)
200
450
290
10
Потребность 200 220 170 210 150
54

Целевая функция F= 17900
12
41
70
41
22
0
0 0
Значение целевой функции изменилось на 110 единиц по сравнению с предыдущим
этапом.
Этап 4
Определим значения оценок S
Для этого строим цикл для каждой свободной клетки и, перемещаясь по клеткам
цикла, складываем тарифы клеток. При этом тарифы в нечетных клетках берутся со
знаком «плюс», в четных - со знаком «минус».
S
= c
1,2
1,2-c1,1+c3,1-c3,4+c2,4-c2,2
S
= c
1,3
1,3-c1,1+c3,1-c3,4+c2,4-c2,3
S
= c
1,4
1,4-c1,1+c3,1-c3,4
S
= c
2,1
2,1-c2,4+c3,4-c3,1
S
= c
2,5
2,5-c2,4+c3,4-c3,1+c1,1-c1,5
S
= c
3,2
3,2-c3,4+c2,4-c2,2
S
= c
3,3
3,3-c3,4+c2,4-c2,3
S
= c
3,5
3,5-c3,1+c1,1-c1,5
S
= c
4,1
4,1-c4,2+c2,2-c2,4+c3,4-c3,1
S
= c
4,3
4,3-c4,2+c2,2-c2,3
S
= c
4,4
4,4-c4,2+c2,2-c2,4
S
= c
4,5
4,5-c4,2+c2,2-c2,4+c3,4-c3,1+c1,1-c1,5
Наиболее перспективной является клетка (1,2). Для нее оценка равна -6.
Строим для нее цикл, помечая клетки цикла знаками «плюс» и «минус».
Табл. 3.15. Этап 4
= 1.
= 31.
= 14.
= 10.
= 6.
= 9.
= 0.
для всех свободных клеток.
i,j
= -6.
= 8.
= 31.
= 12.
= 11.
Потребители
B
Поставщики
A
1
A
2
A
3
A
4
1
– 19 + 25 30
50
40
+ 15
150
0
B
2
– 21
210
10
B
3
B
4
B
5
отправления)
32
150
20
+ 21
170
28
– 27
140
0
Потребность 200 220 170 210 150
Перемещаем по циклу груз величиной в 50 единиц, прибавляя эту величину к грузу в
клетках со знаком «плюс» и отнимая ее от груза в клетках со знаком «минус».
В результате перемещения по циклу получим новый план.
Запасы
(объемы
200
450
290
10
55

Табл. 3.16. Результат этапа 4
Потребители
B
Поставщики
A
1
A
2
A
3
A
4
200
1
19
40
15
0
50
160
10
B
2
B
3
B
4
B
5
отправления)
25
21
170
41
0
30
12
28
32
150
21
120
27
90
0
0
20
41
22
0
Потребность 200 220 170 210 150
Целевая функция F= 17600
Значение целевой функции изменилось на 300 единиц по сравнению с предыдущим
этапом.
Этап 5
Определим значения оценок S
для всех свободных клеток.
i,j
Для этого строим цикл для каждой свободной клетки и, перемещаясь по клеткам
цикла, складываем тарифы клеток. При этом тарифы в нечетных клетках берутся со
знаком «плюс», в четных - со знаком «минус».
S
= c
1,1
1,1-c1,2+c2,2-c2,4+c3,4-c3,1
S
= c
1,3
1,3-c1,2+c2,2-c2,3
S
= c
1,4
1,4-c1,2+c2,2-c2,4
S
= c
2,1
2,1-c2,4+c3,4-c3,1
S
= c
2,5
2,5-c2,2+c1,2-c1,5
S
= c
3,2
3,2-c3,4+c2,4-c2,2
S
= c
3,3
3,3-c3,4+c2,4-c2,3
S
= c
3,5
3,5-c3,4+c2,4-c2,2+c1,2-c1,5
S
= c
4,1
4,1-c4,2+c2,2-c2,4+c3,4-c3,1
S
= c
4,3
4,3-c4,2+c2,2-c2,3
S
= c
4,4
4,4-c4,2+c2,2-c2,4
S
= c
4,5
4,5-c4,2+c1,2-c1,5
= 14.
= 7.
= 31.
= 25.
= 14.
= 10.
= 9.
= 0.
= 5.
= 6.
= 0.
= 12.
Так как все оценки S
>=0, то полученный план является оптимальным.
i,j
Транспортная задача решена.
Запасы
(объемы
200
450
290
10
56

Табл. 3.17. Решенная транспортная задача
=
+
>
−
=
>
−+=
∆
≤
∆
Потребители
B
1
Поставщики
A
1
A
2
A
3
A
4
Потребность 200 220 170 210 150
Целевая функция F= 17600
10 единиц груза потребителю B2 не поставлено.
200
19
40
15
0
50
160
10
B
2
25
21
41
0
170
B
3
30
12
28
0
120
90
B
4
32
21
27
0
150
B
5
20
41
22
0
Запасы
(объемы
отправления)
200
450
290
10
Метод потенциалов
Наиболее распространенным методом решения транспортных задач
является метод потенциалов. Впервые он был предложен в 1949г. Л. В.
Канторовичем и М. К. Гавуриным. Позже на базе общих идей линейного
программирования аналогичный метод был предложен Дж. Данцигом.
Решение задачи методом потенциалов включает следующие этапы:
1) Проверяют выполнение необходимого и достаточного условия
разрешимости задачи. Если задача имеет неправильный баланс, то вводят
фиктивного поставщика или потребителя с недостающими запасами или
запросами и нулевыми стоимостями перевозок.
2) Строят начальное опорное решение (методом минимальной
стоимости или каким-либо другим методом) и проверяют правильность его
построения, для чего подсчитывают количество занятых клеток (их должно
быть m+n-1) и убеждаются в линейной независимости векторов-условий
(методом вычеркивания).
3) Строят систему потенциалов, соответствующих опорному
решению. Для этого решают систему уравнений
cvu
ijji
при
0
x .
ij
Для
того чтобы найти частное решение системы, одному из потенциалов (обычно
тому, которому соответствует большее число занятых клеток) задают
произвольно некоторое значение
однозначно определяются по формулам
(
чаще нуль
).
Остальные потенциалы
vcu
при
0
jiji
x .
ij
4)
Проверяют, выполняется ли условие оптимальности для свободных
клеток таблицы. Для этого вычисляют оценки для всех свободных клеток по
формулам
левые нижние углы клеток. Если для всех свободных клеток
cvu
и те
ijjilk
оценки, которые больше нуля, записывают в
0
lk
, то
вычисляют значение целевой функции, и решение задачи заканчивается, так как
57

полученное решение является оптимальным. Если же имеется хотя бы одна
{
}
∆=∆
{
}
=
θ
{
}
клетка с положительной оценкой, то опорное решение не является
оптимальным.
5) Переходят к новому опорному решению, на котором значение
целевой функции будет меньше. Для этого находят клетку таблицы задачи,
которой соответствует наибольшая положительная оценка
max .
lkij
Строят цикл, включающий в свой состав данную клетку и часть клеток
занятых опорным решением. В клетках цикла расставляют поочередно знаки
«+» и «-»,
Осуществляют сдвиг
min
>>−<<
начиная с
x
. Клетка со знаком «-», в которой достигается
ij
«+» в
(
перераспределение груза) по циклу на величину
клетке с наибольшей положительной оценкой
x
min , остается
ij
>>−<<
пустой. Если минимум достигается в нескольких клетках, то одна из них
остается пустой, а в остальных проставляют базисные нули, чтобы число
занятых клеток оставалось равным m+n-1. Далее возвращаемся к пункту 3
алгоритма.
Рассмотрим пример решения задачи методом потенциалов (опорный план
получен методом северо-западного угла).
Примем некоторые обозначения: i - индекс строки; j - индекс столбца; m -
количество поставщиков; n - количество потребителей.
Этап 1
,
.
Опорный план является вырожденным, так как число занятых клеток меньше, чем
m+n-1=9.
Сделаем его невырожденным, поместив базисные нули в клетки с координатами
(i,j): (4,1)
Табл. 3.18. Опорный невырожденный план
Потребители
B
1
Поставщики
A
1
A
2
A
3
A
4
Потребность 200 220 170 210 150
Полагая потенциал U1=0, определяем остальные потенциалы из соотношения
U
i+Vj=Ci,j
Потенциалы Ui:
U1=0
200
0
(i=1..m, j=1..n), просматривая все занятые клетки.
19
40
15
0
220
B
2
25
21
41
0
170
B
3
30
12
28
0
60
150
B
4
32
21
27
0
140
10
B
5
отправления)
20
41
22
0
Запасы
(объемы
200
450
290
10
58

V
41
10
1=C1,1-U1
U4=C
V5=C
U3=C
V4=C
U2=C
V2=C
V3=C
4,1-V1
4,5-U4
3,5-V5
3,4-U3
2,4-V4
2,2-U2
2,3-U2
= 19
=-19
= 19
=3
= 24
=-3
= 24
= 15
Определяем значения оценок S
S
= c
1,2
S
1,3
S
1,4
S
1,5
S
2,1
S
2,5
S
3,1
S
3,2
S
3,3
S
4,2
S
4,3
S
4,4
- (u1 + v2) = 1.
1,2
= c
- (u1 + v3) = 15.
1,3
= c
- (u1 + v4) = 8.
1,4
= c
- (u1 + v5) = 1.
1,5
= c
- (u2 + v1) = 24.
2,1
= c
- (u2 + v5) = 25.
2,5
= c
- (u3 + v1) = -7.
3,1
= c
- (u3 + v2) = 14.
3,2
= c
- (u3 + v3) = 10.
3,3
= c
- (u4 + v2) = -5.
4,2
= c
- (u4 + v3) = 4.
4,3
= c
- (u4 + v4) = -5.
4,4
-(Ui+Vj) для всех свободных клеток:
i,j=Ci,j
Если имеется несколько клеток с одним и тем же наименьшим значением оценки, то
из них выбирается клетка, имеющая наименьший тариф. Наиболее потенциальной
является клетка (3,1). Для нее оценка равна -7.
Строим для нее цикл, помечая клетки цикла знаками «плюс» и «минус».
Табл. 3.19. Этап 1
Потребители
B
Поставщики
A
1
A
2
A
3
A
4
1
200
+ 15
– 0
0
19
40
220
B
2
B
3
B
4
B
5
отправления)
25
21
170
0
30
12
28
32
21
27
0
– 22
140
+ 0
60
150
0
20
41
Потребность 200 220 170 210 150
Перемещаем по циклу груз величиной в 0 единиц, прибавляя эту величину к грузу в
клетках со знаком «плюс» и отнимая ее от груза в клетках со знаком «минус».
В результате перемещения по циклу получим новый план
Запасы
(объемы
200
450
290
10
59

Табл. 3.20. Результат этапа 1
Потребители
B
Поставщики
A
1
A
2
A
3
A
4
200
1
19
40
15
0
220
B
2
B
3
B
4
B
5
отправления)
25
21
170
41
0
30
12
28
32
21
60
27
150
0
140
0
10
20
41
22
0
Потребность 200 220 170 210 150
Целевая функция F= 18850
Этап 2
Полагая потенциал U1=0, определяем остальные потенциалы из соотношения
Ui+Vj=C
(i=1..m, j=1..n), просматривая все занятые клетки.
i,j
Потенциалы Ui:
U1=0
V1=C
U3=C
V4=C
V5=C
U4=C
U2=C
V2=C
V3=C
1,1-U1
3,1-V1
3,4-U3
3,5-U3
4,5-V5
2,4-V4
2,2-U2
2,3-U2
= 19
=-4
= 31
= 26
=-26
=-10
= 31
= 22
Определяем значения оценок S
S
= c
1,2
S
1,3
S
1,4
S
1,5
S
2,1
S
2,5
S
3,2
S
3,3
S
4,1
S
4,2
S
4,3
S
4,4
- (u1 + v2) = -6.
1,2
= c
- (u1 + v3) = 8.
1,3
= c
- (u1 + v4) = 1.
1,4
= c
- (u1 + v5) = -6.
1,5
= c
- (u2 + v1) = 31.
2,1
= c
- (u2 + v5) = 25.
2,5
= c
- (u3 + v2) = 14.
3,2
= c
- (u3 + v3) = 10.
3,3
= c
- (u4 + v1) = 7.
4,1
= c
- (u4 + v2) = -5.
4,2
= c
- (u4 + v3) = 4.
4,3
= c
- (u4 + v4) = -5.
4,4
-(Ui+Vj) для всех свободных клеток:
i,j=Ci,j
Если имеется несколько клеток с одним и тем же наименьшим значением оценки, то
из них выбирается клетка, имеющая наименьший тариф. Наиболее потенциальной
является клетка (1,5). Для нее оценка равна -6.
Строим для нее цикл, помечая клетки цикла знаками «плюс» и «минус».
Запасы
(объемы
200
450
290
10
60
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
