You are on page 1of 15

Тема 2.

Загальна задача лінійного програмування та деякі з методів розв’язання

Тема 2. Загальна задача лінійного


програмування та деякі з методів розв’язання.
2.1. Постановка задачі лінійного програмування. Основні
поняття.
2.2. Властивості основної задачі лінійного програмування.
2.3. Графічний метод вирішення задач лінійного програмування.
2.4. Симплексний метод.
2.5. Метод штучного базису.

2.1. Постановка задачі лінійного програмування. Основні


поняття.
Найбільш вивченим розділом математичного програмування є
лінійне програмування. Більшість економічних завдань можна звести до
завдань лінійного програмування. Для вирішення завдань лінійного
програмування розроблено цілий ряд ефективних методів, алгоритмів і
програм, основні з яких будуть розглянуті далі.
Лінійне програмування - це наука про методи дослідження та пошук
найбільших і найменших значень лінійної функції, на невідомі якої
накладено лінійні обмеження. Завдання лінійного програмування
відносяться до завдань на умовний екстремум.
У задачах лінійного програмування (ЗЛП) потрібно знайти
максимум або мінімум лінійної функції за умови, що її змінні приймають
невід'ємні значення і задовольняють деякій системі лінійних рівнянь або
лінійних нерівностей або системі, яка містить як лінійні нерівності, так і
лінійні рівняння. Кожна з цих задач є окремим випадком загальної задачі
лінійного програмування.
Визначення 1. Загальною задачею лінійного програмування
називається задача, яка полягає у визначенні максимального
(мінімального) значення функції
𝑛

𝐹 = ∑ 𝑐𝑗 𝑥𝑗 → max (min ) (1)


𝑗=1
за умов
𝑛

∑ 𝑎𝑖𝑗 𝑥𝑗 ≤ 𝑏𝑖 (𝑖 = ̅̅̅̅̅
1, 𝑘 ), (2)
𝑗=1
Тема 2. Загальна задача лінійного програмування та деякі з методів розв’язання

∑ 𝑎𝑖𝑗 𝑥𝑗 = 𝑏𝑖 (𝑖 = ̅̅̅̅̅̅̅̅̅̅̅
𝑘 + 1, 𝑚), (3)
𝑗=1
𝑥𝑗 ≥ 0, (𝑗 = ̅̅̅̅
1, 𝑙, 𝑙 ≤ 𝑛), (4)
де 𝑎𝑖𝑗 , 𝑏𝑖 , 𝑐𝑗 – задані постійні величини та 𝑘 ≤ 𝑚.

Визначення 2. Функція (1) називається цільовою функцією (або


лінійною формою) задачі (1) - (4), а умови (2) - (4) обмеженнями даної
задачі.
Визначення 3. Стандартною (або симетричною) задачею
лінійного програмування називається задача, яка полягає у визначенні
максимального значення функції (1) при виконанні умов (2) і (4), де 𝑘 = 𝑚
і 𝑙 = 𝑛.
Визначення 4. Канонічною (або основною) задачею лінійного
програмування називається задача, яка полягає у визначенні
максимального значення функції (1) при виконанні умов (3) і (4), де 𝑘 = 0
і 𝑙 = 𝑛.
Визначення 5. Сукупність чисел 𝑋 = (𝑥1 , 𝑥2 , … , 𝑥𝑛 ), які
відповідають обмеженням завдання (2) - (4), називається допустимим
рішенням (або планом).
Визначення 6. План 𝑋 ∗ = (𝑥1∗ , 𝑥2∗ , . . . , 𝑥𝑛∗ ) , при якому цільова
функція задачі (1) приймає своє максимальне (мінімальне) значення,
називається оптимальним.
Значення цільової функції (1) при плані 𝑋 будемо позначати через
𝐹(𝑋). Отже, 𝑋 ∗ - оптимальний план задачі, якщо для будь-якого 𝑋
виконується нерівність 𝐹(𝑋) ≤ 𝐹(𝑋 ∗ ) [відповідно 𝐹(𝑋) ≥ 𝐹(𝑋 ∗ )].
Зазначені вище три форми ЗЛП еквівалентні в тому сенсі, що
кожна з них за допомогою нескладних перетворень може бути
переписана в формі іншої задачі. Це означає, що якщо є спосіб
знаходження рішення однієї із зазначених задач, то тим самим може
бути визначений оптимальний план будь-якої з трьох задач.
Щоб перейти від однієї форми запису задачі лінійного
програмування до іншого, потрібно в загальному випадку вміти:
по-перше, зводити задачу мінімізації функції до задачі максимізації;
по-друге, переходити від обмежень-нерівностей до обмежень-
рівностей і навпаки;
Тема 2. Загальна задача лінійного програмування та деякі з методів розв’язання

