Алгоритм симплекс-методу.
Записуємо робочу модель.
З’ясовуємо умови задачі і записуємо їх у вигляді обмежень.
Будуємо цільову функцію, що відображує мету розв’язання задачі і обов’язково включає до свого складу змінні.
Цільова функція нашої задачі має вигляд:
L = 10 х1 + 18 х2 → max,
де кожний окремий доданок означає прибуток від випуску продукції відповідного виду, а символ → max відображає вимогу максимізації функції.
Згідно з умовами прикладу запаси сировини S1, S2, S3 обмежені і відповідно дорівнюють 60, 65, 135, отже, кількість ресурсів кожного типу, які використовуються для виробництва всіх видів продукції, не повинна перевищувати наявної їх кількості в розпорядженні підприємства:
2 х1 + 2 х2 ≤ 60,
3 х1 + х2 ≤ 65,
2 х1 + 9 х2 ≤ 135,
i, очевидно, випуск продукції повинен бути невід’ємним:
х1 ≥ 0, х2 ≥ 0.
L = 10 х1 + 18 х2 → max,
2 х1 + 2 х2 ≤ 60,
3 х1 + х2 ≤ 65,
2 х1 + 9 х2 ≤ 135,
х1 ≥ 0, х2 ≥ 0.
6. Зводимо дану задачу лінійного програмування до канонічної форми. (Детально дана задача розглянуто у прикладі 1).
Вводимо в ліві частини нерівностей виду “≤” додаткові невід’ємні змінні х3, х4, х5 (балансові змінні) зі знаком “+” та отримуємо канонічну форму для заданої задачі лінійного програмування:
L = 10 х1 + 18 х2 → max,
2 х1 + 2 х2 + х3 = 60,
3 х1 + х2 + х4 = 65, (*)
2 х1 + 9 х2 + х5 = 135,
х1 ≥ 0, х2 ≥ 0, х3 ≥ 0, х4 ≥ 0, х5 ≥ 0.
1).
Зводимо систему обмежень до одиничного базису:
а функцію цілі L = γ0 + γr+1xr+1 + … + γjxj + … + γnxn, що виражена через вільні зміннізаписуємо у вигляді: L - γr+1xr+1 - … - γjxj - … - γnxn= γ0
Подаємо умову задачі лінійного програмування у вигляді таблиці:
Таблиця 1.
Базисні змінні | Вільні члени | x1 | x2 | … | xі | … | xr | xr+1 | … | xj | … | xn |
x1 | b1 | 1 | 0 | … | 0 | … | 0 | a1, r+1 | … | a1, j | … | a1, n |
x2 | b2 | 0 | 1 | … | 0 | … | 0 | a2, r+1 | … | a2, j | … | a2, n |
…… | ……. | … | … | … | … | … | … | … | … | … | … | … |
xі | bi | 0 | 0 | … | 1 | … | 0 | ai, r+1 | … | ai, j | … | ai, n |
…… | ……. | … | … | … | … | … | … | … | … | … | … | … |
xr | bn | 0 | 0 | … | 0 | … | 1 | ar, r+1 | … | ar, j | … | ar, n |
L | γ0 | 0 | 0 | … | 0 | … | 0 | γr+1 | γj | γn |
2). Вибираємо направляючий стовпчик ар з умови: γі < 0 і хоча б один елемент аір > 0.
3). Вибираємо q-й ведучий рядок з умови: bq/aqp= min { bi/aip } для aip > 0.
4). Виконуємо перерахунок елементів q-го ведучого рядка за формулою:
a’qk = aqk / aqp, (k = 0, 1, 2,…, n).
5). Обчислюємо елементи всіх інших рядків (при k≠p) за формулою:
a’іk = aіk - a’qk∙ aіp, (і = 0, 1, 2, …, q-1,q+1,…,r).
Перед тим як виконувати вищевказані дії, перевіряємо чи виконується теорема симплексного методу:
1) якщо в стовпчику, де γі < 0 існує хоча б один елемент аір > 0, то опорний план можна покращити;
2) якщо в усіх стовпчиках, де γі < 0 немає жодного додатного елемента аір, (всі аір< 0), то функція цілі не обмежена в області допустимих розв’язків (L→max).
3) якщо γі ≥ 0 для всіх і, то отриманий опорний план є оптимальним.
Повертаємося до прикладу. Отримана система рівнянь-обмежень сумісна, так як ранги матриці системи А та розширеної матриці Ā співпадають і рівні 3.
2 2 1 0 0 2 2 1 0 0 60
rang А = rang 3 1 0 1 0 = rang Ā = rang 3 1 0 1 0 65 = 3.
2 9 0 0 1 2 9 0 0 1 135
З того, що система сумісна і має ранг 3 випливає, що три базисні змінні можна лінійно виразити через дві вільні змінні. Виразимо, наприклад, змінні х3, х4, х5 та функцію цілі через змінні х1 та х2, тобто приведемо систему до одиничного базису:
х3 = 60 – 2х1 – 2х2,
х4 = 60 – 2х1 – 2х2,
х5 = 60 – 2х1 – 2х2.
Функція цілі L = 10 х1 + 18 х2 виражена через змінні х1 та х2, перепишемо її для зручності у вигляді: L - 10 х1 - 18 х2 = 0.
Покладемо х1 = 0 та х2 = 0 і дістаємо значення решти змінних: х3 = 60, х4 = 65, х5 = 135. Всі значення змінних є невід’ємними і задовольняють системі (*), а тому є допустимими. Таким чином, отримали початковий розв’язок системи (*) – початковий план: (0; 0; 60; 65; 135). При цьому L = 0.
Таблиця 2.
Базис | Вільні члени, bi | bi / хi | |||||
х1 | х2 | х3 | х4 | х5 | |||
х3 | 60/2=30 | ||||||
х4 | 65/1=65 | ||||||
х5 | 135/9=15 | ||||||
L | -10 | -18 |
Отриманий початковий план можна вдосконалити, так як в останньому рядку табл.2 є два від’ємні числа: -10, -18. Вибираємо за направляючий стовпчик - стовпчик, що містить х2, так як min {-18; -10} = -18. Визначаємо ведучий рядок, для цього з’ясовуємо, чи є в першому стовпці додатні числа. Їх три: 2, 1, 9. Складаємо відношення відповідних вільних членів до цих чисел, які заносимо в останній стовпчик і вибираємо серед цих відношень найменше (15), тоді ведучим рядком буде рядок, що містить х5. На перетині направляючого стовпця та ведучого рядка буде число 9, цей елемент є розрахунковим. Таким чином, змінна х5 виводиться з базису, тепер її значення дорівнює 0. Змінна х2 вводиться в базис. Виконуємо цю операцію за вищенаведеними правилами та отримуємо табл.3.
Таблиця 3.
Базис | Вільні члени, bi | х1 | х2 | х3 | х4 | х5 | bi / хi |
х3 | 60 -15*2 = | 2 – 2/9*2 = | 2 – 1*2= | 1 – 0*2= | 0 – 0*2= | 0 – 1/9*2= | 30:14/9 ≈ 19,3 |
14/9 | -2/9 | ||||||
х4 | 65 -15*1 = | 3 – 2/9*1 = | 1 – 1*1= | 0 – 0*1= | 1 – 0*1= | 0 – 1/9*1= | 50:25/9= |
25/9 | -1/9 | ||||||
х2 | 135 : 9 = | 2:9 = | 9:9 = | 0:9 = | 0:9 = | 1:9 = | 15:2/9= 67,5 |
2/9 | 1/9 | ||||||
L | 0 -15*(-18) = | -10 –2/9*(-18)= | -18 – 1*(-18)= | 0 – 0*(-18)= | 0 – 0*(-18)= | 0 – 1/9*(-18)= | |
-6 |
З цієї таблиці знаходимо новий опорний план: (0; 15; 30; 50; 0) для якого L=270.
В табл. 3 в рядку для L є одне від’ємне число –6, яке відповідає стовпцю для змінної х1. Отже, виконуємо наступну ітерацію – крок симплекс-метода. У визначеному стовпці є три додатні чиста: 14/9, 25/9, 2/9. З останнього стовпчика за відношенням вільних членів до цих чисел визначаємо, що ведучим рядком буде рядок, що містить змінну х4. Розрахунковий елемент 25/9, що означає вивід з базису змінної х4 (тепер х4 = 0) та включення до базису змінної х1 . Провівши відповідні розрахунки, отримуємо табл. 4.
Таблиця 4.
Базис | Вільні члени, bi | х1 | х2 | х3 | х4 | х5 |
х3 | 30 -18*14/9 = | 14/9 – 1*14/9= | 0 – 0*14/9= | 1 – 0*14/9= | 0 – 9/25*14/9= | -2/9 – (-1/25)*14/9= |
-14/25 | -4/25 | |||||
х1 | 50:25/9 = | 25/9:25/9 = | 0:25/9 = | 0:25/9 = | 1:25/9 = | -1/9:25/9 = |
9/25 | -1/25 | |||||
х2 | 15 -18*2/9 = | 2/9 – 1*2/9= | 1 – 0*2/9= | 0 – 0*2/9= | 0 – 9/25*2/9= | 1/9 – (-1/25)*2/9= |
-2/25 | 3/25 | |||||
L | 270 -18*(-6) = | (-6) – 1*(-6)= | 0 – 0*(-6)= | 0 – 0*(-6)= | 0 – 9/25*(-6)= | 2 – (-1/25)*(-6)= |
54/25 | 44/25 |
Оскільки в останньому рядку немає від’ємних чисел, то отриманий опорний план (18; 11; 2; 0; 0), L = 378 є оптимальний.
Згідно з отриманим розв’язком, щоб отримати максимальний прибуток Lmax = 378, необхідно випускати 18 одиниць продукції Р1 та 11 одиниць продукції Р1.
Змінна х3 = 2, це означає, що перший ресурс використовується не повністю. Є його залишок кількістю 2 одиниці. Оскільки х4 та х5 дорівнюють 0, то це означає, що другий і третій ресурси використовуються повністю.