Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Оптимізаційны методи та моделі.doc
Скачиваний:
5
Добавлен:
01.07.2025
Размер:
5.7 Mб
Скачать

III. Лінійне програмування

3.1. Задачі лінійного програмування

У попередніх розділах ми займалися тільки методологією дослідження операцій — класифікацією завдань, підходами до їх вирішення і т.п., залишаючи осторонь математичний апарат. У цій та наступних розділах ми побіжно розглянемо деякі з математичних методів, які широко застосовуються в дослідженні операцій. У подробиці цих методів не будемо входити; головну увагу звернемо на їх принципові засади.

Вище ми вже згадували про найпростіші задачі, де вибір показника ефективності (цільової функції) W досить явно диктується цільовою спрямованістю операції, а її умови відомі заздалегідь (детермінований випадок). Тоді показник ефективності залежить тільки від двох груп параметрів: заданих умов  і елементів рішення х, тобто

(3. 1)

Нагадаємо, що в числі заданих умов α фігурують і обмеження, які накладаються на елементи рішення. Нехай рішення x являє собою сукупність n елементів рішення х1, х2,..., хn (інакше — n-вимірний вектор):

Потрібно знайти такі значення х1, х2,..., хn, для яких величина W досягає максимуму або мінімуму («екстремум»). Такі завдання — відшукання значень параметрів, що забезпечують екстремум функції при наявності обмежень, накладених на аргументи, носять загальну назву завдань математичного програмування.

Труднощі, що виникають при вирішенні задач математичного програмування, залежать: а) від виду функціональної залежності, що зв’язує W з елементами рішення, б) від «розмірності» завдання, тобто від кількості елементів рішення х1, х2,..., xn, і в) від виду та кількості обмежень, накладених на елементи рішення.

Слово «програмування» запозичене з зарубіжної літератури і просто означає «планування».

Серед задач математичного програмування найпростішими (і краще всього вивченими) є так звані задачи лінійного програмування. Характерно для них те, що: а) показник ефективності (цільова функція) W лінійно залежить від елементів рішення х1, х2,..., хn і б) обмеження, що накладаються на елементи рішення, мають вигляд лінійних рівностей або нерівностей щодо x1, x2,..., xn.

Такі завдання досить часто зустрічаються на практиці, наприклад, при вирішенні проблем, пов’язаних із розподілом ресурсів, плануванням виробництва, організацією роботи транспорту і т.д. Це і природно, тому що в багатьох завданнях практики «витрати» і «доходи» лінійно залежать від кількості закуплених або утилізованих засобів (наприклад, сумарна вартість партії товарів лінійно залежить від кількості закуплених одиниць; оплата перевезень здійснюється пропорційно маси перевезених вантажів і т.д.).

Зрозуміло, не можна вважати, що всі типи залежностей, що зустрічаються на практиці лінійні; можна обмежитися більш скромним твердженням, що лінійні (і близькі до лінійних) залежності зустрічаються часто, а це вже багато означає.

Наведемо кілька прикладів завдань лінійного програмування.

1. Задача про харчовий раціон. Ферма виробляє відгодівлю худоби з комерційною метою. Для простоти припустимо, що є всього чотири види продуктів: П1, П2, П3, П4; вартість одиниці кожного продукту дорівнює відповідно c1, с2, с3, с4. З цих продуктів потрібно скласти харчовий раціон, який повинен містити: білків — не менше b1 одиниць; вуглеводів — не менше b2 одиниць; жирів — не менш b3 одиниць. Для продуктів П1, П2, П3, П4 вміст білків, вуглеводів і жирів (в одиницях на одиницю продукту) відомо і видано в таблиці 7.1, де aij (i = l, 2, 3, 4; j = 1, 2, 3) — якісь певні числа; перший індекс вказує номер продукту, другий — номер елемента (білки, вуглеводи, жири).

Потрібно скласти такий харчовий раціон (тобто призначити кількості продуктів П1, П2, П3, П4, що входять до нього), щоб умови по білкам, вуглеводам і жирам були виконані і при цьому вартість раціону була мінімальна.

Таблиця 3.1

Продукт

Елементи

Продукт

Елементи

білки

вуглеводи

жири

білки

вуглеводи

Жири

П1

П2

а11

а12

а12

а22

а13

а23

П3

П4

а31

а41

а32

а42

а33

а43

Складемо математичну модель (у даному випадку це дуже просто). Позначимо х1, x2, x3, х4 кількості продуктів П1, П2, П3, П4, що входять в раціон. Показник ефективності, який потрібно мінімізувати, — вартість раціону (позначимо її L); вона лінійно залежить від елементів рішення х1, x2, x3, х4:

або, коротше:

(3.2)

