Розв’язування задачі лінійного програмування симплексним методом

Загальні аспекти застосування симплекс-методу

Графічний метод для визначення оптимального плану задач лінійного програмування доцільно застосовувати лише для задач із двома змінними. За більшої кількості змінних необхідно застосовувати інший метод. З властивостей розв’язків задачі лінійного програмування відомо: оптимальний розв’язок задачі має знаходитись в одній з кутових точок багатогранника допустимих розв’язків. Тому найпростіший спосіб відшукання оптимального плану потребує перебору всіх кутових точок (допустимих планів задачі, які ще називають опорними). Порівняння вершин багатогранника можна здійснювати тільки після відшукання якоїсь однієї з них, тобто знайшовши початковий опорний план. Кожний опорний план визначається системою m лінійно незалежних векторів, які містяться в системі обмежень задачі з n векторів Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Отже, загальна кількість опорних планів визначається кількістю комбінацій Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Задачі, що описують реальні економічні процеси, мають велику розмірність, і простий перебір всіх опорних планів таких задач є дуже складним, навіть за умови застосування сучасних ЕОМ. Тому необхідне використання методу, який уможливлював би скорочення кількості обчис­лень. 1949 року такий метод був запропонований американським вченим Дж.Данцігом – так званий симплексний метод, або симплекс-метод.

Ідея цього методу полягає в здійсненні спрямованого перебору допустимих планів у такий спосіб, що на кожному кроці здійснюється перехід від одного опорного плану до наступного, який за значенням цільової функції був би хоча б не гіршим за поперед­ній. Значення функціонала при переході змінюється в потрібному напрямку: збільшується (для задачі на максимум) чи зменшується (для задачі на мінімум).

Процес розв’язання задачі симплекс-методом має ітераційний характер: однотипні обчислювальні процедури (ітерації) повторюються у певній послідовності доти, доки не буде отримано оптимальний план задачі або з’ясовано, що його не існує.

Отже, симплекс-метод – це ітераційна обчислювальна процедура, яка дає змогу, починаючи з певного опорного плану, за скінченну кількість кроків отримати оптимальний план задачі лінійного програмування.

Початковий опорний план

Розглянемо задачу лінійного програмування, записану в канонічній формі:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru

Розв’язування задачі лінійного програмування симплексним методом - student2.ru

Розв’язування задачі лінійного програмування симплексним методом - student2.ru .

Не порушуючи загальності, допустимо, що система рівнянь містить перші m одиничних векторів. Отримаємо:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.1)

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.2)

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.3)

Система обмежень (4.2) у векторній формі матиме вигляд:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru , (4.4)

де

Розв’язування задачі лінійного програмування симплексним методом - student2.ru , Розв’язування задачі лінійного програмування симплексним методом - student2.ru ,..., Розв’язування задачі лінійного програмування симплексним методом - student2.ru ,

Розв’язування задачі лінійного програмування симплексним методом - student2.ru , …, Розв’язування задачі лінійного програмування симплексним методом - student2.ru , Розв’язування задачі лінійного програмування симплексним методом - student2.ru ,

Розв’язування задачі лінійного програмування симплексним методом - student2.ru – лінійно незалежні одиничні вектори m-вимірного простору, що утворюють одиничну матрицю і становлять базис цього простору. Тому в розкладі (4.4) базисними змінними будуть Розв’язування задачі лінійного програмування симплексним методом - student2.ru , а інші змінні – вільні. Прирівняємо всі вільні змінні до нуля, тобто Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Оскільки Розв’язування задачі лінійного програмування симплексним методом - student2.ru , а вектори Розв’язування задачі лінійного програмування симплексним методом - student2.ru – одиничні, то отримаємо один із розв’язків системи обмежень (4.2):

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.5)

тобто допустимий план.

Такому плану відповідає розклад

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.6)

де Розв’язування задачі лінійного програмування симплексним методом - student2.ru — лінійно незалежні вектори і за властивістю 3 розв’язків задачі лінійного програмування (п.3.4) план Розв’язування задачі лінійного програмування симплексним методом - student2.ru є кутовою точкою багатогранника розв’язків, а отже, може бути почат­ковим опорним планом.

4.3 Перехід від одного опорного плану до іншого

Розглянемо, як, виходячи з початкового опорного плану (4.6), перейти до наступного опорного плану, що відповідає ціле­спрямованому процесу перебору кутових точок багатогранника розв’язків.

