
- •Змістовний модуль 2. Задача лінійного програмування та методи її розв'язування
- •1. Геометричне рішення злп
- •1.1. Алгоритм графічного методу
- •1.2. Приклад рішення злп графічним методом
- •2. Основні теореми лінійного програмування
- •3. Симплексний метод рішення злп
- •3.1. Алгоритм симплекс-методу
- •3.2. Приклад застосування симплекс-методу
3.1. Алгоритм симплекс-методу
Реалізація симплекс-алгоритму включає вісім кроків. Опишемо їх, паралельно розглядаючи приклад виконання кожного кроку в застосуванні до задачі про хокейні ключки й шахові набори.
Крок 1. Формулювання математичної моделі ЗЛП (формування цільової функції й системи обмежень).
Для визначеності будемо вважати, що вирішується задача на відшукання максимуму. Нижче приведемо загальну постановку такої задачі.
F = c1x1 + c2x2 + ... + cnxn → max;
a11x1 + a12x2 + ... + a1nxn ≤ b1,
a21x1 + a22x2 + ... + a2nxn ≤ b2,
...
am1x1 + am2x2 + ... + amnxn ≤ bm;
xj ≥ 0, j = 1,2,…,n
Крок 2. Приведення задачі до канонічної форми (переведення функціональних обмежень у систему рівнянь).
Для реалізації кроку в обмеження задачі вводяться додаткові змінні. Нижче наведений порядок виконання цієї операції.
a11x1 + a12x2 + ... + a1nxn + y1 = b1,
a21x1 + a22x2 + ... + a2nxn + y2 = b2,
...
am1x1 + am2x2 + ... + amnxn + ym = bm;
Позначимо додаткові змінні трохи інакше, а саме: y1=xn+1, y2=xn+2, ..., ym=xn+m, де n – кількість змінних у вихідній задачі, m – кількість рівнянь.
Всі додаткові змінні також не повинні бути від’ємними.
У відношенні додаткових змінних потрібно зробити ще одне важливе зауваження. Всі вони повинні мати той же знак, що й вільні члени системи обмежень. У противному випадку використовується так званий M-Метод (метод штучного базису).
Крок 3. Побудова вихідної симплекс-таблиці (одержання первісного припустимого базисного рішення).
При ручній реалізації симплексного методу зручно використовувати так звані симплексні таблиці. Вихідна симплекс-таблиця відповідає первісному припустимому базисному рішенню. У якості такого найпростіше взяти базисне рішення, у якому основними є додаткові змінні xn+1, xn+2, ..., xn+m. Нижче наведені вихідна симплексна таблиця в загальному виді (таблиця 2.4) і в застосуванні до розглянутої нами задачі (таблиця 2.5).
Таблиця 2.4 - Загальний вид вихідної симплекс-таблиці
Базис |
Змінні |
bi |
||||||
x1 |
x2 |
… |
xn |
xn+1 |
… |
xn+m |
||
xn+1 |
a11 |
a12 |
… |
a1n |
1 |
… |
0 |
b1 |
xn+2 |
a21 |
a22 |
… |
a2n |
0 |
… |
0 |
b2 |
… |
… |
… |
… |
… |
… |
… |
… |
… |
xn+m |
am1 |
am2 |
… |
amn |
0 |
… |
1 |
bm |
cj |
-c1 |
-c2 |
… |
-cn |
0 |
… |
0 |
F |
Отже, у лівому стовпці записуються основні (базисні) змінні, у першому рядку таблиці перераховуються всі змінні задачі. Крайній правий стовпець містить вільні члени системи обмежень b1, b2, ..., bm. В останньому рядку таблиці (він називається оцінковим) записуються коефіцієнти цільової функції зі зворотнім знаком, а також значення цільової функції при поточному базисному рішенні. У робочу область таблиці (починаючи із другого стовпця й другого рядка) занесені коефіцієнти aij при змінних системи обмежень.
Крок 4. Перевірка умови: всі cj 0. Якщо НІ - здійснюється перехід до кроку 5, якщо ТАК - задача вирішена. Таким чином, на даному кроці перевіряється наявність відємних елементів в останньому рядку симплексної таблиці. Якщо такі елементи є, необхідно продовжувати рішення.
Крок 5. Вибір вирішального стовпця (змінної, що вводиться в базис). Вирішальний стовпець вибирається у відповідності з наступною умовою:
cr=min{cj}, j=1,2,…,n+m;
де r - номер вирішального стовпця.
Таким чином, при визначенні вирішального стовпця береться до уваги останній рядок симплексної таблиці й у ній відшукується найменший відємний елемент.
Крок 6. Перевірка умови: всі air 0. Якщо ТАК - цільова функція необмежена й рішення не існує, якщо НІ - перехід до кроку 7.
Таким чином, необхідно перевірити елементи вирішального стовпця. Якщо серед них немає позитивних, то задача нерозв'язна.
Крок 7. Вибір вирішального рядка (змінної, що виводиться з базису) за умовою:
DS = min{bi/air}, i = 1,2,…,m; для air > 0,
де s - номер вирішального рядка.
Таким чином, для тих рядків, де елементи вирішального стовпця позитивні, необхідно знайти частку від ділення елемента bi (останній стовпець таблиці) на елемент, що знаходиться в вирішальному стовпці. У якості вирішального вибирається рядок, для якого результат такого ділення буде найменшим.
Елемент, що стоїть на перетині вирішального рядка й вирішального стовпця, називається вирішальним елементом.
Крок 8. Перерахування елементів симплекс-таблиці (перехід до нового базисного рішення). Порядок перерахування різних елементів таблиці трохи відрізняється.
Для елементів вирішального рядка використовуються наступні формули:
asj= asj / asr , bs= bs / asr
де s - номер вирішального рядка,
r - номер вирішального стовпця,
asj, bs - нові значення перелічуваних елементів,
asj, bs - старі значення перелічуваних елементів,
asr - старе значення вирішального елемента.
Таким чином, при перерахуванні елементів вирішального рядка кожний її елемент ділиться на вирішальний елемент.
Ще простіше перерахувати елементи вирішального стовпця. Всі вони (крім вирішального елемента) стають рівними нулю:
air=0, сr=0.
Елементи, що не належать вирішальним стовпцю й рядку, перераховуються за так званим правилом прямокутника: подумки виділяється прямокутник, у якому елемент, що підлягає перерахуванню й вирішальний елемент утворюють одну з діагоналей. Формули будуть мати такий вигляд:
aij = aij - airasj / asr, bi = bi - airbs / asr,
cj = cj - crasj / asr, F0 = F0 - crbs / asr,
де aij, bi, cj, F0 - нові значення перелічуваних елементів,
aij, bi, cj, F0 - старі значення перелічуваних елементів.
На малюнку 2.2 наведена загальна схема симплексного алгоритму, що наочно показує порядок його реалізації.