Кожна задача лінійного програмування пов’язана з іншою, так званою двоїстою задачею.
Економічну інтерпретацію кожної з пари таких задач розглянемо на прикладі виробничої задачі.
Пряма задача:
max F = c1x1 + c2x2 + … + cnxn (3.1)
економічний двоїстий лінійний програмування
за умов:
Необхідно визначити, яку кількість продукції кожного j-го виду
Розглянемо тепер цю саму задачу з іншого погляду. Допустимо, що за певних умов доцільно продавати деяку частину чи всі наявні ресурси. Необхідно визначити ціни ресурсів. Кожному ресурсу
На виготовлення одиниці j-го виду продукції витрачається згідно з моделлю (3.1) – (3.3) m видів ресурсів у кількості відповідно
Продавати ресурси доцільно лише за умови, що виручка, отримана від продажу ресурсів, перевищує суму, яку можна було б отримати від реалізації продукції, виготовленої з тих самих обсягів ресурсів, тобто:
Зрозуміло, що покупці ресурсів прагнуть здійснити операцію якнайдешевше, отже, необхідно визначити мінімальні ціни одиниць кожного виду ресурсів, за яких їх продаж є доцільнішим, ніж виготовлення продукції. Загальну вартість ресурсів можна виразити формулою:
Отже, в результаті маємо двоїсту задачу:
за умов:
Тобто необхідно визначити, які мінімальні ціни можна встановити для одиниці кожного і-го виду ресурсу
Зауважимо, що справжній зміст величин
Задача (3.4) – (3.6) є двоїстою або спряженою до задачі (3.1) – (3.3), яку називають прямою (основною, початковою). Поняття двоїстості є взаємним. По суті мова йде про одну і ту ж задачу, але з різних поглядів. Дійсно, не важко переконатися, що двоїста задача до (3.4) – (3.6) збігається з початковою. Тому кожну з них можна вважати прямою, а іншу – двоїстою. Симетричність двох таких задач очевидна. Як у прямій, так і у двоїстій задачі використовують один набір початкових даних:
Початкова постановка задачі та математична модель може мати вигляд як (3.1) – (3.3), так і (3.4) – (3.6). Отже, як правило, кажуть про пару спряжених задач лінійного програмування.
Для побудови двоїстої задачі необхідно звести пряму задачу до стандартного виду. Вважають, що задача лінійного програмування подана у стандартному вигляді, якщо для відшукання максимального значення цільової функції всі нерівності її системи обмежень приведені до виду «
Якщо пряма задача лінійного програмування подана в стандартному вигляді, то двоїста задача утворюється за такими правилами:
1. Кожному обмеженню прямої задачі відповідає змінна двоїстої задачі. Кількість невідомих двоїстої задачі дорівнює кількості обмежень прямої задачі.
2. Кожній змінній прямої задачі відповідає обмеження двоїстої задачі, причому кількість обмежень двоїстої задачі дорівнює кількості невідомих прямої задачі.
3. Якщо цільова функція прямої задачі задається на пошук найбільшого значення (max), то цільова функція двоїстої задачі – на визначення найменшого значення (min), і навпаки.
4. Коефіцієнтами при змінних у цільовій функції двоїстої задачі є вільні члени системи обмежень прямої задачі.
5. Правими частинами системи обмежень двоїстої задачі є коефіцієнти при змінних у цільовій функції прямої задачі.
6. Матриця
що складається з коефіцієнтів при змінних у системі обмежень прямої задачі, і матриця коефіцієнтів у системі обмежень двоїстої задачі
утворюються одна з одної транспонуванням, тобто заміною рядків стовпчиками, а стовпчиків – рядками.
Процес побудови двоїстої задачі зручно зобразити схематично:
Рис. 3.1. Схема побудови двоїстої задачі до прямої
Пари задач лінійного програмування бувають симетричні та несиметричні.
У симетричних задачах обмеження прямої та двоїстої задач є лише нерівностями, а змінні обох задач можуть набувати лише невід’ємних значень.
У несиметричних задачах деякі обмеження прямої задачі можуть бути рівняннями, а двоїстої – лише нерівностями. У цьому разі відповідні рівнянням змінні двоїстої задачі можуть набувати будь-яких значень, не обмежених знаком.
Всі можливі форми прямих задач лінійного програмування та відповідні їм варіанти моделей двоїстих задач у матричній формі наведено нижче.
Пряма задача | Двоїста задача |
Cиметричні задачі | |
max F = CX AX | min Z = BY ATY |
min F = CX AX | max Z = BY ATY |
Несиметричні задачі
max F = CX AX = B X | min Z = BY ATY |
min F = CX AX = B X | max Z = BY ATY |
До даної задачі лінійного програмування записати двоїсту.
max F = –5x1 + 2x2;