Оскільки Розв’язування задачі лінійного програмування симплексним методом - student2.ru є базисом m-вимірного простору, то кожен з векторів співвідношення (4.5) може бути розкладений за цими векторами базису, причому у єдиний спосіб:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru

Розглянемо такий розклад для довільного небазисного вектора, наприклад, для Розв’язування задачі лінійного програмування симплексним методом - student2.ru :

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.7)

Припустимо, що у виразі (4.7) існує хоча б один додатний коефіцієнт Розв’язування задачі лінійного програмування симплексним методом - student2.ru .

Введемо деяку поки що невідому величину Розв’язування задачі лінійного програмування симплексним методом - student2.ru , помножимо на неї обидві частини рівності (4.7) і віднімемо результат з рівності (4.6). Отримаємо:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.8)

Отже, вектор

Розв’язування задачі лінійного програмування симплексним методом - student2.ru

є планом задачі у тому разі, якщо його компоненти невід’ємні. За допущенням Розв’язування задачі лінійного програмування симплексним методом - student2.ru , отже, ті компоненти вектора Розв’язування задачі лінійного програмування симплексним методом - student2.ru , в які входять Розв’язування задачі лінійного програмування симплексним методом - student2.ru , будуть невід’ємними, тому необхідно розглядати лише ті компоненти, які містять додатні Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Тобто необхідно знайти таке значення Розв’язування задачі лінійного програмування симплексним методом - student2.ru , за якого для всіх Розв’язування задачі лінійного програмування симплексним методом - student2.ru буде виконуватися умова невід’ємності плану задачі:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.9)

З (4.9) отримуємо, що для шуканого Розв’язування задачі лінійного програмування симплексним методом - student2.ru має виконуватися умова Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Отже, вектор Розв’язування задачі лінійного програмування симплексним методом - student2.ru буде планом задачі для будь-якого q, що задовольняє умову:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru ,

де мінімум знаходимо для тих i, для яких Розв’язування задачі лінійного програмування симплексним методом - student2.ru .

Опорний план не може містити більше ніж m додатних компонент, тому в плані Розв’язування задачі лінійного програмування симплексним методом - student2.ru необхідно перетворити в нуль хоча б одну з компонент. Допустимо, що Розв’язування задачі лінійного програмування симплексним методом - student2.ru для деякого значення і, тоді відповідна компонента плану Розв’язування задачі лінійного програмування симплексним методом - student2.ru перетвориться в нуль. Нехай це буде перша компонента плану, тобто:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru .

Підставимо значення Розв’язування задачі лінійного програмування симплексним методом - student2.ru у вираз (4.8):

Розв’язування задачі лінійного програмування симплексним методом - student2.ru

Розв’язування задачі лінійного програмування симплексним методом - student2.ru ,

якщо позначити Розв’язування задачі лінійного програмування симплексним методом - student2.ru Розв’язування задачі лінійного програмування симплексним методом - student2.ru , Розв’язування задачі лінійного програмування симплексним методом - student2.ru , то рівняння можна подати у вигляді:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru ,

якому відповідає такий опорний план:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru .

Для визначення наступного опорного плану необхідно аналогічно продовжити процес: будь-який вектор, що не входить у базис, розкласти за базисними векторами, а потім визначити таке Розв’язування задачі лінійного програмування симплексним методом - student2.ru , для якого один з векторів виключається з базису.

Отже, узагальнюючи розглянутий процес, можемо висновувати: визначення нових опорних планів полягає у виборі вектора, який слід ввести в базис, і вектора, який необхідно вивести з базису. Така процедура відповідає переходу від одного базису до іншого за допомогою методу Жордана-Гаусса.

Необхідно зазначити, що для випадку, коли вектор Розв’язування задачі лінійного програмування симплексним методом - student2.ru підлягає включенню в базис, а в його розкладі (4.7) всі Розв’язування задачі лінійного програмування симплексним методом - student2.ru , то, очевидно, не існує такого значення Розв’язування задачі лінійного програмування симплексним методом - student2.ru , яке виключало б один з векторів. У такому разі план Розв’язування задачі лінійного програмування симплексним методом - student2.ru містить m+1 додатних компонент, отже, система векторів Розв’язування задачі лінійного програмування симплексним методом - student2.ru буде лінійно залежною і визначає не кутову точку багатогранника розв’язків. Функціонал не може в ній набирати максимального значення. Це означає, що функціонал є необмеженим на багатограннику розв’язків.

