- •1. Загальна задача лінійного програмування
- •1.1. Класифікація задач математичного програмування
- •1.2. Приклади задач лінійного програмування
- •Завдання для індивідуальної та самостійної роботи
- •2. Графічний метод
- •Завдання для індивідуальної та самостійної роботи Розв‘язати задачу лінійного програмування графічним методом (max, min):
- •3. Симплекс-метод розв’язування задачі лінійного програмування
- •3.1 Метод штучного базису
- •Завдання для індивідуальної та самостійної роботи
- •Пряма задача Двоїста задача
- •Симетричні
- •Несиметричні
- •4.2 Теореми двоїстості
- •Завдання для індивідуальної та самостійної роботи
- •5. Транспортна задача
- •5.1 Постановка транспортної задачі і побудова її математичної моделі
- •5.2. Методи пошуку опорних планів транспортної задачі
- •Метод північно-західного кута
- •Метод мінімальної вартості
- •5.3. Критерій оптимальності опорних розв’язків за методом потенціалів
- •5.4. Визначення оптимального плану тз, яка має ускладнення у постановці умови
- •Завдання для індивідуальної та самостійної роботи
- •6.2. Геометрична інтерпретація задачі параметричного програмування
- •6.3. Симплексний метод розв’язання задачі параметричного програмування
- •Завдання для індивідуальної та самостійної роботи
- •7. Задачa цілочисельного програмування
- •7.1. Геометрична інтерпретація задачі цілочисельного програмування
- •Розв’язування
- •7.2. Метод гоморі розв’язування задачі цілочисельного програмування
- •Етапи розв’язку задачі цілочисельного програмування методом гоморі :
- •Завдання для індивідуальної та самостійної роботи Знайти оптимальний цілочисельний розв’язок:
- •Література
Завдання для індивідуальної та самостійної роботи Розв‘язати задачу лінійного програмування графічним методом (max, min):
2.01 2.02
2.03 2.04
2.06
2.07 2.08
2.09 2.10
2.11 2.12
2.13 2.14
2.17
2.18.
2.19 2.20
3. Симплекс-метод розв’язування задачі лінійного програмування
Симплексний метод, або метод послідовного поліпшення плану, полягає в послідовному переході від одного опорного плану до іншого так, що значення лінійної форми весь час збільшується. Оскільки число опорних планів задачі скінчене, то за скінчене число кроків метод дає змогу знайти оптимальний план (якщо він існує) або впевнитись, що лінійна форма на множині планів необмежена (якщо оптимальний план не існує). Для роботи методу повинен бути відомий початковий опорний план.
Дослідження опорного плану на оптимальність, а також подальший обчислювальний процес зручно вести, якщо вихідні відомості внести до таблиці:
|
с1 |
с2 |
. . . . |
сn |
|
|
Cб |
x1 |
x2 |
. . . . |
xn |
bi |
хбаз |
|
a11 a21 . . . . am1 |
a12 a22 . . . . am2 |
. . . . . . . . . . . . . . . . . . . . . . . . |
a1n a2n . . . . amn |
b1 b2 . . . . bn |
|
zj |
|
|
|
|
|
|
j=zj-cj |
|
|
|
|
|
|
с1,с2,,...,сn - коефіцієнти при змінних функції цілі;
a11,a12,...,amn - коефіцієнти при змінних системи обмежень;
bi - вільні члени системи обмежень;
хб - базисні змінні;
Сб - коефіцієнти функції цілі при базисних змінних.
Перші m рядків таблиці заповнюються за умовою, m+1 рядок обчислюється, за формулою: j=zj-cj, де zj- скалярний добуток елементів стовпчика Сб на відповідні елементи стовпців хj, а cj - коефіцієнти функції цілі, які записані у верхньому рядку таблиці.
Теорема 3 (ознака оптимальності) Опорний план =(х1, х2,..., хк,0,0,...,0) задачі лінійного програмування є оптимальним, якщо j0 для всіх j (j=1,n).
Теорема 4 (умова необмеженості цільової функції) Якщо к<0, а всі елементи к-го стовпчика не додатні, то цільова функція не обмежена зверху на допустимій множині.
У m+1 рядку стовпчика bi знаходиться значення цільової функції, яке вона приймає на знайденому опорному плані.
Після заповнення таблиці вихідний опорний план перевіряється на оптимальність за допомогою обчислення значень рядка оцінок j. При цьому можуть бути випадки:
j0 - вихідний опорний план оптимальний;
j<0 для деяких j, та всі відповідні цьому індексу величини aij0 (i=1,m) - цільова функція не обмежена зверху;
j<0 для деяких індексів j,та для кожного такого j хоча б одне з чисел aij додатне - перехід до нового опорного плану.
Цей перехід здійснюється виключенням із вихідного базису будь-якого вектора та введенням до нього нового.
Вектор, який включається до нового базису, відповідає тій оцінці j, що не задовольняє умову оптимальності (для задачі максимізації - від’ємна, мінімізації - додатна). Якщо таких оцінок кілька, серед них вибирають найбільшу за абсолютною величиною і відповідну їй змінну вводять до базису. Припустимо, що індекс зазначеної змінної j=k. Відповідний стовпчик симплексної таблиці називають напрямним.
Для визначення змінної, що має бути виключена з базису, знаходять для всіх додатних aij напрямного стовпчика величини =bi/aij. Вибирають найменше значення , яке вказує на змінну, що виводиться з базису. Припустимо, що це виконується для i=r. Відповідний рядок симплексної таблиці називатиметься напрямним.
Перетином напрямного стовпчика та напрямного рядка визначається число симплексної таблиці ark, яке називають розв’язуваним елементом. За допомогою елемента ark і методу Жордана-Гаусса розраховують нову симплексну таблицю.
Далі ітераційний процес повторюють доти, доки не буде визначено оптимальний план задачі.
У разі застосування симплекс-методу для розв’язування задач лінійного програмування можливі такі випадки:
якщо в у рядку оцінок останньої симплекс-таблиці оцінка zj-cj=0 відповідає вільній (небазисній) змінній, то це означає, що задача лінійного програмування має альтернативний оптимальний план. Отримати його можна, вибравши розв’язуваний елемент у зазначеному стовпчику таблиці та здійснивши один крок симплекс-методом;
якщо при переході у симплекс-методі від одного опорного плану задачі до іншого в напрямному стовпчику не має додатних елементів aiк, тобто неможливо вибрати змінну, яка має бути виведена з базису, то це означає, що цільова функція задачі лінійного програмування є необмеженою й оптимальних планів не існує.
Алгоритм знаходження розв'язку задачі лінійного програмування симплекс методом /задача максимізації/:
1. Знаходять опорний план.
2. Складають симплекс-таблицю.
3. З'ясовують, чи є хоча б одне від'ємне число j. Якщо немає, то знайдений опорний план оптимальний. Якщо серед чисел j від'ємні, то або задача не має розв'язків, або переходять до нового опорного плану.
4. Знаходять напрямні строку та стовпець. Напрямний стовпець визначається найбільшим за абсолютною величиною від'ємним числом j ,а напрямний рядок - найменшим з відношень компонент стовпця bi к додатнім компонентам напрямного стовпця.
5. Виконуючи перетворення за методом Жордана-Гаусса одержуємо новий опорний план.
6. Перевіряють знайдений опорний план на оптимальність. Якщо план не оптимальний і необхідно перейти до нового опорного плану, то вертаються до етапу /4/, якщо одержаний план оптимальний або задача не має розв’язків - подальший процес розв'язування припиняють.
Наприклад
Для виготовлення продукції використовують три види сировини. При цьому можна застосовувати чотири способи виробництва. Запаси сировини та кількість продукції, що виготовляється за 1 годину по кожному способу виробництва наведені в таблиці:
|
1 |
2 |
3 |
4 |
Запаси |
1 2 3 |
1 1 1 |
2 1 3 |
1 2 3 |
0 1 2 |
18 30 40 |
|
12 |
7 |
11 |
10 |
Випуск |
Потрібно знайти план виробництва, при якому буде вироблятися максимум продукції.
Р о з в ’ я з а н н я:
Позначимо через xj час застосування j способу виробництва, складемо математичну модель задачі:
Fmax=12x1+7x2+11x3+10x4
Зведемо цю задачу до канонічної форми:
Fmax=12x1+7x2+11x3+10x4+0x5+0x6+0x7
Складемо симплекс-таблицю:
|
12 |
7 |
11 |
10 |
0 |
0 |
0 |
|
|
|
Cb |
x1 |
x2 |
x3 |
x4 |
x5 |
x6 |
x7 |
bi |
хб |
|
0 0 0 |
1 1 1 |
2 1 3 |
1 2 3 |
0 1 2 |
1 0 0 |
0 1 0 |
0 0 1 |
18 30 40 |
х5 х6 х7 |
|
I |
||||||||||
|
||||||||||
1=Z1-C1 |
-12 |
-7 |
-11 |
-10 |
0 |
0 |
0 |
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
1 |
2 |
1 |
0 |
1 |
0 |
0 |
18 |
х1 |
|
0 |
0 |
-1 |
1 |
1 |
-1 |
1 |
0 |
12 |
х6 |
|
0 |
0 |
1 |
2 |
2 |
-1 |
0 |
1 |
22 |
х7 |
II |
Z2 |
12 |
24 |
12 |
0 |
12 |
0 |
0 |
216 |
|
|
2=Z2-C1 |
0 |
17 |
1 |
-10 |
12 |
0 |
0 |
216 |
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
1 |
2 |
1 |
0 |
1 |
0 |
0 |
18 |
х1 |
|
0 |
0 |
-3/2 |
0 |
0 |
-1/2 |
1 |
-1/2 |
1 |
х6 |
|
10 |
0 |
1/2 |
1 |
1 |
-1/2 |
0 |
1/2 |
11 |
х4 |
III |
Z3 |
12 |
29 |
22 |
10 |
7 |
0 |
5 |
326 |
|
|
3=Z3-C1 |
0 |
22 |
11 |
0 |
7 |
0 |
5 |
326 |
|
|
1. Опорний план 1(0;0;0;0;18;30;40) перевіряємо на оптимальність: обчислюємо значення 1=Z1-C1 де Z1 - скалярний добуток вектора Cb на вектор Aj(j=1,7), С1 - коефіцієнти функції F. Серед значень 1 є від'ємні, отже план 1 не оптимальний. Необхідно перейти до іншого плану. Для цього вибираємо напрямний стовпець, що визначається оцінкою (-12) /обчислення простіші/, та напрямну строку /визначається найменшим з відношень елементів стовпця bi до відповідних елементів стовпця A1:18/1; 30/1; 40/1. Виконуючи перетворення за методом Жордана-Гаусса, одержуємо новий опорний план 2(18;0;0;0;0;12;22).
2. Опорний план 2 перевіряємо на оптимальність, виконуючи аналогічні перетворення 1 етапу. Одержали новий опорний план 3(18;0;0;11;0;1;0).
3. Повторюємо етапи перевірки плану 3(18;0;0;11;0;1;0) на оптимальність, маємо невід’ємні значення 3=Z3-C1, отже план 3 оптимальний.
Відповідь: Fmax=326, *=(18;0;0;11).
