Практичне завдання з математичного програмування
Будування математичної моделі економічної задачі і розвязання її за допомогою графічного метода, методів Жордана-Гаусса, потенціалу та симплекс-метода
Завдання 1
Два вироби В1 і В2 обробляються послідовно на двох верстатах. Кожен виріб типу В1 потребує 1 год. для обробки на І-му верстаті, 2 год. -- на ІІ-му і А = 5^(1/2) = 2,236068 год. -- на ІІІ-му. Кожен виріб типу В2 потребує 2 год. для обробки на І-му верстаті, А = 5 год. -- на ІІ-му і 3 год. -- на ІІІ-му. Час роботи на І-му верстаті не повинен перевищувати 10*5 = 50 год., на ІІ-му -- 15*5 = 75 год., на ІІІ-му -- 50 год.
Необхідно:
Скласти план виробництва при максимальному прибутку, якщо відомо, що продаж одного виробу типу В1 приносить прибуток 5 грн, а типу В2 -- 3 грн.
Для цього:
1). Побудувати математичну модель задачі лінійного програмування.
2). Звести дану задачу до канонічного вигляду.
Розвязок
Введемо умовні позначення:
кількість змінних задачі (типів виробів) -- n = 2;
змінні задачі оптимізації: х1 -- кількість виробів типу В1, х2 -- кількість виробів типу В2;
кількість обмежень-нерівностей (верстатів) -- m = 3;
коефіцієнти аij обмежень-нерівностей (час обробки виробів j на верстатах i): а11 = 1, а21 = 2, а31 = 2,236068; а12 = 2, а22 = 5, а32 = 3;
праві частини bі обмежень-нерівностей (максимальний час роботи і-го верстату) -- b1 = 50, b2 = 75, b3 = 50;
коефіцієнти сj цільової функції Z (прибуток), що максимізується -- с1 = 5, с2 = 3.
Одиниці вимірювання ті самі, що й в умові завдання.
1. Отже, використовуючи наведені вище дані, сформулюємо вихідну математичну модель задачі лінійного програмування: знайти кількості х1, х2 виробів В1, В2 такі, що максимізували б прибуток (цільову функцію)
Z = с1х1 + с2х2 > max
за обмежень на час роботи верстатів
а11х1 + а12х2 ? b1
а21х1 + а22х2 ? b2
а31х1 + а32х2 ? b3
і, звісно, додатних значеннях змінних задачі -- хі ? 0, і = 1, 2.
Підставляючи сюди вихідні дані, отримаємо шукану модель (1):
х1 + 2х2 ? 50,
2х1 + 5х2 ? 75, (1)
2,236068х1 + 3х2 ? 50;
Z = 5х1 + 3х2 > max.
2. Аби звести дану задачу до канонічного (стандартного) вигляду
Z = СХ > mах; АХ = В; Х ? 0, (2)
введемо допоміжні (балансові) змінні х3,4,5 ? 0, які представляють собою різниці між максимальним і фактичним (знайденим в результаті розвязку задачі оптимізації) часом роботи кожного з трьох верстатів. Тоді й отримаємо нашу задачу в канонічному вигляді (2), де:
Х = { хі }, і = 1 ч n = 5,
С = (5, 3, 0, 0, 0),
1 2 1 0 0
А = 2 5 0 1 0
2,236068 3 0 0 1
В = (50, 75, 50).
Як бачимо, вихідна задача максимізації цільової функції Z в нормальній формі (1) набула канонічного вигляду (2) за рахунок перетворення обмежень-нерівностей на обмеження-рівності шляхом введення балансових змінних.
Завдання 2
Розвязати задачу лінійного програмування, сформульовану в Завданні 1, графічним методом:
Z = 3x1 + 2x2 > max
2х1 + х2 ? 4,
х1 + 2х2 ? 5, (1)
х1 ? 0, х2 ? 0.
Розвязок
Використовуючи крайні значення знаків ? обмежень несуворих нерівностей, тобто знаки =, побудуємо такі три графіки:
1) х1 = - x2/2 + 2,
2) х1 = -2x2 + 5,
3) x1 = Z - 2x2/3
Ці графіки показані на рис. 1, на якому многокутник розвязків, як видно, обмежений знизу (оскільки в системі обмежень (1) фігурують знаки ?) тільки додатною чвертю декартової системи х1,2 ? 0.
На цьому рисунку цільова функція показана штриховою лiнiєю, яка, залежно від величини Z, може переміщуватися паралельно сама собі. Стрілкою з буквою n на рис. 1 позначений напрямок градієнта цільової функції (тобто напрямок збільшення Z). Зрозуміло, що її максимум знаходиться в точці перетину ліній обмежень 1) і 2), в якій х1 = 1 > 0, х2 = 2 > 0. Це й є графічний розвязок задачі. При цьому цільова функція буде мати таке значення:
Z = 3*1 + 2*2 = 7.
Рисунок 1. Графік до розвязання Завдання 2
Завдання 3
Розвязати систему лінійних рівнянь методом повного виключення змінних (метод Гаусса) з використанням розрахункових таблиць:
2х1 + х2 - х3 - х4 = 2
4х1 + х3 - 7х4 = 3
2х1 - 3х2 + х4 = 1
Розвязок
Взагалі кажучи, ця недовизначена система може або мати безліч розвязків, або не мати жодного (тобто бути несумісною). Для зясування цього застосуємо метод Гаусса (точніше, Жордана-Гаусса), який реалізуємо у вигляді таблиць 2 - 4. В таблиці 1 вміщені вихідні дані.
Таблиця 1. Вихідна матриця системи
|
А1
|
А2
|
А3
|
А4
|
В
|
|
2
|
1
|
-1
|
-1
|
2
|
|
4
|
0
|
1
|
-7
|
3
|
|
2
|
-3
|
0
|
1
|
1
|
|
|
Згідно методу Жордана-Гаусса, провідний елемент ars замінюємо одиницею, решту елементів провідного (r-го) рядка ділимо на провідний елемент ars, а решту елементів провідного (s-го) стовпчика замінюємо нулями. Елементи, які не належать до провідного рядка або стовпчика, обчислюються за правилом прямокутника:
aij = aij - aisarj / ars, (1)
bi = bi - aisbr / ars, (2)
j = 1, …, n = 4, і r,
i = 1, …, m = 3, j s,
де ars -- провідний елемент (у наших таблицях підкреслений). Розрахунки за формулами (1), (2) зведемо в наступні таблиці, послідовно вибираючи провідними діагональні елементи матриці А.
На першому кроці провідним вибираємо елемент а11.
Таблиця 2. Перший крок методу
|
А1
|
А2
|
А3
|
А4
|
В
|
|
1
|
0,5
|
-0,5
|
-0,5
|
1
|
|
0
|
-2
|
3
|
-5
|
-1
|
|
0
|
-4
|
1
|
2
|
-1
|
|
|
На другому кроці провідним вибираємо елемент а22 = -2.
Таблиця 3. Другий крок методу
|
А1
|
А2
|
А3
|
А4
|
В
|
|
1
|
0
|
0,25
|
-1,75
|
0,75
|
|
0
|
1
|
-1,5
|
2,5
|
0,5
|
|
0
|
0
|
-5
|
12
|
1
|
|
|
Далi, в третьому рiвняннi провідним вибираємо елемент а33 = -5.
Таблиця 4. Третій крок методу з провідним а33
|
А1
|
А2
|
А3
|
А4
|
В
|
|
1
|
0
|
0
|
-1,15
|
0,8
|
|
0
|
1
|
0
|
-1,1
|
0,2
|
|
0
|
0
|
1
|
-2,4
|
-0,2
|
|
|
Якщо покласти х4 = 0, то отримаємо рішення х1 = 0,8, х2 = 0,2, х3 = -0,2. Підстановка їх у вихідну систему дає тотожне задоволення обмежень-рівностей:
2*0,8 + 0,2 + 0,2 - 0 = 2
4*0,8 - 0,2 - 7*0 = 3
2*0,8 - 3*0,2 + 0 = 1
Якщо на третьому кроці в третьому рiвняннi провідним вибрати елемент а34 = 12, то отримаємо таке рішення:
Таблиця 5. Третій крок методу з провідним а34
|
А1
|
А2
|
А3
|
А4
|
В
|
|
1
|
0
|
-0,47917
|
0
|
0,89583
|
|
0
|
1
|
-0,45833
|
0
|
0,29167
|
|
0
|
0
|
-0,41667
|
1
|
8,333E-02
|
|
|
Якщо тут покласти х3 = 0, то отримаємо рішення х1 = 0,89583, х2 = 0,29167, х4 = 0,08333. Підстановка їх у вихідну систему також дає тотожності:
2*0,89583+ 0,29167 - 0 - 0,08333 = 2
4*0,89583 + 0 - 7*0,08333 = 3
2*0,89583 - 3*0,29167 + 0,08333 = 1
Отже, ця недовизначена система має безліч розвязків. Тому можна й далі таким же чином шукати різні розвязки цієї системи, як завгодно "вручну" визначаючи будь-яку її змінну.
Завдання 4
1). Розвязати симплекс-методом задачу лінійного програмування, яка представлена в завданні 2.
2). Побудувати двоїсту задачу до заданої задачі лінійного програмування.
3). Знайти розвязок двоїстої задачі та дати економічну інтерпретацію отриманого розвязку.
Розвязок
Отже, наша вихідна система лінійного програмування (ЛП) із завдання 2 з n = 2 буде така:
Z = 3x1 + 2x2 > max
2х1 + х2 ? 4,
х1 + 2х2 ? 5, (1)
х1 ? 0, х2 ? 0.
1. Для застосування симплекс-методу потрібно привести вихідну систему (1) до канонічного (стандартного) вигляду шляхом введення двох m = 2 нових змінних х3 та х4:
2х1 + х2 + х3 = 4,
х1 + 2х2 + х4 = 5, (2)
х1,2,3,4 ? 0.
Також треба знайти початкове базисне рішення, тобто будь-яке рішення, що не порушує обмежень задачі (2). (Виходячи із тривіальності заданої системи, можна було б відразу вказати таке рішення, яке одночасно було б й оптимальним:
х1 = 1 > 0, х2 = 2 > 0, х3 = х4 = 0.)
Формально початковий базисний розвязок можна взяти, прийнявши до уваги, що x3 та х4 зустрічаються в кожному рівнянні системи (2) по одному разу:
х1,2 = 0, x3 = 4, х4 = 5.
Далi скористаємося алгоритмом симплекс-метода i заповнимо наступні таблиці за відомими формулами математичного програмування. Позначимо через Аk вектор, складений з коефіцієнтів аik при змінній хk в i-ому обмеженні, через СБ -- вектор, складений з координат сбi, що відповідають базисним змінним (на цьому 1-му кроці методу це -- x3, х4). Тепер вирахуємо симплексні різниці Дk за формулою
Дk = Ak CБ - Zk = ?бik, k = 1ч n + m, і = 1 ч m (3)
де підсумовування ведеться по індексу і,
бik = аik сбi - сk. (4)
Отже, Дk дорівнює сумі добутків базисних сбi на аik мінус сk.
Таблиця 1. Перший крок симплекс-методу
|
i
|
Б
|
Сб
|
сk
|
3
|
2
|
0
|
0
|
|
|
|
|
A0
|
A1
|
A2
|
A3
|
A4
|
|
1
|
A3
|
0
|
4
|
2
|
1
|
1
|
0
|
|
2
|
A4
|
0
|
5
|
1
|
2
|
0
|
1
|
|
k
|
0
|
-6
|
-4
|
0
|
0
|
|
|
Оскільки ми шукаємо максимум цільової функції, то треба знайти саму мінімальну симплексну різницю k серед відємних симплекс-різниць, тобто мінімальну за абсолютною величиною (модулем). Такою є симплексна різниця 2 < 0 = -4, отже до базису треба включити вектор A2. Тепер зробимо перевірку того, який з векторів -- А3 чи А4 -- треба виключити з базису. Для цього підрахуємо величини Оо6i = ai0 / ai2 та знайдемо номер базисного індексу j, який відповідає мінімальному значенню Оо6 = min Оо6і.
Оскільки Оо6і = ai0 / ai2, Оо6 = min (4/1 = 4; 5/2 = 2,5) = 2,5, то j = 4 (в попередній таблиці виділений) і з базису виключається вектор A4. Тепер на місце вектора А4 вводимо до базису вектор А2 та робимо перерахунок системи в таблиці 1 за методом Жордана-Гаусса (алгоритм див. у завданні 3), взявши за провідний елемент а22 = 2 (який у попередній таблиці підкреслений хвилястою лінією).
Таблиця 2. Другий крок симплекс-методу
|
i
|
Б
|
Сб
|
сk
|
3
|
2
|
0
|
0
|
|
|
|
|
A0
|
A1
|
A2
|
A3
|
A4
|
|
1
|
A3
|
0
|
1,5
|
1,5
|
0
|
1
|
-0,5
|
|
2
|
A2
|
2
|
2,5
|
0,5
|
1
|
0
|
0,5
|
|
k
|
5
|
-5
|
0
|
0
|
1
|
|
|
Видно, що до базису "проситься" вектор А1. Оскільки Оо6 = min (1,5/1,5 = 1; 2,5/0,5 = 5) = 1, то j = 3 і з базису виключається вектор A3. Тепер на місце вектора А3 вводимо вектор А1 та знову робимо перерахунок системи в таблиці 2 за методом Жордана-Гаусса, взявши за провідний елемент а11 = 1,5.
Таблиця 3. Третій крок симплекс-методу
|
i
|
Б
|
Сб
|
сk
|
3
|
2
|
0
|
0
|
|
|
|
|
A0
|
A1
|
A2
|
A3
|
A4
|
|
1
|
A1
|
3
|
1
|
1
|
0
|
0,666667
|
-0,33333
|
|
2
|
A2
|
2
|
2
|
0
|
1
|
-0,33333
|
0,66667
|
|
k
|
7
|
0
|
0
|
1,33333
|
0,33333
|
|
|
Таким чином, на даному кроцi симплекс-метода всi значення i ? 0, отже ми отримали таке рішення задачі: Х = (1; 2; 0; 0;) з цільовою функцією
Zmax = 3*1 + 2*2 = 7.
Безпосередня підстановка цього рішення у вихідну систему підтверджує його правильність:
2*1 + 2 + 0 = 4,
1 + 2*2 + 0 = 5.
Між іншим, в таблиці 3 маємо також розвязок спряженої задачі (див. далі).
2. В матрично-векторному вигляді взаємно двоїсті (пряма і спряжена) задачі лінійного програмування записуються у вигляді (5), (6):
Z = СХ min (max) при АХ ? В, Х ? 0; (5)
Z = BY max (min) при АTY ? C, Y ? 0. (6)
Враховуючи, що цільова функція Z нашої прямої задачі дослужується на максимум i всі обмеження записані у вигляді нерівностей типу ?, двоїста спряжена задача, згідно з правилами лінійного програмування, матиме такий вигляд:
Z = 4у1 + 5у2 > min
2у1 + у2 ? 3,
у1 + 2у2 ? 2, (5)
у1 ? 0, у2 ? 0.
В даному випадку вихідної системи (1) коефіцієнтами цільової функції Z стають праві частини В обмежень типу ? ; якщо якесь обмеження мало б знак типу ?, ми б просто змінили знаки коефіцієнтів обох частин цього обмеження. Правими частинами обмежень спряженої задачі стають коефіцієнти C цільової функції Z прямої задачі, що максимізується. Нарешті, коефіцієнтами обмежень типу ? спряженої задачі стають елементи векторів Аk, k = 1 ч m. Змінні Y = {уj} спряженої задачі також повинні бути невідємними. Система обмежень спряженої задачі має розмірність n Ч m, на відміну від m Ч n у прямій задачі.
3. Після введення балансових змінних y3,4 одразу отримаємо базовий розвязок канонічної системи:
y1,2 = 0, y3 = 3, y4 = 2.
і можемо зробити перший крок симплекс-методу для двоїстої задачі.
Таблиця 4. Перший крок симплекс-методу
|
i
|
Б
|
Вб
|
bk
|
4
|
5
|
0
|
0
|
|
|
|
|
A0
|
AТ1
|
AТ2
|
AТ3
|
AТ4
|
|
1
|
AТ3
|
0
|
3
|
2
|
1
|
1
|
0
|
|
2
|
AТ4
|
0
|
2
|
1
|
2
|
0
|
1
|
|
k
|
0
|
-8
|
-10
|
0
|
0
|
|
|
При розвязку задачі мінімізації цільової функції в базис вводиться вектор з найбільшою за модулем відємною симплексною різницею . Оскільки ми шукаємо саме мінімум цільової функції, а максимальним за абсолютною величиною (модулем) є 2 < 0 = -10, то до базису треба включити вектор AТ2. Тепер зробимо перевірку того, який з векторів -- А3 чи А4 -- треба виключити з базису. Для цього підрахуємо величини Ообi = ai0 / ai2 та знайдемо номер базисного індексу j, який відповідає максимальному значенню Ооб = mах Ообі, оскільки в даному випадку 2 = -10 < 0.
Так як Ообі = ai0 / ai2, Ооб = mах (3/1 = 3; 2/2 = 1) = 3, то j = 3 і з базису виключається вектор AТ3. Тепер на місце вектора АТ3 вводимо до базису вектор АТ2 та робимо перерахунок системи в таблиці 4 за методом Жордана-Гаусса, взявши за провідний елемент а12 = 1.
Таблиця 5. Другий крок симплекс-методу
|
i
|
Б
|
Вб
|
bk
|
4
|
5
|
0
|
0
|
|
|
|
|
A0
|
AТ1
|
AТ2
|
AТ3
|
AТ4
|
|
1
|
AТ2
|
5
|
3
|
2
|
1
|
1
|
0
|
|
2
|
AТ4
|
0
|
-4
|
-3
|
0
|
-2
|
1
|
|
k
|
15
|
2
|
0
|
5
|
0
|
|
|
Як бачимо, тепер до базису "проситься" вектор АТ1. Оскільки 1 = 2 > 0, то в даному випадку треба шукати Оо6 = mіn (3/2 = 1,5; -4/-3 = 1,3333333) = 1,3333333; отже, j = 4 і з базису виключається вектор A4. Тепер на місце вектора АТ4 вводимо вектор АТ1 та знову робимо перерахунок системи в таблиці 5 за методом Жордана-Гаусса, взявши за провідний елемент а12 = -3.
Таблиця 6. Третій крок симплекс-методу
|
i
|
Б
|
Вб
|
bk
|
4
|
5
|
0
|
0
|
|
|
|
|
A0
|
AТ1
|
AТ2
|
AТ3
|
AТ4
|
|
1
|
AТ2
|
5
|
0,33333
|
0
|
1
|
-0,33333
|
0,66667
|
|
2
|
AТ1
|
4
|
1,33333
|
1
|
0
|
0,66667
|
-0,33333
|
|
k
|
7
|
0
|
0
|
1
|
2
|
|
|
Таким чином, на даному кроці симплекс-метода всі значення i ? 0, отже ми отримали таке рушення задачі: Y = (1,33333; 0,33333; 0; 0;) ? 0 з цільовою функцією
Zmіn = 4* 1,33333+ 5* 0,33333 = 7.
Безпосередня підстановка цього рішення у вихідну систему підтверджує його правильність:
2*1,33333 + 0,33333 + 0 = 3,
1,33333 + 2*0,33333 + 0 = 2.
Як бачимо, дійсно, значення цільових функцій прямої Z і двоїстої Z задач в оптимальній точці співпадають. Крім того, розвязок двоїстої до даної - прямої задачі (див. п. 4.1) - можна знайти за останньою симплексною таблицею 6: останні m компонентів вектора симплекс-різниць -- 3 ? х1 = 1 і 4 ? х2 = 2 -- є оптимальним рішенням двоїстої (вихідної) задачі. Те саме можна сказати про рішення прямої задачі: оптимальні розвязки двоїстої (спряженої) задачі виявилися в останніх m компонентах вектора в таблиці3.
Економічна інтерпретація отриманого розвязку спряженої задачі полягає в тому, що в цій задачі коефіцієнти B = (b1, b2) цільової функції виручки Z = BY (в грн) мають розмірність обємів виробництва продукції типів І та ІІ, а змінні Y = (у1, у2) -- розмірність вартості (в грн) одиниць цих продуктів. Отже, тепер ми знаємо, як зміна вартості одиниці того чи іншого продукту вплине на виручку підприємства.
В прямій задачі -- все навпаки: коефіцієнти С = (с1, с2) цільової функції виручки Z = СХ (в грн) мають розмірність вартості (в грн) одиниць продукції типів І та ІІ, а змінні Х = (у1, у2) -- розмірність обємів виробництва цих продуктів. Отже, за розвязком прямої задачі оптимізації ми знаємо, як зміна обєму виробництва того чи іншого продукту вплине на виручку підприємства.
|