Роздрукувати сторінку
Главная \ Методичні вказівки \ Методичні вказівки \ 758 Опорний конспект лекцій з курсу Дослідження операцій Тема 8 Транспортні задачі лінійного програмування, Поняття потенціалу і циклу, НУДПСУ

Опорний конспект лекцій з курсу Дослідження операцій Тема 8 Транспортні задачі лінійного програмування, Поняття потенціалу і циклу, НУДПСУ

« Назад

Лекція №8. ТРАНСПОРТНІ ЗАДАЧІ ЛІНІЙНОГО ПРОГРАМУВАННЯ. Поняття потенціалу і циклу

План

1. Поняття циклу.

2. Перерахунок по циклу.

3. Обчислення суми алгебри тарифів.

4. Поняття потенціалу.

5. Обчислення потенціалів.

6. Додаткова перевірка обчислених потенціалів.

 

3.3. Поняття потенціалу і циклу

Для переходу від одного базису до іншого при розв'язку транспортної задачі використовуються так звані цикли.

Циклом перерахунку або коротше, циклом в таблиці перевезень називається послідовність невідомих, що задовольняє наступним умовам:

1. Одне з невідомих послідовності вільне, а всі інші – базисні.

2. Кожні два сусідніх в послідовності невідомих лежать або в одному стовпці, або в одному рядку.

3. Три послідовних невідомих не можуть знаходитися в одному стовпці або в одному рядку.

4. Якщо, починаючи з якого-небудь невідомого, ми послідовно переходитимемо від одного до наступного за ним невідомому те, через декілька кроків ми повернемося до початкового невідомого.

Друга умова означає, що у двох сусідніх невідомих в циклі або перші, або другі індекси однакові.

Якщо кожні два сусідні невідомі цикли з'єднати відрізком прямої, то буде отримано геометричне зображення циклу – замкнута ламана з горизонтальних і вертикальних ланок, що чергуються, одна з вершин якої знаходиться у вільній клітці, а інші – в базисних клітках.

Можна довести, що для будь-якої вільної клітки таблиці перевезень існує один і лише один цикл, що містить вільне невідоме з цієї клітки, і що число вершин в циклі завжди парно.

Так, наприклад, в таблиці перевезень, що складена за діагональним методом при розв'язку задачі з попереднього пункту, вільному невідомому x21 відповідає цикл x21,x23,,x13,,x11,x21 і т.д.

Хай тепер маємо деяку вільну клітку з відповідним до неї циклом. Якщо змінимо значення вільного невідомого, збільшивши його на деяке число x, то, переходячи послідовно від однієї вершини циклу до іншої, повинні будемо через незмінність сум по рядках і по стовпцях по черзі зменшувати і збільшувати значення невідомих в циклі на те ж саме число x. Наприклад, у вказаному вище циклі для вільного невідомого x21 отримаємо:

старі значення: x21 = 0, x23 = 80, x13 = 20, x11 = 170, x21 = 0;

нові значення: x121 = х, x123 = 80 – х, x113 = 20 + х, x111 = 170 – х, x121 = х.

Очевидно, якщо забезпечити вершини циклу по черзі знаками «+» і «–», приписавши вершині у вільній клітці знак «+», то можна сказати, що у вершинах із знаком «+» число x додається до колишнього значення невідомого, такого, що знаходиться в цій вершині, а у вершинах із знаком «–» це число x віднімається з колишнього значення невідомого, такого, що знаходиться в цій вершині.

Зауважимо, що оскільки число вершин в циклі завжди парне, то, повертаючись у вільну клітку, слід приписати їй знак «+», тобто той знак, який їй вже приписаний при виході з неї. Це дуже істотна обставина, оскільки інакше прийшли б до суперечності. Байдуже також, в якому напрямі обходиться цикл при позначенні вершин.

Якщо як x обрати найменше з чисел, що стоять у вершинах, забезпечених знаком «–», то, принаймні, одна з колишніх базисних невідомих прийме значення нуль, і зможемо перевести його в число вільних невідомих, зробивши замість нього базисним те невідоме, яке було вільним.

Так, наприклад, в розглянутому вище циклі маємо негативні вершини x23 і x11; отже, вибравши х = min {80; 170} = 80, отримуємо:

старі значення: x21= 0, x23= 80, x13= 20, x11 = 170, x21= 0;

нові значення: x121 = 80, x123 = 0, x113 = 100, x111 = 90, x121 = 80, тобто замість колишнього базисного рішення отримуємо нове базисне рішення

Пункти відправлення

Пункти призначення

 

Запаси

В1

В2

В3

В4

В5

А1

70

50

15

80

70

300

90

110

100

А2

80

90

40

60

85

150

80

70

А3

