- •Кафедра вищої і прикладної математики
- •1.1 Приклади задач лінійного програмування
- •1.2 Графічний метод рішення задач лінійного програмування
- •1.3 Симплексний метод
- •1.4 Двоїсті задачі та їх рішення
- •1.5 Аналіз матричної гри
- •1.6 Метод потенціалів
- •2.7. Задачі про призначення
- •1.8 Дробово-лінійне програмування
- •1.9 Параметричне програмування
- •2.1 Пакет "The management scientist"
- •Діапазони цільових коефіцієнтів
- •2.2 Пакет qsb
1.6 Метод потенціалів
Цей метод використовується для рішення багатьох розподільних задач, що містять велике число змінних і відповідають вимозі цілочисельності рішення. Такими, зокрема, є транспортні задачі, на них і буде проілюстрований алгоритм методу. Теоретичні основи методу такі:
необхідною і достатньою умовою існування рішення є баланс між попитом та пропозицією;
по завантажених клітинках визначають систему потенціалів:
,
де
– потенціал рядка;
– потенціал стовпця;
– тариф відповідної клітинки.
в оптимальному розподілі сума потенціалів рядка і стовпця не повинна перевершувати тариф відповідної незавантаженої клітинки;
кількість постачань повинна дорівнювати величині
,
де
- число постачальників,
- число споживачів.
Метод потенціалів здійснюється в три етапи:
Побудова первісного опорного плану (початковий розподіл вантажів).
Оцінка оптимальності розподілу вантажів за допомогою системи потенціалів.
Поліпшення плану перевезень, якщо воно можливо.
Другий і третій етапи повторюються доти, поки рішення не стане оптимальним.
I етап. Побудова початкового опорного плану
Початковий розподіл можна виконувати різними способами: способом північно-західного кута, способом найменших тарифів, подвійної переваги, способом Фогеля, способом Лебедєва-Тихомирова й ін. Найбільш простим і легко реалізованим на ЕОМ є спосіб північно-західного кута. Він полягає в тім, що від кожного постачальника, починаючи з першого, вивозять весь вантаж з урахуванням потреби споживачів. Розподіл завершено, якщо весь вантаж від постачальників вивезений, а кожен споживач одержав необхідний обсяг.
Розглянемо приклад: є три
постачальники
і три споживачі
,
відомі потужності постачальників,
попит споживачів і тарифи на перевіз
вантажу (табл. 1).
Таблиця 1
|
Постачальники |
Потужність |
|
|
|
|
|
200 |
250 |
200 | |||
|
|
250 |
5 200 |
4 50 – |
1 + (4) |
0 |
|
|
150 |
1 (3) |
3 150 |
3 (1) |
– 1 |
|
|
250 |
1 (2) |
2 50 + |
3 – 200 |
– 2 |
|
|
|
5 |
4 |
5 |
– |
Установимо, насамперед, наявність балансу між попитом та пропозицією
250 + 150 + 250 = 650
200 + 250 + 200 = 650
Баланс є. Тепер розподілимо
вантаж, починаючи з першої верхньої
клітинки, звідси і назва способу –
північно-західний кут. Розподіл
завершено, необхідно визначити витрати
(величину
)
і оцінити оптимальність рішення.
.
II етап. Оцінка оптимальності рішення
По завантажених клітинках
складемо систему рівнянь для потенціалів,
попередньо перевіривши кількість
заповнених кліток. Їх повинно бути
.
Саме стільки і є. Сума потенціалів рядка
і стовпця повинна дорівнювати транспортним
тарифам завантажених клітинок; на
основі чого одержуємо систему для
потенціалів:
;
;
;
;
.
Маємо систему з 5 рівнянь з
6 невідомими, тому один з потенціалів
приймемо рівним 0. Частіше за все беруть
і знаходять всі інші потенціали:
;
;
;
;
.
Тепер необхідно перевірити виконання другої умови оптимальності рішення: сума потенціалів для незаповненої клітинки не повинна перевищувати величину тарифу в ній.
;
;
;
.
Умова оптимальності для жодної з порожніх клітинок не виконується. Варто поліпшити рішення.
III етап. Побудова нового розподілу
З усіх клітинок, для яких умова оптимальності не виконується, вибирають ту, у якій розбіжність найбільша. Якщо таких клітинок декілька, то вибирають клітину з меншим тарифом. Її позначають знаком “+”. Починаючи від обраної клітинки, будують прямокутну фігуру, всі інші вершини якої розташовуються в заповнених клітинках. Знаки вершин чергують.
Прямокутні фігури можуть бути наступних видів:

Рідше зустрічаються фігури такого виду:

