Разпределителен метод за решаване на транспортната задача по критерия стойност

от Българският сайт за математика

Направо към: навигация, търсене

Ще разгледаме една от типичните задачи на линейното програмиране - така наречената транспортна задача. Ще изясним метода за решаването й с конкретна задача.

1. Дадени са три производителя (отправни пунктове) A_1, A_2 и A_3. Производството трябва да се разпредели на пет потребителя (крайни пунктове) така, че транспортните разходи да бъдат минимални. Производството, потребностите и транспортните разходи са дадени в следната таблица:

 Потребители    B_1    B_2    B_3    B_4    B_5     Производство
Производители
     A_1         4      2      5      7      6           20 
     A_2         7      8      3      4      5          110
     A_3         2      1      4      3      2          120
 Потребности    70     40     30     60     50          250

Стойностите с удебелен шрифт показват транспортните разходи за единица стоки от производител до съответен потребител. Например, от A_2 до B_4 транспортните разходи на единица стоки са 4.

Разпределителният метод се състои в сътавяне на изходен (базисен) план, проверка за оптималност на този план и ако не е оптимален - подобряването му и т.н.

За построяване на изходния план се използва така нареченото двупосочно предпочитание. Отбелязват се най-ниските транспортни разходи в таблицата както по редове, така и по колонки.

Картинка:fig25.gif

В първия ред най-нисък разход има клетката (1, 2), т.е. (2). Отбелязваме я с кръстче ("x"). Във втория - клетката (2, 3), в третия (3, 2). По същия начин се отбелязват разходите и по колонки. Запълването на клетките започва от двойно отбелязаните келтки. Това са клетките (2, 3) и (3, 2). По-малък транспортен разход има втората клетка, така че ще започнем от нея. В клетката (3, 2) ще поставим по-малкото от числата 120 и 40. С други думи цялата потребност на втория потребител задоволяваме само от третия производител или клетките (1, 2) и (2, 2) ще останат празни. Същото правим и с клетка (2, 3) - там поставяме по-малкото от числата 110 и 30, т.е. 30, а клетките (1, 3) и (3, 3) остават празни. Продължаваме запълването на онези клетки, които са еднократно отбелязани и с по-малък разход. Това са клетките (3, 5) и (3, 1). Понеже взехме 40 от производството на A_3, то остават 90 и 50, т.е. 50. За клетка (3, 1) остава 30, а останалите са празни. Производството на A_1 може да се даде единствено на B_1, т.е. в клетка (1, 1) поставяме 20, а в (2, 1) оставащите също 20 единици.

Получава се едно примерно разпределение, което, за да бъде решение, е необходимо да отговаря на следното условие:

 P = a + b - 1
 P - броят на запълнените с нулеви товари клетки;
 a - броят на производителите (отправните пунктове);
 b - броят на потребителите (крайните пунктове).
 При тази задача: P = 3 + 5 - 1 = 8 - 1 = 7.

В разпределението, което направихме, броят на запълнените с ненулеви товари клетки е точно 7, следователно то е решение или план.

Следващият етап при решаване на транспортната задача е проверка за оптималност.

Общата сума на транспортните разходи се получава така:

 Z = 20.4 + 20.7 + 30.3 + 60.4 + 30.2 + 40.1 + 50.2 = 
= 80 + 140 + 90 + 240 + 60 + 40 + 100 = 750

За да се провери за оптималност е необходимо да се направи обход на всички нулеви клетки. Ако решението е оптимално, то всички обходи са неотрицателни числа. В противен случай решението се нуждае от подобрение. Обход на нулева клетка се нарича изпъкнал многоъгълник със следните изисквания:

- тръгва се от нулевата клетка и се връщаме пак в нея;
- може да се преминава през друга празна клетка, но се спира само в нулевата;
- числото на обхода се получава като алгебричен сбор от транспортните разходи на клетките, които са върхове на многоъгълника, като се започва с + и знаците алтернативно се сменят.

Картинка:fig26.gif

За обхода на клетка (1, 2) се тръгва от нея, спираме в клетка (3, 2), след това - в (3, 1) от нея в клетка (1, 1) и се връщаме в (1, 2). За числата на обхода се получава:

  (1, 2) -> +2 - 1 + 2 - 4 = -1 
(1, 3) -> +5 - 3 + 7 - 4 = +5
(1, 4) -> +7 - 4 + 7 - 4 = +6
(1, 5) -> +6 - 2 + 2 - 4 = +2
(2, 2) -> +8 - 1 + 2 - 7 = +2
(2, 5) -> +5 - 2 + 2 - 7 = -2
(3, 3) -> +4 - 2 + 7 - 3 = +6
(3, 4) -> +3 - 2 + 7 - 4 = +4

При две от клетките се получават отрицателни числа, а именно (1, 2) и (2, 5), следователно решението не е оптимално и се нуждае от подобрение.

Нека разгледаме обходите на тези клетки, като ги изведем вън от таблицата.

Картинка:fig27.gif

Стремежът е да сменим знаците на числата, чрез които се получава обходът, т.е. да изпразним клетка (2, 1), а да запълним клетка (2, 5). За да се наруши балансът, то от клетка (3, 1), чийто товар става 50.

Получава се ново разпределение, което е подобрен план.

Картинка:fig28.gif

Действително за общата стойност на транспортните разходи се получава:

Z_1 = 20.4 + 30.3 + 60.4 + 20.5 + 50.2 + 40.1 + 30.2 = <br>
          = 80 + 90 + 100 + 100 + 40 + 60 = 710

Аналогично за:

Картинка:fig29.gif

Получихме ново решение:

Картинка:fig30.gif

Z_2 = Z_{min} = 20.2 + 30.3 + 60.4 + 20.5 + 70.2 + 20.1 + 30.2 =<br> 
         = 40 + 90 + 240 + 100 + 140 + 20 + 60 = 690
Лични инструменти