
- •Содержание
- •Введение
- •Линейное программирование
- •1.1. Метод Жордана-Гаусса
- •1.2. Преобразование однократного замещения
- •1.3. Симплексные преобразования
- •1.4. Основные формы записи задач линейного программирования
- •1.5. Графический метод решения задач линейного программирования
- •1.6. Симплексный метод решения задач линейного программирования
- •1.7. Теория двойственности
- •1.8. Транспортная задача
- •Практикум
- •Вопросы для подготовки к экзамену
- •Список рекомендуемой литературы
1.8. Транспортная задача
Транспортная задача - это задача о перевозке некоторого груза от m поставщиков к n потребителям. Обычно условия транспортной задачи задаются в таблице.
-
А\В
……
……..
…….
……
…….
…….
…….
…….
…….
…….
В этой таблице:
-
запас груза у поставщика
;
-
потребность в грузе у потребителя
;
-
стоимость перевозки единицы груза от
поставщика к потребителю (тариф
перевозки).
Если
суммарный запас равен суммарным
потребностям, т.е.
,
то имеем закрытую модель транспортной
задачи. Если нет, то открытую модель.
Рассмотрим решение закрытой модели транспортной задачи.
1.
Как и при решении ЗЛП симплексным
методом, определение оптимального плана
транспортной задачи начинают с нахождения
исходного опорного плана. Этот план
наиболее рационально находить методом
минимального элемента (существуют и
другие методы его нахождения). Для этого
в таблице тарифов выбираем минимальный
(например
)
и в клетку, которая ему соответствует,
помещаем наименьшее из чисел
и
.
Затем из рассмотрения исключаем либо
строку, соответствующую поставщику,
запасы которого полностью израсходованы;
либо столбец, соответствующий потребителю,
потребности которого полностью
удовлетворены. Так на каждом шаге
исключается либо один поставщик, либо
один потребитель. При этом если клетка
подлежит заполнению, но запасы равны
нулю, то на этом шаге в соответствующую
клетку заносится базисный нуль (0*). Из
оставшейся части таблицы снова выбираем
минимальный тариф и т.д. до тех пор, пока
все запасы не будут распределены,
потребители удовлетворены. Если
минимальных элементов несколько, то
выбираем ту клетку, которой соответствует
наибольшая перевозка. Таким образом,
находим исходный опорный план. Этот
опорный план должен содержать
занятую клетку.
2. Для проверки найденного плана на оптимальность используется метод потенциалов.
2.1.
Для «занятых» клеток составляем систему
уравнений
,
где
-
потенциалы поставщиков,
-
потенциалы потребителей. Получаем
линейных
уравнений с
неизвестными. Такая система имеет
множество
решений. Чтобы найти любое из них, надо
одной из переменных дать произвольное
значение (например
).
Находим значения остальных потенциалов.
2.2.
Для «свободных» клеток находим числа
.
Если все
,
то найденный опорный план будет
оптимальным. Если есть хотя бы один
,
то найденное решение не оптимально.
Среди всех положительных
находим одно максимальное (например,
)
и делаем перераспределение поставок
груза относительно свободной клетки
.
Если среди всех положительных
имеется несколько одинаковых максимальных,
то выбираем любое.
Перераспределение поставок в таблице условий транспортной задачи производится по циклу.
Цикл
– это цепь, многоугольник, все вершины
которого находятся в занятых клетках,
углы прямые, число вершин четное. После
того, как цикл пересчета построен, в
вершинах цикла, начиная со свободной
клетки
,
ставим поочередно «+» и «–». Далее в «–»
клетках находим минимальный груз
,
который прибавляем к грузам в «+» клетках
и отнимаем от грузов в «–» клетках.
Таким образом, свободная клетка
становится занятой с грузом, а одна
занятая клетка освобождается. Общее
число занятых клеток в новом опорном
плане должно сохраняться, т.е.
.
Этот
новый план распределения поставок
проверяем на оптимальность (переходим
к пункту 2). Процесс продолжаем до тех
пор, пока не получим, что все
.
После того как оптимальный план перевоз
будет найден, выписываем опорный план
и находим минимальную стоимость
перевозок.
Замечание.
Основные виды циклов:
|
|
|
|
Пример
10. Имеется
четыре пункта поставки однородного
груза
,
,
,
,
в каждом из которых находится груз
соответственно в количестве
,
,
,
тонн и пять пунктов потребления этого
груза
,
,
,
,
.
В пункты
,
,
,
,
требуется доставить соответственно
,
,
,
,
тонн груза. Транспортные расходы при
перевозке единицы груза из пункта
в пункт
равны
.
Найти такой план закрепления потребителей
за поставщиками, чтобы затраты по
перевозкам были минимальными.
– пункты
поставки груза,
– пункты
потребления,
– тарифы.
Решение.
По условию задачи составим таблицу:
-
6
11
20
17
8
12
1
25
3
18
17
17
9
39
16
30
31
18
23
15
4
3
28
13
10
8
12
14
16
1. Найдем суммарный запас и суммарные потребности:
,
.
Так
как суммарный запас равен суммарным
потребностям, т.е.
,
то имеем закрытую модель транспортной
задачи.
2.
Находим исходный опорный план методом
минимального элемента. Число занятых
клеток должно равняться:
.
-
6
11
2
0
1
7
8
12
1
2
1
10
2 5
3
7
1
8
1
7
17
9
39
8
16
5
30
1
31
4
1
8
23
1
5
4
3
13
2
8
13
10
8
1
2
14
16
Среди
всех тариф перевозки
находим наименьший. В нашей задаче
,
в клетку
пишем наименьшее из чисел: запаса
поставщика
или потребности потребителя
,
т.е.
.
Так как потребность первого потребителя
полностью удовлетворили, то его исключаем
из дальнейшего рассмотрения, а запас у
поставщика
остался
равным
.
Далее из оставшейся части таблицы снова
выбираем наименьший тариф перевозки.
И т.д. до тех пор, пока все запасы не будут распределены, потребители удовлетворены.
3. Проверяем найденный план на оптимальность методом потенциалов:
3.1.
Для «занятых» клеток составляем
уравнения
:
3.2.
Для «свободных» клеток находим
:
Строим
в таблице цикл пересчета относительно
клетки (3,1). Он пойдет следующим образом
(3,1)
(2,1)
(2,3)
(3,3).
Расставляем
знаки «+» и «–» в вершинах цикла, начиная
с клетки (3,1). В «–» клетках ищем минимальный
груз
.Этот
груз
прибавляем к грузам в «+» клетках и
отнимаем от грузов в «–» клетках.
Получаем новый план перевозок:
-
6
11
20
17
8
12
12
1
5
25
3
12
18
1
7
17
9
5
39
8
16
30
1
31
4
18
23
15
4
3
13
28
13
10
8
12
14
16
4. Проверяем найденный план на оптимальность методом потенциалов:
4.1. Для «занятых» клеток:
4.2. Для «свободных» клеток:
Строим в таблице цикл пересчета относительно клетки (2,5). Он пойдет следующим образом (2,5) (2,1) (3,1) (3,5).
Расставляем
знаки «+» и «–» в вершинах цикла, начиная
с клетки (2,5). В «–» клетках ищем минимальный
груз
.Этот
груз
прибавляем к грузам в «+» клетках и
отнимаем от грузов в «–» клетках.
Получаем новый план перевозок:
-
6
1
1
20
17
8
12
12
1
1
25
3
12
18
17
4
17
9
9
39
8
16
30
1
31
18
23
15
4
3
13
28
13
10
8
12
14
16
5. Проверяем найденный план на оптимальность:
5.1. Для «занятых» клеток:
5.2. Для «свободных» клеток:
Строим в таблице цикл пересчета относительно клетки (1,2). Он пойдет следующим образом (1,2) (1,5) (2,5) (2,1) (3,1) (3,2).
Расставляем
знаки «+» и «–» в вершинах цикла, начиная
с клетки (1,2). В «–» клетках ищем минимальный
груз
.Этот
груз
прибавляем к грузам в «+» клетках и
отнимаем от грузов в «–» клетках.
Получаем новый план перевозок:
-
6
1
1
1
20
17
8
11
12
1
25
3
12
18
17
5
17
9
10
39
7
1 6
30
1
31
18
23
15
4
3
13
28
13
10
8
12
14
16
6. Проверяем найденный план на оптимальность:
6.1. Для «занятых» клеток:
6.2. Для «свободных» клеток:
Строим в таблице цикл пересчета относительно клетки (3,3). Он пойдет следующим образом (3,3) (2,3) (2,5) (1,5) (1,2) (3,2).
Расставляем
знаки «+» и «–» в вершинах цикла, начиная
с клетки (3,3). В «–» клетках ищем минимальный
груз
.Этот
груз
прибавляем к грузам в «+» клетках и
отнимаем от грузов в «–» клетках.
Получаем новый план перевозок:
-
6
11
8
20
17
8
4
12
1
25
3
5
18
17
12
17
9
10
39
7
16
30
1
31
18
23
15
4
3
13
28
13
10
8
12
14
16
7. Проверяем найденный план на оптимальность:
7.1. Для «занятых» клеток:
7.2. Для «свободных» клеток:
Так
как все
,
найденный план является оптимальным.
8. Найдем минимальную стоимость перевозок
Ответ:
Особенности решения транспортных задач с неправильным балансом.
Если
суммарные запасы поставщиков превосходят
суммарные запросы потребителей, т.е.
,
то необходимо ввести фиктивного
– го потребителя, с запросами равными
и нулевыми
стоимостями перевозок единиц груза.
Если
суммарные запросы потребителей
превосходят суммарные запасы поставщиков,
т.е.
,
то необходимо ввести фиктивного
– го поставщика, с запасами равными
и нулевыми стоимостями перевозок единиц
груза.
При составлении начального опорного решения в последнюю очередь следует распределять запасы фиктивного поставщика и удовлетворять запросы фиктивного потребителя, не смотря на то, что им соответствует наименьшая стоимость перевозок, равная нулю.
Транспортная задача с ограничениями.
При решении ТЗ иногда необходимо ограничить перевозки от l – го поставщика к k – му потребителю. Возможны ограничения двух типов:
;
.
Если
,
то необходимо сначала сократить
(уменьшить) запасы
–
го поставщика и запросы
– го потребителя на величину
,
т.е. зарезервировать перевозку
.
В полученном оптимальном решении следует
увеличить объем перевозки
на величину
.
Если
,
то необходимо вместо
– го потребителя с запросами
ввести двух новых, один с номером
,
с запросами
,
а другой с номером
,
запросы которого
.
Стоимости перевозок для этих потребителей
остаются прежними, за исключением
,
которая принимается равной сколь угодно
большому числу
.
После
получения оптимального решения величины
грузов, перевозимых к
–
му потребителю прибавляют к величинам
грузов
– го потребителя. Так как
самый большой тариф, то в оптимальном
решении эта клетка останется не занятой
и объем перевозки
.
Пример 11. Решить транспортную задачу при дополнительный условиях: объем перевозки от второго поставщика второму потребителю должен быть не менее 200 ед, а от третьего первому – не более 300 ед.
Запасы поставщиков
|
Запросы потребителей |
||
600 |
500 |
400 |
|
300 |
2
|
9 |
10 |
400 |
3
|
11 |
13 |
500 |
4
|
15 |
12 |
Решение.
Для
того чтобы удовлетворить условию
,
вместо первого потребителя введем двух
других:
с прежними стоимостями перевозок;
,
имеющий те же стоимости, что и первого
потребителя, за исключением
.
После нахождения оптимального решения
задачи объемы перевозок для четвертого
потребителя необходимо прибавить к
соответствующим объемам перевозок для
первого потребителя.
Для
того чтобы удовлетворить условию
,
при решении задачи будем предполагать,
что запасы второго поставщика и запросы
второго потребителя меньше фактических
на 200 ед. после получения оптимального
решения объем перевозки
увеличиваем на 200 ед.
В результате указанных преобразований таблица исходных данных задачи будет иметь следующий вид:
|
300 |
300 |
400 |
300 |
300 |
2
|
9
|
10
|
2
|
200 |
3
|
11
|
13
|
3
|
500 |
4
|
15
|
12
|
М
|
Далее
задачу решаем обычным методом потенциалов.
Так как суммарные запасы поставщиков
1000, а суммарные потребности потребителей
1300, задача с неправильным балансом.
Вводим фиктивного поставщика с запасами
.
Составляем
начальное опорное решение
методом минимальной стоимости и находим
потенциалы:
|
|
|
|
|
|
|
300 |
300 |
400 |
300 |
|
300 |
2 3 |
9 |
10 |
2
|
|
200 |
3 |
11 |
13 |
3 200 |
|
500 |
4 |
10 300 |
12 2 |
М |
|
300 |
0 |
0 |
0 200 |
0 100 |
|
Все
оценки свободных клеток неположительные,
за исключением
.
Для клетки (3, 1) строим цикл. Он состоит
из клеток (3, 1), (1, 1), (1, 4), (4, 4), (4, 3), (3, 3).
Находим величину груза для перераспределения
по циклу, т.е.
.
Осуществляем сдвиг по циклу на величину
равную 100. Получаем новое опорное решение
.
|
|
|
|
|
|
|
300 |
300 |
400 |
300 |
|
300 |
2 200 |
9 |
10 |
2 100 |
|
200 |
3 |
11 |
13 |
3 200 |
|
500 |
4 100 |
10 300 |
12 100 |
М |
|
300 |
0 |
0 |
0 300 |
0
|
|
Так как все оценки неположительные, решение оптимальное. Для записи оптимального решения увеличим объем перевозки на 200 ед. и объединим объемы перевозок четвертого потребителя с объемами перевозок первого потребителя.
Получим
.
Ответ: