Алгоритм розв’язування задачі лінійного програмування симплекс-методом
1. Заповнюємо симплексну таблицю, знаходимо оцінки , значення .
2. Переглядаємо знаки коефіцієнтів . Якщо всі , то задача розв’язана і базисний розв’язок буде оптимальним, а . Якщо не всі , переходимо до п.3.
3. Серед від’ємних значень знаходимо найбільше по модулю число і відповідний йому стовпчик вибираємо за провідний. Нехай це буде стовпчик з номером . Якщо в провідному стовпчику всі елементи ( ), то маємо випадок 2: цільова функція необмежена і розв’язування закінчене. Якщо не всі , то перейти до п.4.
4. Для кожного додатного елемента -го (провідного) стовпчика знаходимо відношення , вибираємо найменше (тобто знаходимо симплексне відношення ), і називаємо рядок, де воно досягається, провідним. Нехай це буде рядок з номером . Елемент на перетині провідного рядка і провідного стовпця буде провідним.
5. Виконуємо жорданове перетворення таблиці від стовпця В до An, від 1-го рядка до ( +1)-го з провідним елементом і переходимо до кроку 2.
Послідовність операцій 2-5 називається ітерацієюсимплекс-методу.
Зауваження 1. У другій і далі таблицях і можна шукати за правилом прямокутника як і інші елементи.
Зауваження 2. Якщо на кроці 3 є декілька найбільших по модулю оцінок , то в базис включають той вектор, якому відповідає найбільше .
Точнішим є таке правило: якщо не виконується умова оптимальності , , то в базис включають той вектор, якому відповідає min ∆j, при ∆j<0.
Якщо ж мінімальних оцінок декілька, то беруть вектор , якому відповідає максимальне .
Зауваження 3. Якщо в (1) , то умовою оптимальності плану є ∆j≤0, j=1,…,n.
Приклад 5.1. Розв’язати задачу лінійного програмування
,
Складаємо симплекс-таблицю
Сб | -3 | |||||||
-1 | ||||||||
-3 | -1 | |||||||
-18 | -5 | |||||||
-3 | ||||||||
-3 | ||||||||
-3 | ||||||||
Всі , тому базисний розв’язок є оптимальний .
Відповідь: .
Приклад 5.2. Розв’язати симплекс-методом задачу лінійного програмування
;
, , ; .
Зведемо задачу до канонічного вигляду
;
, .
Складемо симплекс-таблицю
i | -1 | ||||||||
-1 | |||||||||
-4 | -1 | ||||||||
m + 1 | ∆ | -1 | -3 | ||||||
-1 | |||||||||
-2 | |||||||||
-1 | |||||||||
-4 | |||||||||
-2 | |||||||||
-2 | -1 | ||||||||
-1 | |||||||||
11 | |||||||||
-1 | 1 | ||||||||
, , .
Зауваження 4. Як відзначалося, при переході від виродженого опорного плану до нового опорного плану цільова функція не збільшується. Можливий випадок, коли новий опорний план також вироджений і т.д., тоді можливе зациклення (коли вироджені плани повторюються). Для усунення зациклення і покращення розв’язку використовують таке правило. Якщо на кроці 4 алгоритму симплекс-методу досягається у декількох рядках, то треба вибрати той рядок, для якого буде найменшим відношення елементів наступного стовпчика до провідного. Якщо при цьому відношення виявляється рівним, то беруть відношення іншого стовпчика до провідного і т.д., поки не виявиться однозначно провідний елемент.
Приклад 5.3. Розв’язати задачу лінійного програмування симплекс-методом
;
, .
Задача записана в канонічному базисному вигляді.
Складаємо симплексну таблицю
i | |||||||||
-2 | |||||||||
-1 | |||||||||
-1 | |||||||||
-2 | -4 | ||||||||
-2 | |||||||||
-5 | |||||||||
-1 | |||||||||
-10 | |||||||||
∆ | |||||||||
,
Відповідь: – невироджений оптимальний план, .