Найбільш широко відомим числовим методом рішення задач лінійного програмування є симплексний метод або метод послідовного покращення плану.
Для викладу симплексного методу припустимо, щоЗЛП представлена у вигляді:
(33)
Ввівши для задачі (33) позначення , , приведемо її до вигляду:
(34)
Відносно отриманої задачі (34) зробимо наступні припущення:
1. rang ;
2. Задача (34) є невиродженою.
Невиродженоюбудемо називати ЗЛП для якої всі її базисні плани невироджені. Невиродженим базисним планомназивається такий план, всі компоненти якого строго додатні.
Зрозуміло, що для невиродженої задачі . З геометричної точки зору умова невироженості означає, що в ЗЛП відсутні вершини, в яких перетиналось би більше ніж граничних гіперплощин (на площині прямих).
Запишемо матрицю умов задачі так ,
де:
- базисна підматриця (із векторів при базисних змінних);
- небазисна підматриця.
Відповідно , .
Із області обмежень задачі (34) визначимо базисні змінні отримаємо
Помножимо останню рівність на матрицю обернену до базисної , оскільки задача, що розглядається невироджена, то існує.
Звідси:
(35)
Також очевидно із (35), що базисний план для задачі (34) запишеться:
(36)
Підставимо отримане значення в цільову функцію задачі (34) маємо:
(37)
Зрозуміло, що при початковому базисному плані (36) значення функції, яка оптимізується, буде рівним . Позначимо через величину , де:
- -тий стовбець матриці умов ;
- коефіцієнт при -тій змінній у цільовій функції.
Величини називають оцінками, а вектор - вектором оцінок.
Покажемо, що якщо – базисна змінна, тоді відповідне . Для визначення оцінки скористаємося формулою ,
Дійсно ( - вектор, у якого на місці стоїть 1, всі інші елементи рівні 0). Тоді .
Запишемо вектор у вигляді , де
- відповідає змінним ( -мірний вектор);
- відповідає змінним ( -мірний вектор).
тоді
(38)
(39)
Співвідношення (39) справедливе, оскільки у цільову функцію доповнюючі змінні входять із нульовими коефіцієнтами, а при змінних стоїть одинична матриця. Використавши вектор оцінок вираз (37) можна переписати у вигляді:
(40)
Відносно вектора оцінок можна виділити два випадки:
1. , , ;
2. , .
Покажемо, що у першому випадку знайдено оптимальний базисний план ЗЛП, тобто задача розв’язана, а у другому випадку або лінійна форма ЗЛП необмежена на множині своїх планів, або можна перейти до наступного базисного плану, який покращить значення цільової функції задачі, що розглядається.
У першому випадку цільову функцію збільшити неможливо за рахунок збільшення значення небазисних змінних, оскільки всі оцінки цих змінних додатні, а тому в (37) значення збільшити невдається.
Нехай серед компонент вектора , . Із виразу (40) видно, що в цьому випадку значення функції, що аналізується, можна збільшити на величину . Оскільки задача (34) на , то очевидно, що чим більше значення ми надамо величині , тим на більшу величину зросте значення досліджуваної цільової функції ЗЛП.
Однак можна збільшувати доти, поки одна із базисних змінних не перетвориться в , тобто найбільше значення, яке може мати змінна рівне числу
(41)
- вектор вільних членів в новому базисі;
- вектор коефіцієнтів при змінній в новому базисі.
Можуть виникнути два випадки:
1. .
Покажемо, що в цьому випадку цільова функція буде необмеженою на множині своїх планів. Якщо , то з виразу (41) видно, що може приймати довільне додатнє значення, в тому числі . Оскільки значення досліджуваної функції при переході до нового базису збільшується на величину , а , то очевидно, що функція мети буде необмежена також.
2. .
З виразу (41) визначається лише одним способом, а саме
(42)
Якщо б визначалась неоднозначно, то в базисному плані, до якого ми переходимо, було б менше, ніж додатніх компонент, що суперечить припущенню про невиродженість. Якщо визначити з -го рівняння і підставити його значення в інші рівняння області та в цільову функцію, отримаємо новий базисний план , який буде відрізнятися від попереднього базисного плану лише тим, що замість базисної змінної буде змінна . Тобто стає вільною змінною, а вільна змінна – базисною. Значення досліджуваної цільової функції при цьому збільшиться на величину . -товий стовбець, який вводиться в базис на текучій ітерації, називається розв’язковим. Індекс r, що задається співвідношенням (42) визначає розв’язковий рядок.
Елемент , що стоїть на перетині розв’язкового стовбця та розв’язкового рядка називається розв’язковим елементом.
Переходом від одного базисного плану до іншого отримаємо послідовність базисів, а отже послідовність впорядкованих базисних розв’язків з монотонно зростаючим значенням цільової функції задачі (34). Оскільки число можливих базисів скінченне і ні один із базисів не може повторюватись, то за скінченне число кроків отримуємо розвязок задачі (34).
З метою застосування прямого симплекс методу у практичних задачах опишемо його алгоритм.
Нехай задана задача лінійного програмування:
Нехай rang . Наведемо кроки алгоритму
1. Будуємо початковий базисний план . Опишемо перехід від .
2. Для кожного ( ) обчислюємо оцінку:
.
3. Перевіряємо чи
4. Перевіряємо чи є в початковому базисному плані додатні значення . Якщо , то – оптимальний базисний план.
5. Знаходимо . Тоді -товий стовбець буде розв’язковим стовбцем, а змінну слід ввести в базу. Необхідно зауважити, що за розв’язковий стовбець можна вибрати будь-який стовбець, для якого . Однак, зважаючи на те, що значення цільової функції змінюється на величину , за розв’язковий стовбець доцільно взяти той, якому відповідає найменша оцінка.
6. Нехай , де елементи розв’язкового стовбця. Якщо для то лінійна форма вихідної задачі необмежена на множині планів, в протилежному випадку 7.
7. Нехай . Складаємо відношення елементів стовбця вільних членів до додатніх елементів розв’язкового стовбця і знаходимо серед них мінімальне, а саме:
.
Якщо мінімум досягається при , то це означає що - та змінна виводиться з числа базисних змінних ( - та стрічка розв’язкова), а - розв’язковий елемент.
8. Здійснюємо перехід до нового базисного плану (базис плану отримуємо заміною вектора вектором у попередньому плані). Перехід до нового базису здійснюємо при допомозі формул:
Стовбець вільних членів перераховуємо так:
Елементи матриці умов задачі знаходимо так:
Значення лінійної форми в новому базисі запишеться:
Елементи вектора оцінок шукаємо за формулами:
9. Переходимо до пункту 3 збільшивши індекс ітерації на 1.
Кожен перехід до нового базису називається ітерацією симплексного методу. Описуючи теоретичні основи симплексного методу ми показали, що цей ітераційний процес є скінченним, а отже, за скінченне число кроків ми отримаємо розв’язок ЗЛП, або покажемо, що його не існує через необмеженість цільової функції або несумісність умов задачі
При розв’язуванні ЗЛП на можна:
1) Від задачі на перейти до задачі на помінявши знаки коефіцієнтів лінійної форми на протилежні.
2) Розв’язувати ЗЛП на використовуючи описаний вище алгоритм для задачі на , за виключенням того, що:
а) критерієм оптимальності плану при розв’язуванні задачі на служить умова: , ;
б) за розв’язковий стовбець вибираємо той стовбець, якому відповідає максимальна додатня оцінка
Приклад.Розв’яжемо з допомогою прямого алгоритму прямого симплекс-методу задачу лінійного програмування:
,
(43)
Запишемо цю задачу в канонічному вигляді, отримаємо:
,
(44)
Для цієї задачі початковий базисний план запишеться:
; . (45)
Застосуємо для ілюстрації симплек-методу табличний спосіб. Для кожної задачі, на кожну ітерацію складається нова симплекс-таблиця. Всі таблиці мають однакову структуру.
Запишемо початкову симплекс-таблицю:
Табл.2. Початкова симплекс таблиця для задачі (43).
-1
-2
-1
Індексний рядок
-2
Симплексна таблиця будується для ЗЛП в канонічній формі, вона включає стовбець базисних змінних, стовбець вільних членів, стовбець коефіцієнтів, з якими базисні змінні входять в цільову функцію, а також стовбці коефіцієнтів при всіх невідомих з області обмежень . Важлива роль в симплексній таблиці відводиться індексній стрічці, в якій розміщено вектор оцінок , .
Для нашого прикладу , тому , а саме . Кожен студент повинен вміти прочитати та проаналізувати симплекс-таблицю, а саме:
1). Прочитати базисний план, що відповідає даній симплекс-таблиці. Для цього базисним змінним надають значення із стовбця вільних членів, вільні змінні – рівні нулю.
2). Дати відповідь на запитання чи є даний базисний план оптимальним (проаналізувати чи серед оцінок виконується ).
В наведеному прикладі початковий базисний план (45) не є оптимальним, оскільки . Тому вибираємо перший стовбець за розв’язковий[2], тобто змінну вводимо в число базисних змінних. Для знаходження розв’язкової стрічки розглядаємо згідно алгоритму співвідношення , це означає, що змінну виводимо з числа базисних і перший рядок є розв’язковим (оскільки співвідношення досягається для першого рядка). Таким чином розвязковий елемент . Здійснивши симплекс перетворення, за формулами кроку 8 алгоритму, відносно розвязкового елемента, отримаємо наступну симплекс таблицю.
Табл.3 Перша симплекс-таблиця для задачі (43).
-1
5/3
-2/3
1/3
32/3
7/3
1/3
40/3
8/3
-1/3
Індексний рядок
10/3
-1/3
2/3
Цій симплекс-таблиці відповідає план:
, . (46)
Оскільки в індексній стрічці є від’ємне значення, то це означає, що план (46) не оптимальний. Другий стовбець отриманої таблиці вибираємо за розв’язковий , тобто змінну вводимо в число базисних. Знаходимо , тобто змінну виводимо з числа базисних. Значення розв’язкового елемента . В результаті симплексного перетворення відносно розв’язкового елемента отримаємо другу симплексну таблицю.
Табл.4. Друга симплекс-таблиця для задачі (43).
-1
33/7
---
---
---
---
---
-1
32/7
---
---
---
---
---
8/7
---
---
---
---
---
Індексний рядок
34/7
5/7
1/7
В індексній стрічці останньої симплекс-таблиці немає від’ємних оцінок. Це означає, що план оптимальний:
.
У зв’язку із цим симплекс-таблиця порахована не повністю. Максимальне значення цільової функції рівне .
[1] Номери введених в задачу доповнюючих та штучних змінних залежать від номерів обмежень до яких вони додаються.