50

10

90

11

25

250

110

50

200

Потреби

170

110

100

120

200

700

Вибір як x мінімального серед чисел, що стоять в негативних вершинах циклу, забезпечує допустимість нового базису.

Якщо мінімальне значення серед базисних невідомих, таких, що стоять в негативних вершинах циклу, приймається не в одній негативній вершині, то вільною залишають тільки одну з них, а в інших клітках з тим же мінімальним значенням пишуть нулі. В цьому випадку нове базисне рішення буде виродженим.

Може трапитися, що і саме мінімальне значення серед чисел в негативних клітках дорівнює нулю. Тоді перетворення таблиці перевезень зведеться до перестановки цього нуля у вільну клітку. Значення всіх невідомих при цьому залишаються незмінними, але розв'язки вважаються різними, оскільки різні базиси. Обидва розв'язки вироджені.

Описане вище перетворення таблиці перевезень, в результаті якого перетвориться базис, називається перерахунком по циклу.

Відмітимо, що невідомі, такі, що не входять до циклу, цим перетворенням не зачіпаються, їх значення залишаються незмінними і кожне з них залишається або в групі базисних, або в групі вільних невідомих, як і до перерахунку.

З'ясуємо тепер, як перерахунок по циклу впливає на загальний об'єм витрат на перевезення і за якої умови ці витрати стають менше.

Хай xpq – деяке вільне невідоме, для якого уже побудували цикл і здійснили перерахунок по циклу з деяким числом x. Якщо вершині циклу, що знаходиться в i-й рядку і j-м стовпці таблиці перевезень, приписано знак «+», то значення невідомого xij, що знаходиться в цій вершині, збільшується на x, що у свою чергу викликає збільшення витрат на cijx, де cij – тариф, відповідний цій клітці; якщо ж вказаній вершині приписано знак «–», то значення невідомого xij зменшується на x, що викликає зменшення витрат на cijx.

Складемо тарифи, що відповідають позитивним вершинам циклу, і віднімемо з цієї суми суму тарифів, відповідних негативним вершинам циклу; отриману різницю Spq назвемо сумою алгебри тарифів для даного вільного невідомого xpq. Підрахунок суми алгебри тарифів можна тлумачити і так: припишемо тарифам ті ж знаки, які приписані відповідним вершинам циклу, тоді сума алгебри тарифів дорівнює сумі таких тарифів із знаком («відносних тарифів»).

Тепер, очевидно, можемо укласти, що в цілому при перерахунку по циклу, відповідному вільному невідомому xpq, загальний об'єм витрат на перевезення зміниться на добуток суми алгебри тарифів на x, тобто на величину Spqx. Отже, якщо сума алгебри тарифів для деякого вільного невідомого xpq негативна (Spq < 0), то перерахунок по циклу, відповідному цьому невідомому, приводить до зменшення загальної суми витрат на реалізацію плану перевезень. Якщо ж сума алгебри тарифів позитивна (Spq > 0), то перерахунок по відповідному циклу призведе до збільшення загальної суми витрат. І, нарешті, якщо сума алгебри тарифів дорівнює нулю (Spq = 0), то перерахунок по відповідному циклу взагалі не змінить загальну суму витрат (тобто два різні базисні плани вимагають однакових витрат на їх реалізацію).

Так, наприклад, для циклу x21,x32,x13,x11,x21 в розглянутій задачі сума алгебри тарифів

S21 = с21с23 + с13с11 = 80 – 40 + 15 + 79 = – 15 < 0.

Значить, перерахунок по цьому циклу знижує витрати. І дійсно, здійснивши такий перерахунок, отримуємо план, за яким об'єм перевезень в тонно-кілометрах складає

S2 = 70*90 + 50*110 + 15*100 + 80*80 + 60*70 + 11*50 + 25*200= 29450,

тоді як за початковим планом він склав S1 = 30650. Маємо зниження об'єму перевезень на 1200 тонно-кілометрів, що і слід було чекати, оскільки сума алгебри тарифів в даному випадку дорівнює – 15, а перерахунок по циклу здійснюється за допомогою числа х = 80 (зміна витрат рівна – 15*80 = – 1200).

Обчислення суми алгебри тарифів для кожного з вільних невідомих можна проводити без побудови відповідного циклу, користуючись, так званими, потенціалами. Припишемо кожній базі Aі, деяке число uі, і кожному споживачеві Bi деяке число vi

Ai ® ui,i = 1,…,m, Bj ® vj, j = 1,…n,

отже

uі + vj = cij, (3.6)

де cij – тарифи, відповідні кліткам, заповненим базисними невідомими. Ці числа uі, і vj називаються потенціалами відповідних баз і споживачів.