4.4 Оптимальний розв’язок. Критерій оптимальності плану

Симплексний метод уможливлює направлений перебір опорних планів, тобто перехід від одного плану до іншого, який є хоча б не гіршим від попереднього за значенням функціонала. Отже, окремим питанням стає вибір вектора, який необхідно вводити в базис при здійсненні ітераційної процедури симплексного методу.

Розглянемо задачу лінійного програмування (4.1)-(4.3).

Допустимо, що вона має опорні плани і вони є невиродженими. Розглянемо початковий опорний план виду (4.5):

Розв’язування задачі лінійного програмування симплексним методом - student2.ru

Такому плану відповідає розклад за базисними векторами

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.10)

та значення функціонала:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.11)

Кожен з векторів Розв’язування задачі лінійного програмування симплексним методом - student2.ru можна розкласти за векторами базису, причому у єдиний спосіб:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru , (4.12)

тому такому розкладу відповідатиме і єдине значення функ­ціонала:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru . (4.13)

Позначимо через Розв’язування задачі лінійного програмування симплексним методом - student2.ru коефіцієнт функціонала, що відповідає вектору Розв’язування задачі лінійного програмування симплексним методом - student2.ru , та Розв’язування задачі лінійного програмування симплексним методом - student2.ru (їх називають оцінками відповідних векторів плану) Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Тоді справедливим є таке твердження (умова оптимальності плану задачі лінійного програмування): якщо для деякого плану Розв’язування задачі лінійного програмування симплексним методом - student2.ru розклад всіх векторів Розв’язування задачі лінійного програмування симплексним методом - student2.ru у даному базисі задовольняє умову:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru , (4.14)

то план Розв’язування задачі лінійного програмування симплексним методом - student2.ru є оптимальним розв’язком задачі лінійного програмування (4.1)-(4.3).

Аналогічно формулюється умова оптимальності плану задачі на відшукання мінімального значення функціонала: якщо для деякого плану Розв’язування задачі лінійного програмування симплексним методом - student2.ru розклад всіх векторів Розв’язування задачі лінійного програмування симплексним методом - student2.ru у даному базисі задовольняє умову

Розв’язування задачі лінійного програмування симплексним методом - student2.ru , (4.15)

то план Х0 є оптимальним розв’язком задачі лінійного програмування.

Отже, для того, щоб план задачі лінійного програмування був оптимальним, необхідно і достатньо, щоб його оцінки Розв’язування задачі лінійного програмування симплексним методом - student2.ru були невід’ємними для задачі на максимум та недодатними для задачі на мінімум.

Розв’язування задачі лінійного програмування симплексним методом

Розглянемо, як, виходячи з початкового опорного плану задачі лінійного програмування, за допомогою симплексного методу знайти оптимальний план.

Продовжимо розгляд задачі (4.1)-(4.3), опорний план якої Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Для дослідження даного плану на оптимальність (за умовою оптимальності плану задачі лінійного програмування) необхідно вектори Розв’язування задачі лінійного програмування симплексним методом - student2.ru системи обмежень (4.2) розкласти за базисними векторами Розв’язування задачі лінійного програмування симплексним методом - student2.ru і розрахувати значення оцінок Розв’язування задачі лінійного програмування симплексним методом - student2.ru .

Всі подальші обчислення зручно проводити в симплексній таблиці (табл.4.1).

У стовпці «Базис» записані змінні, що відповідають базисним векторам, а в стовпці «Сбаз» – коефіцієнти функціонала відповідних базисних векторів. У стовпці «План» – початковий опорний план Розв’язування задачі лінійного програмування симплексним методом - student2.ru , в цьому ж стовпці в результаті обчислень отримують оптимальний план. У стовпцях Розв’язування задачі лінійного програмування симплексним методом - student2.ru записані коефіцієн­ти розкладу кожного j-го вектора за базисом, які відповідають у пер­шій симплексній таблиці коефіцієнтам при змінних у системі (4.2). У (m+1)-му рядку в стовпці «План» записують значення функціонала для початкового опорного плану Розв’язування задачі лінійного програмування симплексним методом - student2.ru , а в інших стовпцях Розв’язування задачі лінійного програмування симплексним методом - student2.ru – значення оцінок Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Цей рядок симплексної таблиці називають оцінковим.