Отже, вид цільової функції відомий і вона лінійна. Запишемо тепер у вигляді формул обмежувальні умови по білкам, вуглеводам і жирам. Враховуючи, що в одній одиниці продукту П1 міститься α11 одиниць білка, в х1 одиницях — α11х1 одиниць білка, в х2 одиницях продукту П2 міститься a21x2 одиниць білка і т.д., отримаємо три нерівності:

(3.3)

Ці лінійні нерівності представляють собою обмеження, що накладаються на елементи рішення х1, x2, x3, х4.

Таким чином, поставлена ​​задача зводиться до наступної: знайти такі невід’ємні значення змінних х1, x2, x3, х4, щоб вони задовольняли обмеженням — нерівностям (3.3) і одночасно звертали в мінімум лінійну функцію цих змінних:

Перед нами — типова задача лінійного програмування. Не зупиняючись доки на способах її вирішення, наведемо ще три приклади аналогічних завдань.

2. Задача про планування виробництва. Підприємство виготовляє вироби трьох видів: U1, U2, U3. По кожному виду виробу підприємству заданий план, за яким вона зобов’язана випустити не менш b1 одиниць виробу U1, не менше b2 одиниць виробу U2 і не менш b3 одиниць виробу U3. План може бути перевиконано, але в певних межах; умови попиту обмежують кількості вироблених одиниць кожного типу: не більше відповідно β1, β2, β3 одиниць. На виготовлення виробів йде певна сировина; всього є чотири види сировини: s1, s2, s3, s4, причому запаси обмежені числами γ1, γ2, γ3, γ4 одиниць кожного виду сировини. Тепер треба вказати, яку кількість сировини кожного виду йде на виготовлення кожного виду виробів. Позначимо aij кількість одиниць сировини виду si (i = l, 2, 3, 4), що потрібне на виготовлення однієї одиниці виробу Uj (j = 1, 2, 3). Перший індекс у числа αij — вид виробу другий — вид сировини. Значення αij зведені в таблицю (матрицю) — див таблицю 3.2.

Таблиця 3.2

Сировина

Вироби

Сировина

Вироби

U1

U2

U3

U1

U2

U3

s1

s2

а11

а12

a21

а22

a31

а32

s3

s4

a13

А14

а23

а24

а33

а34

При реалізації один виріб U1 приносить підприємству прибуток з c1, U2 — прибуток с2, U3 — прибуток c3. Потрібно так спланувати виробництво (скільки яких виробів виробляти), щоб план був виконаний або перевиконаний (але за відсутності «затоварення»), а сумарний прибуток направлявся до максимуму.

Запишемо задачу у формі завдання лінійного програмування. Елементами рішення будуть х1, x2, x3, — кількості одиниць виробів U1, U2, U3, які ми виготовимо. Обов’язковість виконання планового завдання запишеться у вигляді трьох обмежень нерівностей:

(3.4)

Відсутність зайвої продукції (затоварювання) дасть нам ще три обмеження нерівності:

(3.5)

Крім того, нам повинно вистачити сировини. Відповідно чотирма видами сировини будемо мати чотири обмеження нерівності:

(3.6)

Прибуток, принесений планом (х1, x2, x3), буде дорівнювати:

. (3.7)

Таким чином, ми знову отримали завдання лінійного програмування: знайти (підібрати) такі невід’ємні значення змінних х1, x2, x3, щоб вони задовольняли нерівності обмеженням (3. 4), (3. 5), (3. 6) і, разом з тим, звертали в максимум лінійну функцію цих змінних:

(3.8)

Задача дуже схожа на попередню, різниця в тому, що нерівностей обмежень тут більше і замість «мінімуму» стоїть «максимум» (а ми вже знаємо, що це несуттєво). У наступній задачі ми вже зустрінемося з обмеженнями іншого виду.

3. Задача про завантаження обладнання. Ткацька фабрика має у своєму розпорядженні два види верстатів, з них Nt верстатів типу 1 і N2 верстатів типу 2. Верстати можуть виробляти три види тканин: Т1, T2. Т3, але з різною продуктивністю. Дані аij продуктивності верстатів дані в таблиці 7. 3 (перший індекс — тип верстата, другий — вид тканини).

Кожен метр тканини виду Т1 приносить фабриці дохід з c1 виду Т2 — дохід с2, T3 — дохід с3.

Фабриці назначений план, згідно з яким вона повинна виробляти на місяць не менше b1 метрів тканини Т1, b2 метрів тканини Т2, b3 метрів тканини Т3; кількість метрів кожного виду тканини не повинно перевищувати відповідно β1, β2, β3 метрів. Крім того, всі без винятку верстати повинні бути завантажені. Потрібно так розподілити завантаження верстатів виробництвом тканин Т1, Т2, T3, щоб сумарний місячний дохід був максимальний.

Таблиця 3.3

Тип станка

Вид тканини

Т1

T2

T3

1

2

a11

a21

a12

a22

a13

a23

