- •Дослідження операцій
- •Загальна задача лп. Допустима область та її властивості. Поняття вершини допустимої області, базисного (опорного) плану задачі.
- •Стандартна задача лп. Зведення загальної задачі до стандартної. Канонічна задача лп. Зведення стандартної задачі до канонічної.
- •1. Алгоритм симплекс-методу.
- •Симплексні перетворення. Відносні оцінки змінних. Критерій оптимальності базисного плану. Ознака необмеженості цільової функції. Алгоритм симплексного методу.
- •Побудова початкового базисного плану. Метод штучної бази. М-метод.
- •Двоїстість в лп. Несиметрична та симетрична пари двоїстих задач. Теореми двоїстості. Двоїстий симплекс-метод.
1. Алгоритм симплекс-методу.
Симплекс-метод застосовується до канонічної задачі лінійного програмування, яка має вигляд:
,
де .
Знаходиться початковий базисний розв’язок (опорний план) . Обчислюються відносні оцінки змінних:
(для базисних змінних відносні оцінки рівні нулю). Отже, побудована початкова ітерація. Припустимо, що побудована s-та ітерація.
Проводиться аналіз відносних оцінок небазисних змінних:
якщо всі відносні оцінки невід’ємні, то отриманий базисний розв’язок є оптимальним. Вихід з алгоритму;
якщо і , то цільова функція (лінійна форма) необмежена знизу. Вихід з алгоритму;
якщо але , то змінну можна ввести в число базисних змінних. З числа базисних змінних виключається змінна , де номер l знаходиться наступним чином l: , індекс k шукається k: . При цьому коефіцієнти нової задачі обчислюються за формулами:
Новий базисний розв’язок буде: при цьому значення лінійної форми: , зменшується на . Переходимо на початок п.3.
Завдяки тому, що кількість вершин скінчена на деякому кроці буде здійснюватись вихід із циклу.
Відомо, що симплекс-метод може бути використаний тільки для невироджених задач. Тобто, для задач в яких базисні розв’язки невироджені.
Зауваження. Розв’язок вироджений, якщо і метод зациклюється. Тобто, знаходимось в одній вершині, але міняємо базисні координати.
При розрахунках зручно користуватись симплекс-таблицями. Якщо задача канонічна, то таблиця має вигляд:
№ ітерації |
базисні змінні |
|
|
|
... |
|
... |
|
|
|
Примітки |
|
|
... |
|
... |
|
||||||
0 |
|
|
1 |
0 |
... |
0 |
... |
|
|
|
|
|
|
0 |
1 |
... |
0 |
... |
|
|
|
||
... |
... |
... |
... |
... |
... |
... |
... |
... |
|
||
|
|
0 |
0 |
... |
1 |
... |
|
|
|
||
|
|
0 |
0 |
... |
0 |
... |
|
|
|
Приклад. Нехай задано деяку стандартну задачу лінійного програмування:
Зведемо цю задачу до канонічного виду:
Цю задачу тепер можна розв’язати за допомогою симплекс-методу. Побудуємо симплекс-таблицю.
-
№ ітерації
базисні змінні
-2
-1
-7
0
0
Примітки
0
0
1
2
3
1
0
4
4/3
– ввести
– вивести
0
-1
-4
10
0
1
7
7/10
0
-2
-1
-7
0
0
1
0
13/10
32/10
0
1
-3/10
19/10
19/32
– ввести
– вивести
-7
-1/10
-4/10
1
0
1/10
7/10
-
-49/10
-27/10
-38/10
0
0
7/10
2
-1
13/32
1
0
10/32
-3/32
19/32
19/13
– ввести
– вивести
-7
2/32
0
1
4/32
2/32
30/32
30/13
-229/32
-37/32
0
0
38/32
11/32
3
-2
1
32/13
0
10/13
-3/13
19/13
-7
0
-2/13
1
1/13
1/13
11/13
-115/13
0
37/13
0
27/13
1/13
Всі відносні оцінки невід’ємні. Отже, знайдений розв’язок є оптимальним розв’язком канонічної задачі , при цьому оптимальний розв’язок початкової (заданої) задачі буде .