
- •Тема 1.Двоїстий та модифікований симплекс-метод. Блочні задачі лп
- •Пряма та двоїста задачі лінійного проґрамування
- •Зв’язок між розв’язками прямої та двоїстої задач
- •Отримання оптимального розв’язку двоїстої задачі за допомогою симплекс-методу
- •Економічна інтерпретація задач лінійного програмування
- •Двоїстий симплекс-метод
- •Модифікований симплекс-метод
- •Блочні задачі лінійного програмування та підходи до їх розв’язування
Модифікований симплекс-метод
В варіантах
симплекс-методу, що розглядалися раніше,
при реалізації послідовних ітерацій —
переході від попередньої до наступної
симплекс-таблиці — використовувався
метод Ґауса-Жордана, при застосуванні
якого для автоматизації розрахунків
необхідний великий об’єм пам’яті. З
метою усунення такого недоліку
застосовується модифікований
симплекс-метод, що являє собою різновид
симплекс-методу, який крім того дозволяє
в багатьох випадках зменшити ще й
загальну кількість арифметичних
операцій. Суттєвою в цьому методі є
реалізація процедури обчислення
оберненої матриці
.
Основні кроки модифікованого симплекс-методу не відрізняються від класичного (різниця полягає в деталях реалізації) і утворюють наступну послідовність:
Знаходження початкового базового розв’язку.
Розрахунок матриці , що являє собою обернену до матриці
, яка складається з векторів початкової бази.
Розрахунок компонент вектору
.
Обчислення значень критеріїв оптимальності досягнутого текучого розв’язку задачі ЛП
. Якщо
то знайдений біжучий розв’язок є оптимальним — робота алґоритму зупиняється. В іншому випадку обирається
— найбільше за абсолютним значенням від’ємне число.
Обчислення компонент вектору
у вихідній базі. Якщо серед цих компонент немає додатніх, то функція мети не обмежена на множині припустимих розв’язків — стоп. Якщо ж серед компонент вектору є додатні, то перехід до наступного базового розв’язку.
Знаходження ведучого рядка за відомими правилами симплекс-методу та обчислення компонент нового базового розв’язку і матриці , що є тепер матрицею, оберненою до матриці компонент векторів нового базового розв’язку.
Перевірка нового розв’язку на оптимальність. Якщо розв’язок неоптимальний, то перехід до кроку 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
, спочатку
знаходимо вектор
компоненти якого визначаються як
скалярний добуток вектору
на відповідні вектори
(знайдені значення записуємо в останньому
рядку основної таблиці та у відповідному
стовпчику додаткової таблиці). Після
цього розраховуємо елементи відповідного
-рядка
допоміжної таблиці. Якщо всі компоненти
цього рядка невід’ємні, то знайдено
оптимальний розв’язок. В іншому випадку
, якщо задача має розв’язок, здійснюється
перехід до наступного. В останньому
стовпчику основної таблиці записуємо
компоненти вектора
,
розкладені
за векторами біжучої бази. Ці значення
отримуємо в результаті множення матриці
основної таблиці на вектор
допоміжної таблиці. Далі знаходимо
ведучий рядок і за відомими правилами
переходимо до наступної основної
таблиці.
Приклад.
Розв’яжемо за допомогою модифікованого симплекс-методу задачу, яку ми вже розв’язали звичайним симплекс-методом.
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 |
Розраховуємо значення . Оскільки всі його компоненти невід’ємні, то знайдений оптимальний розв’язок.