Транспортна задача
Сиплекс-метод є універсальним методом розв'язання задач лінійного програмування. Проте існує клас задач, що можна вирішити більш просто. До них відносяться розподільні задачі, наприклад, транспортна задача, що одержала широке практичне застосування.
У загальному вигляді транспортна задача формулюється: нехай мається m пунктів постачальників, у кожному з який є свій запас вантажу j= 1, 2, ..., m. Цей вантаж необхідно доставити в n пунктів споживачів. Потреба вантажу складає bj, j = 1, 2, …, n. Відома вартість перевозу одиниці вантажу сij з аi в bi. Необхідно скласти такий план перевозів вантажу, щоб задовольнити усіх споживачів і мінімізувати витрати на перевезення, тобто визначити хij (кількість вантажу з пункту i у j) так, щоб цільова функція була мінімальною.
min
Вважаємо, що кількість вантажів на пунктах постачальника дорівнює потрібній кількості вантажу.

У даному випадку ми маємо задачу лінійного програмування, у якій є (n+m) обмежень і (nm) невідомих. Вирішити дану задачу можна різноманітними способами, один із них розподільний метод. У цьому випадку використовується таблиця, що заповнюється в такий спосіб:
|
Пункти постачальника |
Споживачі | |||||
|
В1 |
В2 |
… |
Вn |
Запас | ||
|
А1 |
c11 |
c12 |
… |
c1n |
a1 | |
|
А2 |
c21 |
c22 |
… |
c2n |
a2 | |
|
… |
… |
… |
… |
… |
… | |
|
Аm |
cm1 |
cm2 |
… |
cmn |
am | |
|
Споживачі |
b1 |
b2 |
… |
bn |
| |
С початку складається вихідний допустимий план перевезень. При машинному розрахунку звичайно для цього використовується метод північно-західного кута. При ручному розрахунку при заповненні таблиці поверх униз обчислюється квадрат із мінімальною вартістю перевезень, а потім виконується зміна плану перевезень так, щоб значення цільової функції зменшувалося.
Покажемо сутність даного методу на прикладі.
Нехай є 3 пункти постачальників (m=3) і 4 пункти споживачів (n=4), запас вантажу а1=10, а2=15, а3=7, потреба у вантажах b1=3, b2=5, b3=10, b4=14.
|
|
В1 |
В2 |
В3 |
В4 |
ai |
|
А1 |
31 |
53 |
27 |
1 |
10 |
|
А2 |
2 |
4 |
82 |
73 |
15 |
|
А3 |
6 |
5 |
4 |
71 |
7 |
|
bj |
3 |
5 |
10 |
14 |
|
z = 3 + 15 + 14 + 16 + 21 + 7 = 76
x11 = 3 x12 = 5 x13 = 2
x23 = 8 x24 = 7
x34 = 7
min
|
|
В1 |
В2 |
В3 |
В4 |
ai |
|
А1 |
31 |
3 |
7 |
71 |
10 |
|
А2 |
2 |
4 |
102 |
53 |
15 |
|
А3 |
6 |
55 |
4 |
21 |
7 |
|
bj |
3 |
5 |
10 |
14 |
|
|
|
В1 |
В2 |
В3 |
В4 |
ai |
|
А1 |
31 |
53 |
-7 |
21 |
10 |
|
А2 |
2 |
4 |
10-2 |
53 |
15 |
|
А3 |
6 |
5 |
4 |
71 |
7 |
|
bj |
3 |
5 |
10 |
14 |
|
z = 3 + 15 + 2 + 20 + 15 + 7 = 62
Вибір кращого плану перевозу здійснюється шляхом обчислення різниці між новим і старим значеннями функції по формулі:
z(1) – z(0) = (1 – 7 – 2 + 3)
У складах зміна вартості вантажу при зміні плану з усіх обчислених по незаповнених квадратах змінам вартості вибирається найбільше від'ємне, що вказує, як зробити зміну плану перевезень.
Кількість перерозподілу вантажу дорівнює значенню xij по усіх від'ємних клітинках (2<7). Дана процедура повторюється доти, поки зміна плану перевезень не стане менше.
x13: 7 – 1 + 3 – 2 > 0
z21: 2 – 1 + 1 – 3 = – 1
z22: 4 – 3 + 1 – 3 = – 7
z31: 6 – 1 + 1 – 1 > 0
x32: 5 – 3 + 1 – 1 > 0
x33: 4 – 2 + 3 – 1 > 0
У тому випадку, коли кількість заповнених квадратів буде менше (m+n–1), варто ввести додаткову змінну, рівну нулю, що не вплине на сумарну вартість перевезення вантажу.
|
|
В1 |
В2 |
В3 |
В4 |
ai |
|
А1 |
31 |
3 |
7 |
7-1 |
10 |
|
А2 |
2 |
5-4 |
102 |
3 |
15 |
|
А3 |
6 |
0-5 |
4 |
71 |
7 |
|
bj |
3 |
5 |
10 |
14 |
|
x12: 3 – 1 + 1 – 5 = – 2
x13: 7 – 1 + 1 – 5 + 4 – 2 > 0
x21: 2 – 1 + 1 – 5 – 4 > 0
x24: 3 – 1 + 5 – 4 > 0
x31: 6 – 1 + 1 > 0