Значення Розв’язування задачі лінійного програмування симплексним методом - student2.ru знаходять підстановкою компонент опорного плану в цільову функцію, а значення Розв’язування задачі лінійного програмування симплексним методом - student2.ru – при підстанов­ці коефіцієнтів розкладу кожного j-го вектора за векторами ба­зису, тобто ці значення в табл.4.1 отримують як скалярний добуток:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru

Розв’язування задачі лінійного програмування симплексним методом - student2.ru ,

де сі – коефіцієнти функціонала, що відповідають векторам базису.

Таблиця 4.1 – Перша симплексна таблиця для розв’язку задач лінійного програмування

Розв’язування задачі лінійного програмування симплексним методом - student2.ru

Після заповнення табл.4.1 розраховують значення оцінок плану (останній рядок): Розв’язування задачі лінійного програмування симплексним методом - student2.ru Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Потім згідно з умовою оптимальності плану задачі лінійного програмування, якщо всі Розв’язування задачі лінійного програмування симплексним методом - student2.ru (для задачі на максимум), то план є оптимальним. Допустимо, що одна з оцінок Розв’язування задачі лінійного програмування симплексним методом - student2.ru , тоді план Розв’язування задачі лінійного програмування симплексним методом - student2.ru не є оптимальним і необхідно здійснити перехід до наступного опорного плану, якому буде відповідати більше значення функціонала. Якщо від’ємних оцінок кілька, то включенню до базису підлягає вектор, який вибирається як Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Мінімум знаходять для тих індексів j, де Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Якщо існує кілька однакових значень оцінок, що відповідають Розв’язування задачі лінійного програмування симплексним методом - student2.ru , то з відповідних їм векторів до базису включають той, якому відповідає максимальне значення функціонала.

Якщо хоча б для однієї від’ємної оцінки Розв’язування задачі лінійного програмування симплексним методом - student2.ru всі коефіцієнти розкладу Розв’язування задачі лінійного програмування симплексним методом - student2.ru відповідного вектора недодатні, то це означає, що функціонал є необмеженим на багатограннику розв’язків, тобто багатогранник у даному разі являє собою необмежену область і розв’язком задачі є Розв’язування задачі лінійного програмування симплексним методом - student2.ru .

Нехай Розв’язування задачі лінійного програмування симплексним методом - student2.ru , тобто мінімальне значення досягається для k-го вектора Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Тоді до базису включається вектор Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Відповідний стовпчик симплексної таблиці називають напрямним.

Для того, щоб вибрати вектор, який необхідно вивести з базису (згідно з процедурою переходу від одного опорного плану задачі до іншого – п.4.2), розраховують останній стовпчик табл.4.1 – значення Розв’язування задачі лінійного програмування симплексним методом - student2.ru .

Розв’язування задачі лінійного програмування симплексним методом - student2.ru .

З розрахованих значень необхідно вибрати найменше Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Тоді з базису виключають i-ий вектор, якому відповідає Розв’язування задачі лінійного програмування симплексним методом - student2.ru .

Допустимо, що Розв’язування задачі лінійного програмування симплексним методом - student2.ru відповідає вектору, що знаходиться в l-му рядку табл.4.1. Відповідний рядок симплексної таблиці називають напрямним.

Перетином напрямного стовпчика та напрямного рядка визначається елемент симплексної таблиці alk, який називають розв’язувальним елементом. За допомогою елемента alk і методу Жордана-Гаусса розраховують нову симплексну таблицю, що визначатиме наступний опорний план задачі.

Для визначення нового опорного плану необхідно всі вектори розкласти за векторами нового базису. Вектор Аk, який необхідно вводити до базису, в розкладі за початковим базисом має вигляд:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.16)

Вектор Аl виходить з базису, і його розклад за новим базисом отримаємо з виразу (4.16):

Розв’язування задачі лінійного програмування симплексним методом - student2.ru . (4.17)

Розклад вектора А0 за початковим базисом має вигляд:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru . (4.18)

Для запису розкладу вектора в новому базисі підставимо вираз (4.17) у рівняння (4.18), маємо:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru

Розв’язування задачі лінійного програмування симплексним методом - student2.ru .

Отже, значення компонент наступного опорного плану розраховуються за формулами:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.19)

Розклад за початковим базисом будь-якого з векторів має вигляд:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru . (4.20)

Розклад за новим базисом отримаємо підстановкою (4.17)
у (4.20):