Вид фігури зумовлюється розподілом постачань.
З усіх клітинок, відзначених знаком мінус, вибирають найменший вантаж. Його переміщують уздовж прямокутної фігури, додаючи, якщо стоїть знак “+”, і, віднімаючи, якщо стоїть знак “–”. Усі зміни відображають у новій таблиці. Величини, що не беруть участь у перерозподілі, у нову таблицю переносять без зміни. Звернемося до приклада: у таблиці 1 знаком “–” відзначені дві клітинки, вибираємо найменший вантаж 50 і переміщуємо його уздовж прямокутної фігури. Усі зміни показані у табл. 2. Отримано новий розподіл: необхідно оцінити його, тому повертаємося до II етапу алгоритму.
Таблиця 2
|
Постачальники |
Потужність |
|
|
|
|
|
200 |
250 |
200 | |||
|
|
250 |
5 200 – |
4 |
1 + 50 |
0 |
|
|
150 |
1 (7) + |
3 – 150 |
3 (1) |
3 |
|
|
250 |
1 (6) |
2 + 100 |
3 – 150 |
2 |
|
|
|
5 |
0 |
1 |
– |
.
Перевіримо число заповнених клітинок, їх як і раніше 5. Знову знаходимо потенціали, причому можна не складати систему, а використовувати правила:
У 1 рядку беремо 0.
Невідомий потенціал стовпця дорівнює різниці між тарифом заповненої клітинки і відомим потенціалом рядка.
Невідомий потенціал рядка дорівнює різниці між тарифом заповненої клітинки і відомим потенціалом стовпця.
Чергуючи ці правила, знайдемо потенціали.
Перевірку оптимальності також можна проводити безпосередньо в таблиці, ставлячи “точку”, якщо умова виконується, і, вказуючи в круглих дужках величину розбіжності у випадку невиконання умови.
У нашому прикладі найбільша розбіжність між сумою потенціалів і тарифами – у клітинці (2; 1). Будуємо прямокутну фігуру і зауважуємо, що дві клітинки, відзначені знаком “–”, мають однакову найменшу величину 150, – цей факт веде до виродженого розподілу. І дійсно, після переміщення одержимо таблицю 3, у якій число завантажених клітинок дорівнює 4.
Таблиця 3
|
Постачальники |
Потужність |
|
|
|
|
|
200 |
250 |
200 | |||
|
|
250 |
5 50 – |
4 + (2) |
1 200 |
0 |
|
|
150 |
1 150 |
3 |
3 |
– 4 |
|
|
250 |
1 0 + |
2 – 250 |
3 |
– 4 |
|
|
5 |
6 |
1 |
– | |
Виродженість може з’явитися і зникнути при переході від таблиці до таблиці. Щоб продовжити рішення у випадку виродженої задачі, вводять нульові постачання, відповідні клітинки вважають умовно заповненими. Нулів буде стільки, скільки бракує постачань. Їх вписують у клітинки, що мають малі витрати, і при цьому стежать, щоб не виходив замкнутий цикл (прямокутна фігура, у всіх вершинах якої – заповнені клітинки). У даному прикладі варто вписати один нуль і найкраще в клітинку (3; 1). Подальше рішення звичайне: знаходять потенціали, перевіряють умову оптимальності. Після чергового перерозподілу одержимо таблицю 4.
Таблиця 4
|
Постачальник |
Потужність |
|
|
|
|
|
200 |
250 |
200 | |||
|
|
250 |
5 |
4 50 |
1 200 |
0 |
|
|
150 |
1 150 |
3 |
3 |
– 2 |
|
|
250 |
1 50 |
2 200 |
3 |
– 2 |
|
|
3 |
4 |
1 |
– | |
Задача знову стала невиродженою
– число завантажених клітинок дорівнює
5. Умова оптимальності виконується.
Розміщення вантажів видно з таблиці.
Знайдені суми витрат на кожнім етапі
рішення:
,
,
,
.
На кожнім етапі одержували рішення
краще попереднього.
Зауваження 1.Якщо ми маємо справу з відкритою транспортною задачею, то для її рішення необхідно спочатку забезпечити баланс між попитом та пропозицією. Для цього вводять додаткового постачальника, якщо попит перевищує пропозицію, у противному випадку вводять додаткового споживача. Якщо додають постачальника, то його “потужністю” буде величина, яку бракує до балансу, транспортні тарифи беруть рівними нулю. Аналогічно діють, якщо додають споживача. Надалі рішення проводять по викладеному вище алгоритму. Уведення додаткового постачальника або споживача має цілком визначене економічне пояснення. У першому випадку ми визначаємо, якому споживачу вигідніше недопоставити вантаж, виходячи з інтересів всіх учасників, у другому випадку – у якого постачальника доцільніше за все залишити частину вантажу.
Зауваження 2.Раніше був докладно розглянутий спосіб північно-західного кута для початкового розподілу вантажів. Число ітерацій (таблиць) можна зменшити, якщо скористатися способом найменших тарифів. Він полягає в аналізі всієї матриці тарифів, виборі найменших значень і максимальному заповненні відповідних клітинок таблиці. Ці дії виконуються доти, поки не буде розподілений весь вантаж і вдоволений попит усіх споживачів. У результаті заповнення однієї з клітинок виключається з розгляду якийсь постачальник або споживач. При цьому додаткові учасники транспортної задачі приймаються до уваги в останню чергу.
Розглянемо приклад транспортної задачі.
|
Постачальники |
Потужність |
|
|
|
|
|
250 |
300 |
100 |
200 | ||
|
|
100 |
2
|
6
|
3
|
5
|
|
|
400 |
9
|
4
|
2
|
7
|
|
|
200 |
3
|
2
|
5
|
4
|
Балансу між попитом та пропозицією нема, необхідно ввести додаткового постачальника з потужністю 150 тис. одиниць. Розподіл виконаємо способом найменших тарифів
|
Постачальники |
Потужність |
|
|
|
|
|
|
250 |
300 |
100 |
200 | |||
|
|
100 |
2 100 |
6 - |
3 - |
5 - |
0 |
|
|
400 |
9 - |
4 100 |
2 100 |
7 200 |
3 |
|
|
200 |
3 0 |
2 200 |
5 - |
4 - |
-2 |
|
|
150 |
0 150 |
0 - |
0 - |
0 - |
|
|
|
2 |
1 |
-1 |
4 |
- | |
Отриманий план не оптимальний, варто перейти до кращого. Це можна зробити на основі викладеного алгоритму.