На перший (легковажний) погляд поставлена ​​тут задача — рідна сестра попередньої. Рука так і тягнеться позначити х1, x2, x3 кількості тканин Т1, Т2, Т3 в плані і максимізувати сумарний дохід з c1x1 + с2х2 + c3х3. Але не поспішайте і запитайте себе: а де ж тут можливості обладнання? Поміркувавши, ми побачимо, що в цьому завданні елементи рішення — не кількість тканин кожного виду, а кількість верстатів типів 1 і 2, зайнятих виробництвом тканин кожного виду. Тут зручно позначити елементи рішення літерами х з двома індексами (перший — тип верстата, другий — вид тканини). Всього буде шість елементів рішення:

(3.9)

Тут х11 — кількість верстатів типу 1, зайнятих виготовленням тканини Т1, х12 — кількість верстатів типу 1, зайнятих виготовленням тканини Т2, і т.д.

Перед нами — ще одне завдання лінійного програмування. Запишемо спочатку умови обмеження, накладені на елементи рішення xij. Перш за все забезпечимо виконання плану. Це дасть нам три нерівності обмеження:

(3.10)

Після цього обмежимо перевиконання плану; це дасть нам ще три нерівності обмеження:

(3.11)

Тепер запишемо обмеження, пов’язані з наявністю обладнання та його повним завантаженням. Сумарна кількість верстатів типу 1, зайнятих виготовленням всіх тканин, має дорівнювати N1; типу 2 — N2. Звідси ще дві умови — на цей раз рівності:

(3.12)

Тепер запишемо сумарний дохід від виробництва всіх видів тканин. Сумарна кількість метрів тканини Т1, вироблене усіма верстатами, дорівнюватиме a11 x11 + a21 x21 і принесе дохід с1 (a11 х11 + а21х21). Розмірковуючи аналогічно, знайдемо сумарний дохід фабрики за місяць при плані (3. 9):

(3.13)

чи, набагато коротше,

(3.14)

Цю лінійну функцію шести аргументів досліджуємо на максимум:

(3.15)

Перед нами — знову задача лінійного програмування: знайти такі невід’ємні значення змінних х11, х12,..., х23, які, по-перше, задовольняли б обмеження нерівностям (3. 10), (3. 11), по друге — обмеження рівністю (3. 12) і, нарешті, звертали б в максимум лінійну функцію цих змінних (3. 13). У цій задачі лінійного програмування шість обмежень нерівностей та два обмеження рівності.

4. Задача про постачання сировиною. Є три промислових підприємства: П1, П2, П3, вимагають постачання певним видом сировини. Потреби в сировині кожного підприємства рівні відповідно а1, a2, a3 одиниць. Є п’ять сировинних баз, розташованих від підприємств на певних відстанях і пов’язаними з ними шляхами сполучення з різними тарифами. Одиниця сировини, яку підприємство отримує Пi з бази Бj, обходиться підприємству в cij рублів (перший індекс — номер підприємства, другий — номер бази, див. таблицю 3. 4).

Таблиця 3.4

Підприємство

База

Б1

Б2

Б3

Б4

Б5

П1

П2

П3

с11

с21

с31

с12

с22

с32

с13

с23

с33

с14

с24

с34

с15

с25

с35

Можливості постачання сировиною з кожної бази обмежені її виробничою потужністю: бази Б1 Б2, Б3, Б4, Б5 можуть дати не більше b1,b2, b3, b4, b5 одиниць сировини. Потрібно скласти такий план постачання підприємств сировиною (з якою бази, куди і яку кількість сировини везти), щоб потреби підприємств були забезпечені при мінімальних витратах на сировину.

Знову поставимо завдання лінійного програмування. Позначимо xij кількість сировини, одержуване i-м підприємством з j-ї бази. Всього план буде складатися з 15 елементів рішення:

(3.14)

Введемо обмеження по потребах. Вони складаються, з того, що кожне підприємство отримає потрібну йому кількість сировини (рівно стільки, скільки йому потрібно):

(3.15)

Далі напишемо обмеження нерівності, що випливають з виробничих потужностей баз:

(3.16)

Нарешті, запишемо сумарні витрати на сировину, які ми хочемо мінімізувати. З урахуванням даних табл. 3. 4 отримаємо (користуючись знаком подвійної суми):

(3.17)

Знову перед нами задача лінійного програмування: знайти такі невід’ємні значення змінних хij, які задовольняли б обмеження рівностям (3.15), обмеження нерівностям (3.16) і зводили б до мінімуму їх лінійну функцію (3.17). Таким чином, ми розглянули кілька завдань лінійного програмування. Всі вони подібні між собою, різняться тільки тим, що в одних потрібно звести лінійну функцію в максимум, в інших — у мінімум, в одних обмеження — тільки нерівності, в інших — як рівності, так і нерівності. Бувають завдання лінійного програмування, де всі обмеження — рівності. Ці відмінності неістотні, так як від обмежень нерівностей легко переходити до обмеженням рівностям і назад, як буде показано в наступному параграфі.