Знаючи потенціали, легко обчислити суму алгебри тарифів. Дійсно, якщо в сумі алгебри тарифів по циклу, відповідному вільному невідомому xpq, замінити тарифи базисних кліток їх виразами через потенціали по формулах (3.6), то, через чергування знаків при вершинах циклу, всі потенціали, окрім up і vq скоротяться, і ми отримаємо

Spq = cpq– (up + vq).

Так, наприклад, для циклу x21,x23,x13,x11,x21 в розглянутій вище задачі маємо

S21 = с21с23 + с13с11 = с21 – (u2 + v3) + (u1 + v3) – (u1 + v1) = с21 – (u2 + v1).

Для базисних кліток сума потенціалів рядка і стовпця, в яких знаходиться ця клітка, дорівнює тарифу, відповідному цій клітці; якщо ж клітка для невідомого xpq вільна, то суму потенціалів

up + vq = c1pq (3.7)

називають непрямим тарифом цієї клітки. Отже, сума алгебри тарифів для вільної клітки xpq дорівнює різниці її сьогодення («істинного») і непрямого тарифів

Spq = cpqc1pq. (3.8)

З (3.8) витікає, що якщо непрямий тариф для даної вільної клітки більше її дійсного тарифу, то сума алгебри тарифів по циклу, відповідному цій клітці, буде негативна; якщо ж непрямий тариф менше істинного, то сума алгебри тарифів позитивна, і, нарешті, якщо непрямий тариф дорівнює істинному, то сума алгебри тарифів також дорівнює нулю.

Потенціали можна знайти з системи рівності (3.6), розглядаючи їх як систему (m + n - 1) рівнянь з m+n невідомими. Оскільки невідомих тут на одиницю більше, ніж рівнянь, то, принаймні, один з потенціалів можемо обрати довільно, поклавши, наприклад, u1 = 0; тоді решта потенціалів легко визначається з рівнянь (3.6).

Наприклад, для плану, отриманого за діагональним методом в розглянутій вище задачі, маємо

u1 + v1 = 70,

u1 + v2 = 50,

u1 + v3 = 15,

u2 + v3 = 40,

u2 + v4 = 60,

u3 + v4 = 11,

u3 + v5 = 25.

Система містить сім рівнянь з вісьма невідомими. Вибираючи довільно значення, знаходимо послідовно з перших трьох рівнянь значення, потім з четвертого рівняння –, з п'ятого рівняння –, з шостого рівняння u3 = 11 – v4 і, нарешті, з сьомого рівняння – v5 = 25 – u3.

Поклавши, наприклад, u1 = 0, набуваємо значень потенціалів

v1 = 70,

v2 = 50,

u1 = 0, v3 = 70,

u2 = 25, v4 = 35,

u3 = – 24, v5 = 49.

Знайдемо тепер непрямі тарифи для вільних кліток і порівняємо їх з дійсними тарифами

с114 = u1 + v4 = 35 < с14, с125 = u2 + v5 = 74 < с25,

с115 = u1 + v5 = 49 < с15, с131 = u3 + v1 = 46 < с31,

с121 = u2 + v1 = 95 > с21, с132 = u3 + v2 = 26 > с32,

с122 = u2 + v2 = 75 < с22, с133 = u3 + v3 = – 9 < с33.

Для кліток з невідомими x21 і x32 непрямі тарифи більше істинних. Отже, для них ми матимемо негативні суми алгебри тарифів

S21 = с21с121 = 80 – 65 = – 15,

S32 = с32с123 = 10 – 26 = – 16.

Значення S21 = – 15 вже було раніше, обчислюючи суму алгебри тарифів для цієї клітки безпосередньо по циклу.

Зауваження 1. Підраховуючи непрямі тарифи як суми відповідних потенціалів, корисно не пропускати і клітки з базисними невідомими (заповнені клітки). Для цих кліток сума потенціалів дорівнює дійсному тарифу; останнє може служити перевіркою правильності знайдених значень потенціалів.

Зауваження 2. Можна показати, що якщо суму всіх витрат по даному плану перевезень виразити через вільні невідомі, то коефіцієнт при кожному з таких невідомих дорівнюватиме сумі алгебри тарифів по циклу, відповідному їй в таблиці перевезень. Це ще раз підтверджує, що перерахунок по циклах є специфічною формою застосування симплекс-метода до розв'язку транспортної задачі.

Контрольні запитання

1. Що таке цикл?

2. Як здійснюється перерахунок по циклу?

3. Як обчислюється сума алгебри тарифів?

4. Що таке потенціал?

5. Як обчислюються потенціали?

6. Як здійснюється додаткова перевірка обчислених потенціалів?

З повагою ІЦ “KURSOVIKS”!