по-третє, замінювати змінні, які не підпорядковані умові


невідємності.
У тому випадку, коли потрібно знайти мінімум функції 𝐹 = 𝑐1 𝑥1 +
𝑐2 𝑥2 + ⋯ + 𝑐𝑛 𝑥𝑛 , можна перейти до знаходження максимуму функції
𝐹1 = −𝐹 = −𝑐1 𝑥1 − 𝑐2 𝑥2 − ⋯ − 𝑐𝑛 𝑥𝑛, оскільки, min 𝐹 = − max(−𝐹) .
Обмеження-нерівність вихідної задачі лінійного програмування, що
має вигляд «≤», можна перетворити в обмеження-рівність додаванням
до його лівої частини додаткової невідємної змінної, а обмеження-
нерівність виду «≥» - в обмеження-рівність відніманням з його лівої
частини додаткової невідємної змінної. Таким чином, обмеження-
нерівність
𝑎𝑖1 𝑥1 + 𝑎𝑖2 𝑥2 + ⋯ + 𝑎𝑖𝑛 𝑥𝑛 ≤ 𝑏𝑖

перетвориться в обмеження-рівність

𝑎𝑖1 𝑥1 + 𝑎𝑖2 𝑥2 + ⋯ + 𝑎𝑖𝑛 𝑥𝑛 + 𝑥𝑛+1 ≤ 𝑏𝑖 (𝑥𝑛+1 ≥ 0),

а обмеження-нерівність

𝑎𝑖1 𝑥1 + 𝑎𝑖2 𝑥2 + ⋯ + 𝑎𝑖𝑛 𝑥𝑛 ≥ 𝑏𝑖


- в обмеження-рівність

𝑎𝑖1 𝑥1 + 𝑎𝑖2 𝑥2 + ⋯ + 𝑎𝑖𝑛 𝑥𝑛 − 𝑥𝑛+1 ≤ 𝑏𝑖 (𝑥𝑛+1 ≥ 0),

У той же час кожне рівняння системи обмежень

𝑎𝑖1 𝑥1 + 𝑎𝑖2 𝑥2 + ⋯ + 𝑎𝑖𝑛 𝑥𝑛 = 𝑏𝑖

можна записати у вигляді нерівностей:

𝑎𝑖1 𝑥1 + 𝑎𝑖2 𝑥2 + ⋯ + 𝑎𝑖𝑛 𝑥𝑛 ≤ 𝑏𝑖