Розв’язування задачі лінійного програмування симплексним методом - student2.ru

Розв’язування задачі лінійного програмування симплексним методом - student2.ru

Розв’язування задачі лінійного програмування симплексним методом - student2.ru .

Новий план: Розв’язування задачі лінійного програмування симплексним методом - student2.ru , де

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.21)

Формули (4.19) та (4.21) є формулами повних виключень Жор­дана-Гаусса.

Отже, щоб отримати коефіцієнти розкладу векторів Розв’язування задачі лінійного програмування симплексним методом - student2.ru за векторами нового базису (перехід до наступного опорного плану та створення нової симплексної табл.4.2), необхідно:

1) розділити всі елементи напрямного рядка на розв’язуваль­ний елемент;

2) розрахувати всі інші елементи за формулами повних виключень Жордана—Гаусса (правило прямокутника).

Потім необхідно здійснити перевірку нових значень оцінкового рядка. Якщо всі Fj – сj ³ 0, то план Х1 — оптимальний, інакше переходять до відшукання наступного опорного плану. Процес продовжують до отримання оптимального плану, чи встановлення факту відсутності розв’язку задачі.

Якщо в оцінковому рядку останньої симплексної таблиці оцінка Fj – сj ³ 0 відповідає вільній (небазисній) змінній, то це означає, що задача лінійного програмування має альтернативний оптимальний план. Отримати його можна, вибираючи розв’язувальний елемент у зазначеному стовпчику таблиці та здійснивши один крок (одну ітерацію) симплекс-методом. У результаті отримаємо новий опор­ний план, якому відповідає те саме значення функціонала, що і для попереднього плану, тобто функціонал досягає максимального значення в двох точках багатогранника розв’язків, а отже, за властивістю 2 (п.3.2) розв’язків задачі лінійного програмування така задача має нескінченну множину оптимальних планів.

Розв’язання задачі лінійного програмування на відшукання мінімального значення функціонала відрізняється лише умовою оптимальності опорного плану. До базису включають вектор, для якого Розв’язування задачі лінійного програмування симплексним методом - student2.ru , де максимум знаходять для тих j, яким відповідають Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Всі інші процедури симплексного методу здійснюються аналогічно, як у задачі лінійного програмування на відшукання максимального значення функціонала.

Таблиця 4.2 – Друга симплексна таблиця для відшукання опорного (оптимального) плану

Розв’язування задачі лінійного програмування симплексним методом - student2.ru

4.6 Метод штучного базису (самостійна робота)

У попередніх параграфах розглядався випадок, коли система обмежень задачі лінійного програмування містила одиничну матрицю порядку m. Проте більшість задач не можна звести до потрібного вигляду. В такому разі застосовується метод штучного базису.

Розглянемо задачу лінійного програмування:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.22)

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.23)

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.24)

Задача подана в канонічному вигляді і система обмежень (4.23) не містить одиничної матриці. Отримати одиничну матрицю можна, якщо до кожного рівняння в системі обмежень задачі додати одну змінну Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Такі змінні називають штуч­ними. (Не обов’язково кількість введених штучних змінних має дорівнювати m. Їх необхідно вводити лише в ті рівняння системи обмежень, які не розв’язані відносно базисних змінних.) Допустимо, що система рівнянь (4.23) не містить жодного одиничного вектора, тоді штучну змінну вводять у кожне рівняння:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru (4.25)

Розв’язування задачі лінійного програмування симплексним методом - student2.ru

У результаті додавання змінних у рівняння системи (4.23) область допустимих розв’язків задачі розширилась. Задачу з системою обмежень (4.25) називають розширеною, або М-задачею. Розв’язок розширеної задачі збігатиметься з розв’язком початкової лише за умови, що всі введені штучні змінні в оптимальному плані задачі будуть виведені з базису, тобто дорівнюватимуть нулеві. Тоді система обмежень (4.25) набуде вигляду (4.23) (не міститиме штучних змінних), а розв’язок розширеної задачі буде розв’язком і задачі (4.22)-(4.24).

Згідно з симплексним методом до базису вводять змінні, які покращують значення цільової функції. Для даної задачі на максимум вони мають його збільшувати. Отже, для того, щоб у результаті процедур симплексних перетворень виключалися з базису штучні змінні, потрібно ввести їх у цільову функцію з від’ємними коефіцієнтами. Тобто цільова функція набуде вигляду:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru

