- •Тема 2. Методи розв’язування задач лінійного програмування
- •2.1. Формальна постановка задачі лп
- •2.2. Геометричне представлення задач лп
- •2.3. Симплекс-метод та його варіанти
- •Загальна схема алгоритму симплекс-методу та його таблична форма
- •Методи знаходження початкового базового розв’язку: метод великих штрафів та двоетапний метод
- •Особливі випадки см та відображення їх в симплекс-таблицях
- •Інтерпретація симплекс-таблиць
- •2.4. Двоїстий та модифікований симплекс-метод. Блочні задачі лп Пряма та двоїста задачі лінійного проґрамування
- •Зв’язок між розв’язками прямої та двоїстої задач
- •Отримання оптимального розв’язку двоїстої задачі за допомогою симплекс-методу
- •Двоїстий симплекс-метод
- •Модифікований симплекс-метод
- •Блочні задачі лінійного програмування та підходи до їх розв’язування
- •2.5. Контрольні задачі
2.3. Симплекс-метод та його варіанти
Симплекс-метод ґрунтується на двох основних теоремах ЛП.
Теорема 1. Якщо задача ЛП має оптимальний розв’язок, то максимальне значення функція мети набуває в одній з вершин (кутових точок) многогранника, що утворений обмеженнями. Якщо функція мети отримує це значення більш, ніж в одній кутовій точці, то вона має таке ж значення в довільній їх опуклій комбінації.
Таким чином координати вершин многогранника припустимої області дають достатній об’єм інформації для знаходження оптимального розв’язку.
Базовий
розв’язок системи
визначається базою –
незалежними векторами
.
В довільній екстремальній точці змінна
,
якій відповідає
,
що не входить до бази, має нульове
значення. Таким чином загальна кількість
базових розв’язків становить
.
Теорема 2. Базові розв’язки системи повністю визначають всі її кутові точки.
В принципі координати цих точок можна розрахувати, відсіюючи всі неприпустимі точки та залишаючи ту, для якої значення функції мети максимальне. Але такий шлях є найменш ефективним, оскільки ґрунтується на ідеї повного перебору.
Загальна схема алгоритму симплекс-методу та його таблична форма
Загальна схема алгоритму симплекс-методу є наступною:
Знаходження початкового припустимого базового розв’язку.
Перевірка на зупинку алгоритму: чи знайдений розв’язок є оптимальним? Якщо так, то стоп.
Пошук наступної вершини многогранника, до якої необхідно перейти: визначення змінної, що вводиться до бази (ведучого стовпчика); визначення змінної, що виводиться з бази (ведучого рядка).
Перехід до нової вершини з застосуванням методу Ґауса. Перехід до п.2.
Таблична форма алгоритму:
Вважаємо, що п.1 вже реалізовано – знайдений початковий базовий розв’язок — тобто форма з m одиничними векторами.
Будуємо початкову симплекс-таблицю і розраховуємо значення:
,
де
критерії
оптимальності знайденого розв’язку,
біжуче
значення функції мети для знайденого
базового розв’язку.Перевірка на оптимальність:
а).
- розв’язок оптимальний. Стоп.
b).
— функція мети необмежено зростає.
Стоп.
c).
- наступний крок.
Визначення ведучого стовпчика (яка змінна вводиться до бази):
- індекс ведучого стовпчика.
Визначення
ведучого рядка (яка змінна виводиться
з бази):
.
Ведучий елемент –
.
Перехід
до нової симплекс-таблиці. Заповнюємо
СТ в наступній послідовності: заповнюємо
стовпчик базових змінних та відповідні
значення
;
заповнюємо стовпчики базових змінних
(одиничні вектори!), відповідні значення
; заповнюємо рядок, що відповідає ведучому
рядкові в попередній СТ -
— таким чином всі елементи старого
ведучого рядка ділимо на ведучий елемент
і записуємо на відповідне місце в новій
СТ; значення інших елементів СТ (
)
обчислюємо за формулами –
,
(правило трикутника); обчислюємо Q та
.
Перехід до п.2.
Якщо задача має вироджені опорні плани (базові розв’язки), то на одній з ітерацій одна або декілька змінних базового розв’язку рівні 0, що може приводити до зациклювання.
xb |
cb |
P0 |
c1 |
c2 |
… |
cm |
… |
cj* |
|
cn |
|
|
|
P1 |
P2 |
… |
Pm |
… |
Pj* |
|
Pn |
x1 |
c1 |
|
1 |
0 |
… |
1 |
… |
a1j* |
|
a1n |
x2 |
c2 |
b2 |
0 |
1 |
… |
0 |
… |
a2j* |
|
a2n |
. |
. |
. |
. |
. |
… |
. |
… |
. |
. |
. |
xi* |
|
bi* |
0 |
0 |
… |
0 |
… |
ai*j* |
|
ain |
. |
. |
. |
. |
. |
… |
. |
… |
. |
. |
. |
xm |
0 |
bm |
0 |
0 |
… |
0 |
… |
amj* |
|
amn |
Q |
= |
Q0 |
0 |
0 |
… |
0 |
… |
|
|
|
x1 |
c1 |
b1` |
1 |
0 |
… |
1 |
… |
0 |
|
a`1n |
x2 |
c2 |
b2 ` |
0 |
1 |
… |
0 |
… |
0 |
|
a`2n |
. |
. |
. |
. |
. |
… |
. |
… |
. |
. |
. |
xj* |
|
bi*/ai*j* |
0 |
0 |
… |
0 |
… |
1 |
|
ain/ai*j* |
. |
. |
. |
. |
. |
… |
. |
… |
. |
. |
. |
xm |
0 |
bm ` |
0 |
0 |
… |
0 |
… |
0 |
|
a`mn |
Q |
= |
Q0 |
0 |
0 |
… |
|
… |
0 |
|
|
Приклад 4. Розв’язування задачі ЛП за допомогою СМ
Q= 3x1+2x2 Max,
x1+2x2<=6 x1+2x2+х3 =6
2x1+x2<=8 2x1+x2 +х4 =8
-x1+x2<=1 -x1+x2 +х5 =1
x2<=2 x2 +х6 =2
x1 >=0 x2 >=0
|
|
|
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 |
6/1=6 |
x4 |
0 |
8 |
2 |
1 |
0 |
1 |
0 |
0 |
8/2=4; 4<6 |
x5 |
0 |
1 |
-1 |
1 |
0 |
0 |
1 |
0 |
|
x6 |
0 |
2 |
0 |
1 |
0 |
0 |
0 |
1 |
|
Q |
|
0 |
-3 |
-2 |
0 |
0 |
0 |
0 |
|
x3 |
0 |
2 |
0 |
3/2 |
1 |
-1/2 |
0 |
0 |
|
x1 |
3 |
4 |
1 |
½ |
0 |
½ |
0 |
0 |
|
x5 |
0 |
5 |
0 |
3/2 |
0 |
½ |
1 |
0 |
|
x6 |
0 |
2 |
0 |
1 |
0 |
0 |
0 |
1 |
|
Q |
|
12 |
0 |
-1/2 |
0 |
3/2 |
0 |
0 |
|
x2 |
2 |
4/3 |
0 |
1 |
2/3 |
-1/3 |
0 |
0 |
|
x1 |
3 |
10/3 |
1 |
0 |
-1/3 |
2/3 |
0 |
0 |
|
x5 |
0 |
3 |
0 |
0 |
-1 |
1 |
1 |
0 |
|
x6 |
0 |
2/3 |
0 |
0 |
-2/3 |
1/3 |
0 |
1 |
|
Q |
|
38/3 |
0 |
0 |
1/3 |
4/3 |
0 |
0 |
|
Таким
чином оптимальний розв’язок
,
і оптимальне значення критерію
.

b1