{
−𝑎𝑖1 𝑥1 − 𝑎𝑖2 𝑥2 − ⋯ − 𝑎𝑖𝑛 𝑥𝑛 ≤ −𝑏𝑖
Тема 2. Загальна задача лінійного програмування та деякі з методів розв’язання

Кількість додаткових невід'ємних змінних, що вводяться при


перетворенні обмежень-нерівностей в обмеження-рівності, дорівнює
числу перетворюваних нерівностей.
Введені додаткові змінні мають цілком визначений економічний
сенс. Так, якщо в обмеженнях вихідної задачі лінійного програмування
відображається витрата і наявність виробничих ресурсів, то числове
значення додаткової змінної в плані задачі, записаної в формі основної,
дорівнює обсягу невикористаного відповідного ресурсу.
Відзначимо, нарешті, що якщо змінна Xk не підпорядкована умові
невідємності, то її слід замінити двома невід'ємними змінними Uk і Vk,
прийнявши Xk = Uk - Vk.

2.2. Властивості основної задачі лінійного програмування.

Розглянемо основну задачу лінійного програмування. Знайти


максимальне значення функції
𝑛

𝐹 = ∑ 𝑐𝑗 𝑥𝑗 → 𝑚𝑎𝑥
𝑗=1
за умов ∑𝑛𝑗=1 𝑎𝑖𝑗 𝑥𝑗 = 𝑏𝑖 , (𝑖 = ̅̅̅̅̅̅
1, 𝑚), 𝑥𝑗 ≥ 0, (𝑗 = ̅̅̅̅̅
1, 𝑛).
Перепишемо цю задачу в векторній формі: знайти максимум
функції
𝐹 = 𝐶𝑋 (5)
за умов
𝑥1 𝑃1 + 𝑥2 𝑃2 + ⋯ + 𝑥𝑛 𝑃𝑛 = 𝑃0 ; (6)
𝑋≥0 (7)

де 𝐶 = (𝑐1 , 𝑐2 , … , 𝑐𝑛 )С = (с1, с2, ...; сn), 𝑋 = (𝑥1 , 𝑥2 , … , 𝑥𝑛 ); 𝐶𝑋 –


скалярний добуток; 𝑃1 , 𝑃2 , … , 𝑃𝑛 і 𝑃0 - 𝑚-мірні вектор-стовпці, складені з
коефіцієнтів при невідомих і вільних членах системи рівнянь задачі:

1 0 𝑎1 𝑛 𝑏1
0 1 𝑎2 𝑛 𝑏
𝑃1 = ( ) ; 𝑃2 = ( ) ; … ; 𝑃𝑛 = ( … ) ; 𝑃0 = ( 2 )
… … …
0 0 𝑎𝑚 𝑛 𝑏𝑚
Тема 2. Загальна задача лінійного програмування та деякі з методів розв’язання

Визначення 7. План 𝑋 = (𝑥1 , 𝑥2 , … , 𝑥𝑛 )) називається опорним


планом основної задачі лінійного програмування, якщо система векторів
Рj, що входять в розкладання (6) з додатніми коефіцієнтами Xj, лінійно
незалежна.
Оскільки вектори 𝑃𝑗 є 𝑚-мірними, то з визначення опорного плану
випливає, що число його додатних компонент не може бути більше, ніж
𝑚.
Визначення 8. Опорний план називається невиродженим, якщо
він містить рівно 𝑚 додатніх компонент, в іншому випадку він
називається виродженим.
Властивості основної ЗЛП (5) - (7) тісно пов'язані з властивостями
опуклих множин.
Визначення 9. Нехай 𝑋 = (𝑥1 , 𝑥2 , . . . , 𝑥𝑛 ) – довільні точки
евклідового простору 𝐸𝑛. Опуклою лінійною комбінацією цих точок
називається сума α1Х1 + α2Х2 + ... + αnХn, де αi - довільні невід'ємні

числа, сума яких дорівнює 1:


Визначення 10. Множина називається опуклою, якщо разом з
будь-якими двома своїми точками воно містить і їх довільну опуклу
лінійну комбінацію.
Визначення 11. Точка 𝑋 опуклої множини називається кутовою,
якщо вона не може бути представлена у вигляді випуклої лінійної
комбінації якихось двох інших різних точок даної множини.
Теорема 1. Безліч планів основної задачі лінійного програмування
є опуклим (якщо воно не порожньо).
Визначення 12. Непорожня безліч планів основної ЗЛП
називається многогранником рішень, а всяка кутова точка
багатогранника рішень - вершиною.
Теорема 2. Якщо основна задача лінійного програмування має
оптимальний план, то цільова функція задачі приймає в одній з вершин
багатогранника рішень максимальне значення. Якщо максимальне
значення цільова функція задачі приймає більш ніж в одній вершині, то
вона приймає його у всякій точці, що є опуклою лінійною комбінацією цих
вершин.
Тема 2. Загальна задача лінійного програмування та деякі з методів розв’язання

Теорема 3. Якщо система векторів Р1, Р2, ..., Pk, (k ≤ n) в


