Алгоритм розв’язування задачі лінійного програмування симплекс-методом
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 | |||||||
![]() | ![]() | ||||||||
![]() | ![]() | ![]() | |||||||
![]() | ![]() | ![]() | |||||||
![]() | ![]() | ![]() | |||||||
![]() | ∆ | ![]() | |||||||
![]() | ![]() | ![]() | |||||||
![]() | ![]() | ![]() | |||||||
![]() | ![]() | ![]() | |||||||
![]() | ![]() | ![]() | |||||||
![]() | ![]() | ![]() | |||||||
![]() | ![]() | ![]() | |||||||
![]() | ![]() | ![]() | |||||||
![]() | ![]() | ![]() | |||||||
![]() | ![]() | ![]() | ![]() | ||||||
![]() | ![]() | ![]() | ![]() |
,
Відповідь: – невироджений оптимальний план,
.