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

Download Report

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

Транспортная задача
Транспортная
задача
линейного
программирования получила в настоящее
время
широкое
распространение
в
теоретических обработках и практическом
применении
на
транспорте
и
в
промышленности.
Особенно
большое
значение она имеет в деле рационализации
поставок важнейших видов промышленной и
сельскохозяйственной продукции, а также
оптимального планирования грузопотоков и
работы различных видов транспорта.
Формулировка транспортной
задачи
Пусть имеется m поставщиков (A1, A2,…, Am) с
количеством продукции a1, a2,…, am и n
потребителей этой продукции (B1, B2,…, Bn) с
потребностью b1, b2,…, bn.
Пусть известны цены доставки cij от Ai
поставщика к Bj потребителю, требуется
составить оптимальный план распределения
имеющихся ресурсов, при котором суммарная
стоимость доставки будет наименьшей.
b1 = 150
b2 = 150
b3 = 300
a1 = 100
2
1
2
a2 = 200
5
7
6
a3 = 300
3
2
5
Пример решения транспортной
задачи методом потенциалов
1.
Проверяем
открытая
или
закрытая
транспортная задача.
Транспортная задача называется закрытой,
если количество груза у поставщиков
совпадает
с
количеством
груза
у
потребителей. Открытая задача в противном
случае.
Если задача открытая, то сводим её к
закрытой, добавляя фиктивного потребителя,
в количестве груза bn+1 = ai - bj. И
наоборот, если количество на складе меньше,
то вводим фиктивный склад в количестве
груза am+1 = bj - ai. При этом стоимости
доставки из фиктивных пунктов или в
фиктивные пункты ставятся больше всех
стоимостей.
2. Строим 1-ое опорное решение
(например, методом наименьших
стоимостей).
b1 = 150 b2 = 150 b3 = 300
a1 = 100
2
a2 = 200
5
a3 = 300
3
150
v1
1
100
50
v2
2
u1
7
200
6
u2
2
100
5
u3
v3
Метод потенциалов
3. Проверяем 1-ое опорное решение на оптимальность
методом потенциалов.
Для этого i-ому поставщику присваиваем потенциал
ui, j-ому потребителю потенциал vj, количество
заполненных клеток должно быть равно m+n-1. Если
не достаёт заполненных клеток, то в одну из пустых
клеток вводим нулевую поставку груза.
Для заполненных клеток выполняем соотношение
ui + vj =cij.
u1 + v2 = 1
u2 + v3 = 6
u3 + v1 = 3
u3 + v2 = 2
u3 + v3 = 5
Для разрешения системы один из потенциалов
принимаем равным 0.
u1 = 0
v1 = 2
u2 = 2
v2 = 1
u3 = 1
v3 = 4
Для
выполнения
оптимальности
плана
необходимо выполнение условия:
- подсчитываются оценки ij свободных
клеток, ij = cij – (ui + vj);
- если все ij  0, то план оптимален;
- если существуют ij < 0, то необходимо
улучшить
1-ый
опорный
план,
перераспределив поставки.
11 = 2 – (0 + 2) = 0
13 = 2 – (0 + 4) = -2 < 0
21 = 5 – (2 + 2) = 1 > 0
22 = 7 – (2+ 1) = 4 > 0
Вывод: 1-ый план не является оптимальным.
Для улучшения опорного плана найдём клетку с
наибольшим по абсолютной величине отрицательной
ij (13) и составим цикл перераспределения
(многоугольник, стороны которого параллельны
сторонам таблицы, могут самопересекаться в
незаполненных клетках) по следующему правилу:
вершинами
цикла
являются
найденная
пустая клетка (13), все остальные
клетки –
занятые;
- в построенном цикле у пустой клетки ставим знак
«+», далее знаки чередуем;
- среди всех отрицательных клеток выбираем клетку с
наименьшим количеством груза, это количество
добавляем в клетки со знаком «+» и вычитаем из
клеток со знаком «-».
После перераспределения груза строим новую
транспортную таблицу и записываем с найденным
решением.
-100
+50
+O
-100
0
150
100
O
b1 = 150 b2 = 150 b3 = 300
a1 = 100
2
a2 = 200
5
a3 = 300
3
150
v1
0
1
100
2
u1
7
200
6
u2
5
u3
2
150
v2
v3
Проверяем 2-ое опорное
решение на оптимальность
методом потенциалов.
u1 + v2 = 1
u1 + v3 = 2
u2 + v3 = 6
u3 + v1 = 3
u3 + v2 = 2
u1 = 0
v1 = 2
u2 = 4
v2 = 1
u3 = 1
v3 = 2
11 = 2 – (0 + 2) = 0
21 = 5 – (4 + 2) = -1 < 0
22 = 7 – (4+ 1) = 2 > 0
33 = 5 – (1 + 3) = 2 > 0
Вывод: 2-ий план не является оптимальным.
-0
+100
+O
-200
+150
-150
O
100
0
200
150
150
b1 = 150 b2 = 150 b3 = 300
a1 = 100
2
1
100
2
u1
7
200
6
u2
5
u3
a2 = 200
0
5
a3 = 300
150
3
v1
2
150
v2
v3
Проверяем 3-ье опорное решение
на оптимальность методом
потенциалов.
u1 + v3 = 2
u2 + v1 = 5
u2 + v3 = 6
u3 + v1 = 3
u3 + v2 = 2
u1 = 0
v1 = 1
u2 = 4
v2 = 0
u3 = 2
v3 = 2
11 = 2 – (0 + 1) = 1 > 0
12 = 1 – (0 + 0) = 1 > 0
22 = 7 – (4 + 0) = 3 > 0
33 = 5 – (2 + 2) = 1 > 0
Получили оптимальное решение.
x11 = 0
x12 = 0
x13 = 100
x21 = 0
x22 = 0
x23 = 200
x31 = 150
x32 = 150
x33 = 0
L(x) = 100*2 + 0*5 + 200*6 + 150*3 + 150*2 = 2150 (у. е.)