розкладанні (9) лінійно незалежна і така, що
де все Xj ≥ 0, то точка Х = (х1, х2, ...; хk; 0; ...; 0) є вершиною
багатогранника рішень.
Теорема 4. Якщо 𝑋 = (𝑥1 , 𝑥2 , … , 𝑥𝑛 ) - вершина багатогранника
рішень, то вектори 𝑃𝑗 , відповідні додатнім 𝑋𝑗 в розкладанні (9), лінійно
незалежні.
Сформульовані теореми дозволяють зробити наступні висновки.
Непорожня множина планів основної задачі лінійного
програмування утворює опуклий багатогранник (багатогранник рішень).
Кожна вершина (кутова точка) цього багатогранника визначає опорний
план. В одній з вершин багатогранника рішень (тобто для одного з
опорних планів) значення цільової функції є максимальним (за умови, що
функція обмежена зверху на множині планів). Якщо максимальне
значення функція приймає більш ніж в одній вершині, то це ж значення
вона приймає в будь-якій точці, що є опуклою лінійною комбінацією
даних вершин.

2.3. Графічний метод рішення задач лінійного програмування.

Розглянемо геометричну інтерпретацію ЗЛП.


Знайдемо рішення задачі, що складається у визначенні
максимального значення функції:
𝐹 = 𝑐1 𝑥1 + 𝑐2 𝑥2 → 𝑚𝑎𝑥 (8)
за умов
𝑎𝑖1 𝑥1 + 𝑎𝑖2 𝑥2 ≤ 𝑏𝑖 (𝑖 = ̅̅̅̅̅
1, 𝑘), (9)
𝑥𝑗 ≥ 0, (𝑗 = 1, 2). (10)
Кожне з нерівностей (9), (10) системи обмежень задачі геометрично
визначає напівплощину відповідно з граничними прямими 𝑎𝑖1 𝑥1 +
𝑎𝑖2 𝑥2 = 𝑏𝑖 , (𝑖 = ̅̅̅̅̅
1, 𝑘 ), 𝑥1 = 0, 𝑥2 = 0. У тому випадку, якщо система
нерівностей (9), (10) сумісна, областю її рішень є безліч точок, що
належать всім зазначеним напівплощинам. Оскільки множина точок
перетину даних напівплощин - опукла, то областю допустимих рішень
Тема 2. Загальна задача лінійного програмування та деякі з методів розв’язання

задачі (8) - (10) є опукла множина, яке називається багатокутником


рішень.
Таким чином, вихідна задача лінійного програмування полягає в
знаходженні такої точки багатокутника рішень, в якій цільова функція F
приймає максимальне значення. Ця точка існує тоді, коли багатокутник
рішень не пустий та на ньому цільова функція обмежена зверху. При
зазначених умовах в одній з вершин багатокутника рішень цільова
функція приймає максимальне значення.
При знаходженні рішення задачі (8) - (10), можуть зустрітися
випадки, зображені на рис. 1 - 4.

Рис 1. Характеризує такий випадок, коли цільова функція приймає


максимальне значення в єдиній точці А.

Рис 2. Відображає, що максимальне значення цільова функція


приймає в будь-якій точці відрізку АВ.
Тема 2. Загальна задача лінійного програмування та деякі з методів розв’язання

Рис 3. Відображений випадок, коли цільова функція не обмежена


зверху на множині допустимих рішень.

Рис.4. Випадок, коли система обмежень задачі несумісна.


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

Алгоритм рішення ЗЛП (8) - (10) графічним методом на основі


геометричної інтерпретації включає наступні етапи:
1. Будують прямі, рівняння яких отримуються в результаті заміни в
обмеженнях (9) і (10) знаків нерівностей на знаки точних рівностей.
2. Знаходять півплощини, що визначаються кожним з обмежень
задачі.
3. Знаходять багатокутник рішень.
4. Будують вектор 𝐶̅ = (𝑐1 , 𝑐2 ) - градієнт цільової функції, що задає
напрям зростання функції.
5. Будують лінію рівня 𝑐1 𝑥1 + 𝑐2 𝑥2 = ℎ, (де ℎ - деяка постійна)
перпендикулярну градієнту і проходячу через багатокутник рішень.
6. Пересувають пряму 𝑐1 𝑥1 + 𝑐2 𝑥2 = ℎ в напрямку вектора 𝐶̅ , в
результаті чого або знаходять точку (точки), в якій цільова функція
приймає максимальне значення, або встановлюють необмеженність
зверху функції на множині планів.
7. Визначають координати точки максимуму функції і обчислюють
значення цільової функції в цій точці.
Зауваження.
Тема 2. Загальна задача лінійного програмування та деякі з методів розв’язання

