- •Тема 2. Методи розв’язування задач лінійного програмування
- •2.1. Формальна постановка задачі лп
- •2.2. Геометричне представлення задач лп
- •2.3. Симплекс-метод та його варіанти
- •Загальна схема алгоритму симплекс-методу та його таблична форма
- •Методи знаходження початкового базового розв’язку: метод великих штрафів та двоетапний метод
- •Особливі випадки см та відображення їх в симплекс-таблицях
- •Інтерпретація симплекс-таблиць
- •2.4. Двоїстий та модифікований симплекс-метод. Блочні задачі лп Пряма та двоїста задачі лінійного проґрамування
- •Зв’язок між розв’язками прямої та двоїстої задач
- •Отримання оптимального розв’язку двоїстої задачі за допомогою симплекс-методу
- •Двоїстий симплекс-метод
- •Модифікований симплекс-метод
- •Блочні задачі лінійного програмування та підходи до їх розв’язування
- •2.5. Контрольні задачі
Модифікований симплекс-метод
В
варіантах симплекс-методу, що розглядалися
раніше, при реалізації послідовних
ітерацій — переході від попередньої
до наступної симплекс-таблиці —
використовувався метод Ґауса-Жордана,
при застосуванні якого для автоматизації
розрахунків необхідний великий об’єм
пам’яті. З метою усунення такого
недоліку застосовується модифікований
симплекс-метод, що являє собою різновид
симплекс-методу, який крім того дозволяє
в багатьох випадках зменшити ще й
загальну кількість арифметичних
операцій. Суттєвою в цьому методі є
реалізація процедури обчислення
оберненої матриці
.
Основні кроки модифікованого симплекс-методу:
Знаходження початкового базового розв’язку.
Розрахунок матриці , що являє собою обернену до матриці
,
яка складається з векторів початкової
бази.Розрахунок компонент вектору
.Обчислення значень критеріїв оптимальності досягнутого текучого розв’язку задачі ЛП
.
Якщо
то знайдений біжучий розв’язок є
оптимальним — робота алґоритму
зупиняється. В іншому випадку обирається
— найбільше за абсолютним значенням
від’ємне число.Обчислення компонент вектору
у вихідній базі. Якщо серед цих компонент
немає додатніх, то функція мети не
обмежена на множині припустимих
розв’язків — стоп. Якщо ж серед компонент
вектору є додатні, то перехід до
наступного базового розв’язку.Знаходження ведучого рядка за відомими правилами симплекс-методу та обчислення компонент нового базового розв’язку і матриці , що є тепер матрицею, оберненою до матриці компонент векторів нового базового розв’язку.
Перевірка нового розв’язку на оптимальність. Якщо розв’язок неоптимальний, то перехід до кроку 3.
Розрахунки проводяться виходячи з того, що для задачі знайдений початковий базовий розв’язок, тобто відома матриця , до якої можна знайти обернену . Подальші обчислення реалізуються у вигляді таблиць, при цьому для переходу від однієї основної таблиці до наступної використовується допоміжна таблиця, що має наступний вигляд.
xb |
cb |
P0 |
c1 |
c2 |
... |
cn |
|
... |
|
|
|
|
P1 |
P2 |
... |
Pn |
|
|
|
x1 |
c1 |
b1 |
x11 |
x12 |
... |
x1n |
|
... |
|
x2 |
c2 |
b2 |
x21 |
x22 |
... |
x2n |
|
... |
|
. |
. |
. |
. |
. |
... |
. |
... |
... |
... |
xi |
ci |
bi |
xi1 |
xi2 |
... |
xin |
|
... |
|
. |
. |
. |
. |
. |
... |
. |
... |
... |
... |
xm |
сm |
bm |
xm1 |
xm2 |
... |
xmn |
|
... |
|
|
|
|
|
|
... |
|
|
|
|
|
|
|
|
|
... |
|
|
|
|
... |
|
|
... |
... |
... |
... |
|
|
|
|
|
|
|
|
... |
|
|
|
|
Допоміжна
таблиця відрізняється від звичайної
тим, що в ній наявні додаткові стовпці
та рядки, в яких зберігаються вектори
та
,
значення компонент яких обчислюються
при розв’язуванні задачі.
Нижче наведена основна таблиця, що відрізняється від звичайної наступним:
замість стовпчиків векторів Рj з відповідними значеннями сj записуються стовпчики векторів Aj, координатами яких є відповідні стовпчики матриці B-1 ;
в (m+1)- му рядку записуються компоненти вектору
,
а не знгачення
;в таблиці є один додатковий стовпчик, в якому записують координати вектору Ps , розкладеного за біжучою базою, який включатиметься до бази на наступній ітерації.
xb |
cb |
P0 |
А1 |
А2 |
... |
Аn |
Ps |
x1 |
c1 |
b1 |
a11 |
a12 |
... |
a1n |
x1s |
x2 |
c2 |
b2 |
a21 |
a22 |
... |
a2n |
x2s |
. |
. |
. |
. |
. |
... |
. |
|
xi |
ci |
bi |
ai1 |
ai2 |
... |
ain |
xis |
. |
. |
. |
. |
. |
... |
. |
|
xm |
сm |
bm |
am1 |
am2 |
... |
amn |
xms |
|
|
|
|
|
... |
|
|
Для
того, щоб знайти вектор Рs , спочатку
знаходимо вектор
компоненти якого визначаються як
скалярний добуток вектору
на відповідні вектори
(знайдені значення записуємо в останньому
рядку основної таблиці та у відповідному
стовпчику додаткової таблиці). Після
цього розраховуємо елементи відповідного
-рядка
допоміжної таблиці. Якщо всі компоненти
цього рядка невід’ємні, то знайдено
оптимальний розв’язок. В іншому випадку
, якщо задача має розв’язок, здійснюється
перехід до наступного. В останньому
стовпчику основної таблиці записуємо
компоненти вектора
,
розкладені за векторами біжучої бази.
Ці значення отримуємо в результаті
множення матриці
основної таблиці на вектор
допоміжної таблиці. Далі знаходимо
ведучий рядок і за відомими правилами
переходимо до наступної основної
таблиці.
Приклад 9).
Розв’яжемо за допомогою модифікованого симплекс-методу задачу, яку ми вже розв’язали звичайним симплекс-методом.
Q= 3x1+2x2 Max,
x1+2x2+х3 =6
2x1+x2 +х4 =8
-x1+x2 +х5 =1
x2 +х6 =2
x1 >=0 x2 >=0
Ця
задача має початковий базовий розв’язок
x=(0; 0; 6; 8; 1; 2), що визначається векторами
P3, P4, P5, P6. Складовім
цих векторів визначають одиничну матрицю
,
обернена до якої теж є одиничною.
Складаємо основну та допоміжну таблиці. В допоміжній таблиці заповнюємо 4 рядки стовпчиків векторів, а в основній — перші 4 рядки, враховуючи що обернена до одиничної матриці є одиничною матрицею.
Допоміжна таблиця
|
|
|
c1 |
c2 |
c3 |
c4 |
c5 |
c6 |
|
|
|
xb |
cb |
P0 |
3 |
2 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
P1 |
P2 |
P3 |
P4 |
P5 |
P6 |
|
|
|
x3 |
0 |
6 |
1 |
2 |
1 |
0 |
0 |
0 |
0 |
0 |
1/3 |
x4 |
0 |
8 |
2 |
1 |
0 |
1 |
0 |
0 |
0 |
3/2 |
4/3 |
x5 |
0 |
1 |
-1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
x6 |
0 |
2 |
0 |
1 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
|
|
|
-3 |
-2 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
0 |
-1/2 |
0 |
3/2 |
0 |
0 |
|
|
|
|
|
|
0 |
0 |
1/3 |
4/3 |
0 |
0 |
|
|
|
Визначаємо
вектор
,
записуючи його в основну таблицю:
Розрахуємо також значення функції мети та запишемо його в 1-у основну таблицю. Після заповнення 1-го додаткового рядка основної таблиці значення компонент перепишемо в 1-й додатковий стовпчик додаткової таблиці.
Після
цього за формулою
розраховуємо відповідні значення
критеріїв оптимальності та записуємо
їх в додатковий рядок додаткової
таблиці. Оскільки серед цих значень є
від’ємні, то переходимо до наступного
базового розв’язку.
В базу необхідно ввести вектор Р1. Тому цей стовпчик з додаткової таблиці, розкладений за векторами наявної бази (для цього множимо обернену матрицю, наявну в стовпчиках А 1-ї основної таблиці, на вектор Р1 в додатковій таблиці) дописуємо в 1-у основну таблицю.
1-а основна таблиця
xb |
cb |
P0 |
А1 |
А2 |
А3 |
А4 |
P1 |
|
x3 |
0 |
6 |
1 |
0 |
0 |
0 |
1 |
6/1=6 |
x4 |
0 |
8 |
0 |
1 |
0 |
0 |
2 |
8/2=4 |
x5 |
0 |
1 |
0 |
0 |
1 |
0 |
-1 |
— |
x6 |
0 |
2 |
0 |
0 |
0 |
1 |
0 |
— |
|
|
0 |
0 |
0 |
0 |
0 |
-3 |
|
З бази за правилами звичайного симплекс-методу виводимо х4. Число 2 є ведучим елементом. Виконуємо перехід до нової основної таблиці симплекс-методу.
2-а основна таблиця
xb |
cb |
P0 |
А1 |
А2 |
А3 |
А4 |
P2 |
|
x3 |
0 |
2 |
1 |
-1/2 |
0 |
0 |
3/2 |
4/3 |
x1 |
3 |
4 |
0 |
1/2 |
0 |
0 |
1/2 |
8 |
x5 |
0 |
5 |
0 |
1/2 |
1 |
0 |
3/2 |
10/3 |
x6 |
0 |
2 |
0 |
0 |
0 |
1 |
1/2 |
4 |
|
|
12 |
0 |
3/2 |
0 |
0 |
-1/2 |
|
.
Обчислюємо в основній таблиці. До бази вводимо Р2 , записуємо в 2-гу основну таблицю його представлення за векторами нової бази:
З бази виводимо х3 , а вводимо Р2 . Переходимо до наступної основної симплекс-таблиці.
3-я основна таблиця.
xb |
cb |
P0 |
А1 |
А2 |
А3 |
А4 |
x2 |
2 |
4/3 |
2/3 |
-1/3 |
0 |
0 |
x1 |
3 |
10/3 |
-1/3 |
2/3 |
0 |
0 |
x5 |
0 |
3 |
-1 |
1 |
1 |
0 |
x6 |
0 |
2/3 |
-2/3 |
1/3 |
0 |
1 |
|
|
38/3 |
1/3 |
4/3 |
0 |
0 |
Розраховуємо значення . Оскільки всі його компоненти невід’ємні, то знайдений оптимальний розв’язок.
