
- •1. Транспортная задача: общая постановка, алгоритм решения, основные методы построения ппп, ограничения.
- •Формулировка транспортной задачи.
- •Общий алгоритм решения транспортной задачи:
- •1.3 Основные методы построения первоначального опорного плана.
- •1.3.2 Метод минимальной стоимости
- •1.3.3 Метод аппроксимации Фогеля
- •1.4 Транспортная задача с дополнительными условиями.
- •2 Примеры ограничений в транспортной задаче и методы их решения
- •2.1 Запрет перевозок.
- •2.2 Обязательная поставка
- •2.3 Задача с запретом поставки и обязательной поставкой
- •2.4 «Потолок» транспортных перевозок
- •2.5 «Пол» транспортных перевозок
- •3 Решение транспортных задач с ограничениями с помощью эвм
- •3.1Решение транспортной задачи с помощью ms Excel.
- •3.2 Программная реализация транспортной задачи с помощью Delphi 7
2.2 Обязательная поставка
Данная поставка чаще всего зафиксирована договором между потребителем и поставщиком и должна быть обязательно осуществлена.
Рассмотрим пример решения такой задачи.
Таблица 1. Первоначальные данные
Запасы поставщиков |
Потребности потребителей |
||||
200 |
300 |
100 |
200 |
300 |
|
100 |
4 |
5 |
7 |
4 |
1 |
200 |
5 |
8 |
8 |
9 |
3 |
300 |
2 |
4 |
5 |
4 |
6 |
500 |
7 |
1 |
2 |
2 |
4 |
Пусть, в силу определенных обстоятельств (например, госзаказ), третий поставщик А3, несмотря на фактические затраты, обязан поставить четвертому потребителю В4 не менее 100 единиц продукции. Исключим эту обязательную поставку из транспортной таблицы (таблица 2).
Таблица 2. Исключение обязательной поставки
Запасы поставщиков |
Потребности потребителей |
||||
200 |
300 |
100 |
100 |
300 |
|
100 |
4 |
5 |
7 |
4 |
1 |
200 |
5 |
8 |
8 |
9 |
3 |
200 |
2 |
4 |
5 |
4 |
6 |
500 |
7 |
1 |
2 |
2 |
4 |
Далее задача решается как обычная транспортная задача.
2.3 Задача с запретом поставки и обязательной поставкой
Решать задачи с обязательной поставкой и с запретной поставкой интересно, но гораздо интересней решать комбинированные задачи, то есть такие, где применяется и, то и то. Именно такую задачу мы сейчас и рассмотрим.
Итак,
дана задача: на складах хранится сахарный
песок, который необходимо завезти в
кондитерские цеха. Номера складов и
номера кондитерских даны (таблица 4).
Текущие тарифы перевозки сахарного
песка [руб./т], ежемесячные запасы
сахарного песка [т/мес] на складах и
потребности кондитерских в сахарном
песке [т/мес] указаны (таблица 4).
При этом необходимо учитывать, что из-за ремонтных работ временно нет возможности перевозить сахарный песок с некоторых складов в некоторые кондитерские. В таблице 3 это показано в графе "Запрет перевозки" в формате № склада х № кондитерского цеха. Например, «3x3» обозначает, что нельзя перевозить сахарный песок со склада № 3 в кондитерский цех № 3.
Кроме того, необходимо учесть, что некоторые кондитерские цеха имеют договоры на гарантированную поставку сахарного песка с определенных складов. В таблице 4 это показано в графе "Гарантированная поставка" в формате № склада х № хлебопекарни = объем поставки. Например, «3x5=40» обозначает, что между складом № 3 и магазином № 5 заключен договор на обязательную поставку 40 т сахарного песка.
Необходимо организовать поставки наилучшим образом, учитывая, что сахарный песок хранится и транспортируется в мешках весом по 50 кг.
Таблица 3. Запрещенные и гарантированные поставки
Запрет перевозки |
Гарантированная поставка, т/мес. |
3x3, 4x5 |
3x5=40 |
Таблица 4.Запасы, потребности и тарифы перевозок
Склады |
Кондитерские цеха |
|||||
1 |
2 |
3 |
4 |
5 |
Запас, т/мес. |
|
1 |
4 |
6 |
8 |
2 |
2 |
80 |
2 |
3 |
1 |
5 |
6 |
5 |
70 |
3 |
5 |
2 |
1 |
6 |
3 |
60 |
4 |
3 |
7 |
2 |
4 |
9 |
55 |
5 |
2 |
5 |
8 |
2 |
4 |
65 |
Спрос, т/мес. |
78 |
57 |
59 |
63 |
74 |
|
Прежде чем проверять сбалансированность задачи, надо исключить объем гарантированной поставки из дальнейшего рассмотрения. Для этого вычтем 40 т из следующих величин:
из запаса третьего склада = 60-40= 20т/мес.;
из потребности в сахарном песке пятого кондитерского цеха
b2 = 74-40 = 34 т/мес.
Согласно условию задачи сахарный песок хранится и перевозится в мешках по 50 кг, то есть единицами измерения переменных хij являются мешки муки. Но запасы сахарного песка на складах и потребности в ней магазинов заданы в тоннах. Поэтому для проверки баланса и дальнейшего решения задачи приведем эти величины к одной единице измерения - мешкам. Например, запас сахарного песка на первом складе равен 80 т-мес = 1600 меш/мес, а потребность третьего кондитерского цеха составляет 59 т/месс = 1180меш./мес. Также мы производим расчет и на остальных складах и кондитерских цехах.
Для данной ТЗ имеет место соотношение:
склады кондитерские цеха 1600+1400+400+1100+1300= 5800 < 1360+1140+1180+1260+680=5620 .
Ежемесячный суммарный запас сахарного песка на складах больше суммарной потребности кондитерских на 180 мешков сахара, откуда следует вывод: ТЗ не закрытой модели. Чтоб сделать модель закрытой, мы вводим фиктивный кондитерский цех с потребностью 180 мешков
Черным цветом закрашены ячейки, в которых запрет поставки или гарантированная поставка, которую мы исключили из рассмотрения.
Таблица 5.Транспортная матрица задачи
Склады |
Кондитерские цеха |
||||||
|
1360 |
1140 |
1180 |
1260 |
680 |
180 |
|
1600 |
4[1360] |
6[240] |
8 |
2 |
2 |
0 |
|
1400 |
3 |
1[900] |
5[500] |
6 |
5 |
0 |
|
400 |
5 |
2 |
1 |
6[400] |
3 |
0 |
|
1100 |
3 |
7 |
2[680] |
4[420] |
9 |
0 |
|
1300 |
2 |
5 |
8 |
2[440] |
4[680] |
0[180] |
Посчитаем ранг 6+5-1=10
Итак, мы разобрались в задаче, теперь получим методом северо-западного угла первоначальный план перевозок, учитывая гарантированную поставку и запрет доставки. Помним, что черные ячейки исключены из рассмотрения.
(1,1): min (1600; 1360) = 1360
(1,2): min (1600-1360; 1140) =240
(2,2): min (1400; 1140-240) =900
(2,3): min (1400-900; 1180) =500
По алгоритму следующей должна была быть ячейка (3,3), на в данной ячейке стоит запрет доставки, поэтому мы не можем туда поставлять.
(4,3): min (1100; 1180-500) =680
(3,4): min (400; 1260) =400
(4,4): min (1100-680; 1260-400) =420
(5,4): min (1300; 1260-400-420) =440
(5,5): min (1300-440; 680) =680
(5,6): min (1300-440-680; 180) =180
F=4*1360+6*240+1*900+5*500+2*680+6*400+4*420+2*440+4*680=19320
Сделаем проверку:
Ранг совпадает, баланс не нарушен. Первоначальный план перевозок построен, можем непосредственно начать решение задачи с помощью метода потенциалов.
Таблица 6. 1 этап решения
Склады |
Кондитерские цеха |
|||||||
|
1360 |
1140 |
1180 |
1260 |
680 |
180 |
Vi |
|
1600 |
4[1360] |
6[240] |
8 |
2 |
2 |
0 |
0 |
|
1400 |
3 |
1[900] |
5[500] |
6 |
5 |
0 |
5 |
|
400 |
5 |
2 |
1 |
6[400] |
3 |
0 |
6 |
|
1100 |
3 |
7 |
2[680] |
4[420] |
9 |
0 |
8 |
|
1300 |
2 |
5 |
8 |
2[440] |
4[680] |
0[180] |
10 |
|
Uj |
-4 |
-6 |
-10 |
-12 |
-14 |
-10 |
|
С
троим
матрицу оценок по формуле Vi+Uj+Cji=0
(для заполненной клетки) и Vi+Uj+Cji
(для пустой клетки):
0 0 -2 -10 -12 -10
4 0 0 -1 -4 -5
7 2 зп 0 зп -4
7 9 0 0 гп -2
8 9 8 0 0 0
Не забываем каждый раз проверять ранг!
Как мы видим, в нашей матрице оценок много отрицательных значений, это значит, что мы нашли не оптимальный вариант поставки.
Используем
цикл пересчета: M
in
(420;180)=180
Таблица 7. 2 этап решения
Склады |
Кондитерские цеха |
|||||||
|
1360 |
1140 |
1180 |
1260 |
680 |
180 |
Vi |
|
1600 |
4[1360] |
6[240] |
8 |
2 |
2 |
0 |
0 |
|
1400 |
3 |
1[900] |
5[500] |
6 |
5 |
0 |
5 |
|
400 |
5 |
2 |
1 |
6[400] |
3 |
0 |
6 |
|
1100 |
3 |
7 |
2[680] |
4[240] |
9 |
0[180] |
8 |
|
1300 |
2 |
5 |
8 |
2[620] |
4[680] |
0 |
10 |
|
Uj |
-4 |
-6 |
-10 |
-12 |
-14 |
-8 |
|
Строим матрицу оценок:
0
0 -2 -10 -12 -8
4 0 0 -1 -4 -3
7 2 зп 0 зп -2
7 9 0 0 гп 0
8 9 8 0 0 2
Как мы видим, в нашей матрице оценок все еще много отрицательных значений, это значит, что мы еще не нашли оптимальный вариант поставки. Будем менять план до тех пор, пока в матрице будут оставаться отрицательные оценки. Причем, если мы решаем обратную задачу, то есть на максимизацию прибыли, то наоборот решаем до тех пор, пока в матрице оценок будут оставаться положительные значения. В этом заключается существенное отличие задач на максимизацию прибыли и минимизацию затрат.
С троим цикл пересчета: Min(500;180)=180
Таблица 8. 3 этап решения
Склады |
Кондитерские цеха |
|||||||
|
1360 |
1140 |
1180 |
1260 |
680 |
180 |
Vi |
|
1600 |
4[1360] |
6[240] |
8 |
2 |
2 |
0 |
0 |
|
1400 |
3 |
1[900] |
5[320] |
6 |
5 |
0[180] |
5 |
|
400 |
5 |
2 |
1 |
6[400] |
3 |
0 |
6 |
|
1100 |
3 |
7 |
2[860] |
4[240] |
9 |
0 |
8 |
|
1300 |
2 |
5 |
8 |
2[620] |
4[680] |
0 |
10 |
|
Uj |
-4 |
-6 |
-10 |
-12 |
-14 |
-5 |
|
Строим матрицу оценок:
0
0 -2 -10 -12 -5
4 0 0 -1 -4 0
7 2 зп 0 зп 1
7 9 0 0 гп 3
8 9 8 0 0 5
С троим цикл пересчета: Min(240;180)=180
Таблица 9. 4 этап решения
Склады |
Кондитерские цеха |
|||||||
|
1360 |
1140 |
1180 |
1260 |
680 |
180 |
Vi |
|
1600 |
4[1360] |
6[60] |
8 |
2 |
2 |
0[180] |
0 |
|
1400 |
3 |
1[1080] |
5[320] |
6 |
5 |
0 |
5 |
|
400 |
5 |
2 |
1 |
6[400] |
3 |
0 |
6 |
|
1100 |
3 |
7 |
2[860] |
4[240] |
9 |
0 |
8 |
|
1300 |
2 |
5 |
8 |
2[620] |
4[680] |
0 |
10 |
|
Uj |
-4 |
-6 |
-10 |
-12 |
-14 |
0 |
|
Строим матрицу оценок:
0 0 -2 -10 -12 0
4 0 0 -1 -4 5
7 2 зп 0 зп 6
7 9 0 0 гп 8
8 9 8 0 0 10
С троим цикл пересчета: Min(60;320)=60
Таблица 10. 5 этап решения
Склады |
Кондитерские цеха |
|||||||
|
1360 |
1140 |
1180 |
1260 |
680 |
180 |
Vi |
|
1600 |
4[1360] |
6 |
8[60] |
2 |
2 |
0[180] |
0 |
|
1400 |
3 |
1[1140] |
5[260] |
6 |
5 |
0 |
3 |
|
400 |
5 |
2 |
1 |
6[400] |
3 |
0 |
4 |
|
1100 |
3 |
7 |
2[860] |
4[240] |
9 |
0 |
6 |
|
1300 |
2 |
5 |
8 |
2[620] |
4[680] |
0 |
8 |
|
Uj |
-4 |
-4 |
-8 |
-10 |
-12 |
0 |
|
Строим матрицу оценок:
0 2 0 -8 -10 0
2 0 0 -1 -4 3
5 2 зп 0 зп 4
5 9 0 0 гп 6
6 8 8 0 0 8
С троим цикл пересчета: Min(260;240)=240
Таблица 11. 6 этап решения
Склады |
Кондитерские цеха |
|||||||
|
1360 |
1140 |
1180 |
1260 |
680 |
180 |
Vi |
|
1600 |
4[1360] |
6 |
8[60] |
2 |
2 |
0[180] |
0 |
|
1400 |
3 |
1[1140] |
5[20] |
6[240] |
5 |
0 |
3 |
|
400 |
5 |
2 |
1 |
6[400] |
3 |
0 |
3 |
|
1100 |
3 |
7 |
2[1100] |
4 |
9 |
0 |
6 |
|
1300 |
2 |
5 |
8 |
2[620] |
4[680] |
0 |
7 |
|
Uj |
-4 |
-4 |
-8 |
-9 |
-12 |
0 |
|
Строим матрицу оценок:
0 2 0 -7 -10 0
2 0 0 0 -4 3
5 2 зп 0 зп 3
5 9 0 1 гп 6
6 8 8 0 0 7
С троим цикл пересчета: Min(60;240)=240
Таблица 12. 7 этап решения
Склады |
Кондитерские цеха |
|||||||
|
1360 |
1140 |
1180 |
1260 |
680 |
180 |
Vi |
|
1600 |
4[1360] |
6 |
8 |
2[60] |
2 |
0[180] |
0 |
|
1400 |
3 |
1[1140] |
5[80] |
6[180] |
5 |
0 |
-4 |
|
400 |
5 |
2 |
1 |
6[400] |
3 |
0 |
-4 |
|
1100 |
3 |
7 |
2[1100] |
4 |
9 |
0 |
-1 |
|
1300 |
2 |
5 |
8 |
2[620] |
4[680] |
0 |
0 |
|
Uj |
-4 |
-4 |
-1 |
-2 |
-4 |
0 |
|
Строим матрицу оценок:
0 2 7 0 -2 0
2 0 0 0 -3 -4
5 2 зп 0 зп -4
5 9 0 4 гп -1
6 8 8 0 0 0*
В матрице оценок количество отрицательных значений не сокращается, а наоборот увеличивается, значит предыдущий этап будет самым оптимальным. По нему и находим целевую функцию (минимальные затраты)
F=4*1360+1*1140+8*60+5*20+2*1100+6*240+6*400+2*620+4*680=14760
Если сравнить с тем, что мы получили методом северо-западного угла, то разница 4560.
Вывод: метод потенциалов значительно сокращает издержки, находит оптимальный вариант. Но его удобно реализовать, когда в количество поставщиков и потребителей относительно небольшое и мало ограничений. Как мы убедились, если увеличить количество поставщиков и потребителей и ввести несколько ограничений, то реализация задачи методом потенциалов становится трудоемкой и очень длительной.[4]