Відзначимо, що знаходження мінімального значення лінійної


функції при даній системі обмежень відрізняється від знаходження її
максимального значення при тих же обмеженнях лише тим, що лінія
рівня 𝑐1 𝑥1 + 𝑐2 𝑥2 = ℎ пересувається в напрямку антиградієнта - в
напрямку, який протилежний вектору 𝐶̅ = (𝑐1 , 𝑐2 ) .

2.4. Симплекс-метод

Для вирішення ЗЛП симплексним методом її необхідно записати в


формі основної (канонічної) задачі лінійного програмування, якщо вона
не має такої форми запису.
Симплексний метод розв'язання задачі лінійного програмування
заснований на переході від одного опорного плану до іншого, при якому
значення цільової функції зростає (за умови, що дана задача має
оптимальний план, і кожен її опорний план є невиродженим). Зазначений
перехід можливий, якщо відомий вихідний опорний план. Розглянемо
задачу, для якої цей план можна безпосередньо записати.
Нехай потрібно знайти максимальне значення функції
𝐹 = 𝑐1 𝑥1 + 𝑐2 𝑥2 + ⋯ + 𝑐𝑛 𝑥𝑛 → 𝑚𝑎𝑥
за умов

𝑥1 + 𝑎1 𝑚+1 𝑥𝑚+1 + ⋯ + 𝑎1𝑛 𝑥𝑛 = 𝑏1


