Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Исследование операций и методы оптимизации. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
06.09.2026
Размер:
2 Мб
Скачать
перевозок, стоящих в отрицательных вершинах цикла (если переместить большее число единиц груза, возникнут отрицательные перевозки).
Применённый выше метод отыскания оптимального решения транспортной задачи называется распределённым; он состоит в непосредственном отыскании свободных клеток с отрицательной ценой цикла и в перемещении перевозок по этому циклу.
Распределительный метод решения транспортной задачи обладает одним недостатком: нужно отыскивать циклы для всех свободных клеток и находить их цены. От этой трудоёмкой работы нас избавляет специальный метод решения транспортной задачи, который называется методом потенциалов.
Рассмотрим пример решения задачи распределительным методом (опорный план получен методом северо-западного угла).
Примем некоторые обозначения: 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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]