(У разі розв’язання задачі на відшукання мінімального значення цільової функції вводять коефіцієнти, які є досить великими числами. Цільова функція тоді має вигляд:

Розв’язування задачі лінійного програмування симплексним методом - student2.ru .

Припускається, що величина М є досить великим числом. Тоді якого б малого значення не набувала відповідна коефіцієнту штучна змінна Розв’язування задачі лінійного програмування симплексним методом - student2.ru , значення цільової функції Розв’язування задачі лінійного програмування симплексним методом - student2.ru буде від’ємним для задачі на максимум та додатним для задачі на мінімум і водночас значним за модулем. Тому процедура симплексного методу одразу вилучає відповідні змінні з базису і забезпечує знаходження плану, в якому всі штучні змінні Розв’язування задачі лінійного програмування симплексним методом - student2.ru .

Якщо в оптимальному плані розширеної задачі існує хоча б одне значення Розв’язування задачі лінійного програмування симплексним методом - student2.ru , то це означає, що початкова задача не має розв’язку, тобто система обмежень несумісна.

Для розв’язання розширеної задачі за допомогою симплексних таблиць зручно використовувати таблиці, оцінкові рядки яких поділені на дві частини-рядки. Тоді в (m+2)-му рядку записують коефіцієнти з М, а в (m+1)-му – ті, які не містять М. Вектор, який підлягає включенню до базису, визначають за (m+2)-м рядком. Ітераційний процес по (m+2)-му рядку проводять до повного виключення всіх штучних змінних з базису, потім процес визначення оптимального плану продовжують за (m+1)-им рядком.

Взаємозв’язок між розв’язками початкової та розширеної задач лінійного програмування не є очевидним і визначається такою теоремою.

Теорема 4.1. Якщо в оптимальному плані Розв’язування задачі лінійного програмування симплексним методом - student2.ru Розв’язування задачі лінійного програмування симплексним методом - student2.ru розширеної задачі штучні змінні Розв’язування задачі лінійного програмування симплексним методом - student2.ru Розв’язування задачі лінійного програмування симплексним методом - student2.ru , то план Розв’язування задачі лінійного програмування симплексним методом - student2.ru є оптимальним планом початкової задачі.

Отже, загалом алгоритм розв’язування задачі лінійного програмування симплекс-методом складається з п’яти етапів:

1. Визначення початкового опорного плану задачі лінійного програмування.

2. Побудова симплексної таблиці.

3. Перевірка опорного плану на оптимальність за допомогою оцінок Розв’язування задачі лінійного програмування симплексним методом - student2.ru . Якщо всі оцінки задовольняють умову оптимальності, то визначений опорний план є оптимальним планом задачі. Якщо хоча б одна з оцінок Розв’язування задачі лінійного програмування симплексним методом - student2.ru не задовольняє умову оптимальності, то переходять до нового опорного плану або встановлюють, що оптимального плану задачі не існує.

4. Перехід до нового опорного плану задачі здійснюється визначенням розв’язувального елемента та розрахунками елементів нової симплексної таблиці.

5. Повторення дій, починаючи з п.3.

Далі ітераційний процес повторюють, доки не буде визначено оптимальний план задачі.

У разі застосування симплекс-методу для розв’язування задач лінійного програмування можливі такі випадки.

1. Якщо в оцінковому рядку останньої симплексної таблиці оцінка Розв’язування задачі лінійного програмування симплексним методом - student2.ru відповідає вільній (небазисній) змінній, то це означає, що задача лінійного програмування має альтернативний оптимальний план. Отримати його можна, вибравши розв’язуваль­ний елемент у зазначеному стовпчику таблиці та здійснивши один крок симплекс-методом.

2. Якщо при переході у симплекс-методі від одного опорного плану задачі до іншого в напрямному стовпчику немає додатних елементів Розв’язування задачі лінійного програмування симплексним методом - student2.ru , тобто неможливо вибрати змінну, яка має бути виведена з базису, то це означає, що цільова функція задачі лінійного програмування є необмеженою й оптимальних планів не існує.

3. Якщо для опорного плану задачі лінійного програмування всі оцінки Розв’язування задачі лінійного програмування симплексним методом - student2.ru задовольняють умову оптимальності, але при цьому хоча б одна штучна змінна є базисною і має додатне значення, то це означає, що система обмежень задачі несумісна.

Наши рекомендации