𝑥 + 𝑎2 𝑚+1 𝑥𝑚+1 + ⋯ + 𝑎2𝑛 𝑥𝑛 = 𝑏2
{ 2

𝑥𝑚 + 𝑎𝑚 𝑚+1 𝑥𝑚+1 + ⋯ + 𝑎𝑚𝑛 𝑥𝑛 = 𝑏𝑚
𝑥𝑗 ≥ 0, (𝑗 = ̅̅̅̅̅
1, 𝑛).
̅̅̅̅̅̅
Тут 𝑎𝑖𝑗 , 𝑏𝑖 і 𝑐𝑗 (𝑖 = 1, ̅̅̅̅̅
𝑚; 𝑗 = 1, 𝑛) – задані постійні числа (𝑚 < 𝑛 і
𝑏𝑖 > 0).
Векторна форма даної задачі має такий вигляд: знайти максимум
функції

𝐹 = ∑ 𝑐𝑗 𝑥𝑗 → 𝑚𝑎𝑥
𝑗=1
за умов
Тема 2. Загальна задача лінійного програмування та деякі з методів розв’язання

𝑥1 𝑃1 + 𝑥2 𝑃2 + ⋯ + 𝑥𝑚 𝑃𝑚 + ⋯ + 𝑥𝑛 𝑃𝑛 = 𝑃0 ;
𝑥𝑗 ≥ 0, (𝑗 = ̅̅̅̅̅
1, 𝑛),
де
1 0 0 𝑎1 𝑚+1
0 1 0 𝑎2 𝑚+1
𝑃1 = ( ) ; 𝑃2 = ( ) ; 𝑃𝑚 = ( ) ; 𝑃𝑚+1 = ( … ) ;
… … …
0 0 1 𝑎𝑚 𝑚+1
𝑎1 𝑛 𝑏1
𝑎2 𝑛 𝑏
𝑃𝑛 = ( … ) ; 𝑃0 = ( 2 ).

𝑎𝑚 𝑛 𝑏𝑚
Оскільки 𝑏1 𝑃1 + 𝑏2 𝑃2 + ⋯ + 𝑏𝑚 𝑃𝑚 = 𝑃0 , то за визначенням опорного
плану 𝑋 = (𝑏1 ; 𝑏2 ; … ; 𝑏𝑚 ; 0; . . . ; 0) є опорним планом даної задачі
(останні 𝑛 − 𝑚 компонент вектора 𝑋 дорівнюють нулю). Цей план
визначається системою одиничних векторів 𝑃1 , 𝑃2 , … , 𝑃𝑚 , які утворюють
базис 𝑚-вимірного простору. Тому кожен з векторів 𝑃1 , 𝑃2 , … , 𝑃𝑚 , а також
вектор 𝑃0 можуть бути подані у вигляді лінійної комбінації векторів
даного базису.
Нехай 𝑧𝑗 = ∑𝑚 ̅̅̅̅̅ ̅̅̅̅̅
𝑖=1 𝑐𝑖 𝑥𝑖𝑗 , (𝑗 = 1, 𝑛); ∆𝑗 = 𝑧𝑗 − 𝑐𝑗 , (𝑗 = 1, 𝑛). Оскільки
вектори 𝑃1 , 𝑃2 , … , 𝑃𝑚 – одиничні, то 𝑥𝑖𝑗 = 𝑎𝑖𝑗 і 𝑧𝑗 = ∑𝑚
𝑖=1 𝑐𝑖 𝑎𝑖𝑗 , а

∆𝑗 = ∑ 𝑐𝑖 𝑎𝑖𝑗 − 𝑐𝑗 , (𝑗 = ̅̅̅̅̅
1, 𝑛) (11)
𝑖=1
Опорний план 𝑋 = (𝑥1∗ , 𝑥2∗ , . . . , 𝑥𝑚
∗ ∗
; 0; 0; . . . ; 0) задачі є оптималь-
ними, якщо ∆𝑗 ≥ 0 для будь-якого 𝑗 (𝑗 = ̅̅̅̅̅
1, 𝑛).
Дослідження опорного плану на оптимальність і подальший
обчислювальний процес зручніше вести у вигляді симплекс-таблиці, як
це показано в табл. 7, де перші 𝑚 рядків визначаються вихідними
даними задачі, а показники (𝑚 + 1) -го рядка обчислюють. У цьому рядку
в стовпці вектора 𝑃0 записують значення цільової функції, якого вона
набуває за даного опорного плану 𝐹0 = ∑𝑚 𝑖=1 𝑐𝑖 𝑏𝑖 , а в стовпці вектора 𝑃𝑗 –
значення ∆𝑗 = 𝑧𝑗 − 𝑐𝑗 .
Таблиця 7
Симплекс-таблиця
Тема 2. Загальна задача лінійного програмування та деякі з методів розв’язання

c1 c2 … cr … cm cm+1 … ck … cn
i Базис Сб P0
P1 P2 … Pr … Pm Pm+1 … Pk … Pn
1 P1 c1 b1 1 0 … 0 … 0 a1m+1 … a1k … a1n
2 P2 c2 b2 0 1 … 0 … 0 a2m+1 … a2k … a2n
… … … … … … … … … … ... … … … …
r Pr cr br 0 0 … 1 … 0 arm+1 … ark … arn
… … … … … … … … … … … … … … …
m Pm cm bm 0 0 … 0 … 1 amm+1 … amk … amn
m+ F0
0 0 … 0 … 0 ∆m+1 … ∆k … ∆n
1

У стовпці 𝐶б цієї таблиці записують коефіцієнти при невідомих


цільової функції, які мають ті ж індекси, що і вектори даного базису.
У стовпці 𝑃0 записують додатні компоненти вихідного опорного
плану, в ньому ж в результаті обчислень отримують додатні компоненти
оптимального плану. Стовпці векторів 𝑃𝑗 є коефіцієнтами розкладання
цих векторів за векторами даного базису.
Перехід від одного опорного плану до іншого зводиться до
переходу від однієї симплекс-таблиці до іншої.
Алгоритм рішення ЗЛП симплексним методом:
1. Знаходять первісний опорний план.
2. Складають симплекс-таблицю.
3. Переглядають елементи (𝑚 + 1) -го рядка. Якщо ∆𝑗 ≥ 0, (𝑗 =
̅̅̅̅̅
1, 𝑛), то знайдений опорний план оптимальний. В іншому випадку
переходять до кроку 4.
4. Якщо ∆𝑗 < 0 для деякого 𝑗 і всі відповідні цьому індексу величини
𝑎𝑖𝑗 ≤ 0 (𝑖 = ̅̅̅̅̅̅
1, 𝑚) то задача не вирішується. Якщо ∆𝑗 < 0 для деяких j, і
для кожного такого j принаймні одне з чисел 𝑎𝑖𝑗 ≥ 0, (𝑖 = ̅̅̅̅̅̅
1, 𝑚), то
переходять до нового опорного плану на кроці 5.
5. Знаходять направляючі стовпець і рядок. Направляючий
стовпець 𝑘 визначається найбільшим за абсолютною величиною
від'ємним числом ∆𝑗 (𝑚𝑎𝑥│∆𝑗 < 0│ = ∆𝑘 , (𝑗 = ̅̅̅̅̅
1, 𝑛)). Якщо ж таких чисел
декілька, то в базис вводиться вектор, який відповідає максимальному
числу 𝑐𝑗 (для ∆𝑗 < 0). Тоді в базис увійде вектор 𝑃𝑘 . Направляючий рядок
𝑟 визначається мінімальним відношенням компонентів стовпця вектора
𝑃0 до додатних компонентів направляючого стовпця (𝑚𝑖𝑛(𝑏𝑖 /𝑎𝑖𝑘 ) для
Тема 2. Загальна задача лінійного програмування та деякі з методів розв’язання

всіх 𝑎𝑖𝑘 > 0) Тоді з базису виключають вектор 𝑃𝑟 , а число 𝑎𝑟𝑘 називають
провідним елементом.
6. Визначають додатні компоненти нового опорного плану за
формулами
𝑏𝑟
𝑏𝑖 − ( ) ∙ 𝑎𝑖𝑘 , 𝑖 ≠ 𝑟,
𝑎𝑟𝑘
𝑏𝑖′ = (12)
𝑏𝑟
, 𝑖 = 𝑟,
{ 𝑎𝑟𝑘
коефіцієнти розкладання векторів 𝑃𝑗 за векторами нового базису за
формулами
𝑎𝑟𝑗
𝑎𝑖𝑗 − ( ) ∙ 𝑎𝑖𝑘 , 𝑖 ≠ 𝑟,
′ 𝑎𝑟𝑘
𝑎𝑖𝑗 ={ 𝑎 (13)
𝑟𝑗
, 𝑖 = 𝑟,
𝑎𝑟𝑘
і числа 𝐹0′ , ∆𝑗′ , за формулами:
𝑏𝑟 𝑎𝑟𝑗
𝐹0′ = 𝐹0 − ( ) ∙ ∆𝑘 , ∆𝑗′ = ∆𝑗 − ( ) ∙ ∆𝑘 , (14)
𝑎𝑟𝑘 𝑎𝑟𝑘
або на підставі їх визначення. Наявність двох способів
знаходження елементів (m+1) -го рядка дозволяє здійснювати контроль
правильності проведених обчислень.
Всі ці числа записуються в новій симплекс-таблиці.
7. Перевіряють знайдений опорний план на оптимальність. Якщо
план не оптимальний, і необхідно перейти до нового опорного плану, то
повертаються до етапу 5, а в разі отримання оптимального плану або
встановлення нерозв'язності процес вирішення задачі закінчують.
Зауваження.
Якщо ЗЛП має вироджені опорні плани, то на одній з ітерацій одна
або кілька змінних опорного плану можуть виявитися рівними нулю.
Таким чином, при переході від одного опорного плану до іншого
значення функції може залишитися незмінним. Більш того, можливий
випадок, коли функція зберігає своє значення протягом декількох
ітерацій, а також можливе повернення до початкового базису: В
останньому випадку зазвичай говорять, що сталося зациклення. Однак
при вирішенні практичних завдань цей випадок зустрічається дуже рідко,
тому ми на ньому зупинятися не будемо.
Тема 2. Загальна задача лінійного програмування та деякі з методів розв’язання

2.5. Метод штучного базису

Як показано вище, для задачі, записаної в формі основної задачі


лінійного програмування, можна безпосередньо вказати її опорний план,
якщо серед векторів Рj є m одиничних. Однак для багатьох задач
лінійного програмування, записаних у формі основної задачі і мають
опорні плани, серед векторів Рj не завжди є m одиничних. Розглянемо
таку задачу:
Нехай потрібно знайти максимум функції
F = с1х1 + c2х2 + … + сnхn (15)
за умов

(16)
(17)
де bi > 0 (i = 1,…, m), m < n
та серед векторів Рj немає m одиничних.
Задача, яка складається з визначення максимального значення
функції
F = с1х1 + c2х2 + … + сnхn – Мхn+1 – … – Mxn+m (18)
при умовах

(19)

- (20)
де М - деяке досить велике додатнє число, конкретне значення
якого зазвичай не задається, називається розширеною задачею по
відношенню до задачі (15) - (17).
Розширена задача має опорний план Х = (0; 0; ...; 0; b1; b2; ...; bm),
який визначається системою одиничних векторів Рn+1, Рn+2, ...., Рn+т,, що
утворюють базис m-го векторного простору, який називається штучним.
Самі вектори, так само як і змінні хn + i (i = 1, ..., m), називаються
Тема 2. Загальна задача лінійного програмування та деякі з методів розв’язання

штучними. Оскільки розширена задача має опорний план, то її рішення


може бути знайдено симплексним методом.
Якщо в знайденому оптимальному плані розширеної задачі,
значення штучних змінних дорівнюють нулю, то тим самим отриманий
оптимальний план вихідної задачі.
При опорному планіХ = (0; 0; ...; 0; b1; b2; ...; bm) розширеної задачі
значення лінійної форми є F0 = - M Σbi, а значення Δj = zj - cj рівні M ∑aij
— cj. Таким чином, F0 і різниці zj - cj складаються з двох незалежних
частин, одна з яких залежить від М, а інша - ні.
Після обчислення F0 і Δj їх значення, а також вихідні дані
розширеної задачі заносять в таблицю, яка містить на один рядок
більше, ніж звичайна симплексна таблиця. При цьому в (m + 2) рядок
поміщають коефіцієнти при М, а в (m + 1) - складові, що не містять М.
При переході від одного опорного плану до іншого в базис вводять
вектор, відповідний найбільшому за абсолютною величиною відємному
числу (m + 2) -й рядок. Штучний вектор, виключений з базису в
результаті деякої ітерації, в подальшому не має сенсу вводити ні в один
з наступних базисів і, отже, перетворення стовпців цього вектора зайве
(крім випадку пошуку рішення двоїстої задачі). Може трапитися так, що в
результаті деякої ітерації жоден з штучних векторів з базису не буде
виключений..
Перерахунок симплекс-таблиць при переході від одного опорного
плану до іншого роблять за загальними правилами симплексного
методу.
Ітераційний процес по (m + 2) -му рядку ведуть до тих пір, поки:
1) все штучні вектори не будуть вилучені з базису;
2) не всі штучні вектори виключені, але (m + 2) рядок не містить
більше від'ємних елементів у стовпцях векторів Р1, Р2, ..., Рn + m.
У першому випадку базис відповідає деякому опорному плану
вихідної задачі, і визначення її оптимального плану продовжують по (m +
1) -му рядку.
У другому випадку, якщо елемент, що стоїть в (m + 2) рядку
стовпця вектора P0 негативний, вихідна задача не має рішення; якщо ж
він дорівнює нулю, то знайдений опорний план вихідної задачі є
виродженим і базис містить, принаймні, один з векторів штучного базису.
Тема 2. Загальна задача лінійного програмування та деякі з методів розв’язання

Якщо вихідна задача містить кілька одиничних векторів, то їх слід


включити в штучний базис.
Алгоритм рішення ЗЛП (15) - (17) методом штучного базису
включає наступні основні етапи:
1. Складають розширену задачу (18) - (20).
2. Знаходять опорний план розширеної задачі.
3. За допомогою звичайних обчислень симплекс-методу
виключають штучні вектори з базису. В результаті або знаходять
опорний план вихідної задачі (15) - (17), або встановлюють її
нерозв'язність.
4. Використовуючи знайдений опорний план завдання (15) - (17),
або знаходять симплекс-методом оптимальний план вихідної задачі, або
встановлюють її нерозв'язність.

You might also like