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

Бурачек В.Р.

математичнЕ програмування

(конспект лекцій)

Чернівці

2005

Лекція 1. Предмет і застосування математичного

програмування в економіці

Предмет і завдання курсу. Зміст математичного програмування складають теорія і методи розв’язування задач про знаходження екстремумів функцій на множинах n-вимірного евклідового простору Rn. Математичне програмування є одним з розділів науки про дослідження операцій.

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

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

На сучасному етапі для промислового підприємства з його багатосерійним і багато-номенклатурним виробництвом об’єм вихідної інформації настільки великий, що його обробка з метою прийняття певного рішення є неможливою без застосування сучасних ПЕОМ. Ще більші труднощі виникають зв’язку із задачею про прийняття найкращого (оптимального) рішення.

У дослідженні операцій прийняття рішення є складним процесом, в якому можна виділити такі основні етапи:

І етап. Побудова якісної моделі проблеми, що розглядається, тобто виділення факторів, що є найважливішими, і встановлення закономірностей, яким вони підпорядковуються.

ІІ етап. Побудова математичної моделі проблеми, що розглядається, тобто запис якісної моделі математичними термінами.

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

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

Отже, в результаті перших двох етапів формулюється відповідна математична задача. Тому другий етап уже вимагає залучення математичних знань.

Ш етап. Дослідження впливу змінних на значення цільової функції побудованої математичної моделі.

Цей етап передбачає володіння математичним апаратом для розв’язування математичних задач, що виникають на 2-му етапі процесу прийняття рішення.

Широкий клас задач управління складають екстремальні задачі, в математичних моделях яких умови на змінні задаються рівняннями й нерівностями. Такі задачі досить часто зустрічаються на практиці, наприклад, при вирішенні проблем розподілу ресурсів, планування виробництва, керування різноманітними виробничими та технологічними процесами, організації роботи транспорту та ін. Теорія й методи розв’язування цих задач якраз і складають зміст математичного програмування.

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

IV етап. Співставлення результатів обчислень, отриманих на 3-му етапі, зі змодельованим об’єктом, тобто експертна перевірка результатів (критерій практики).

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

Тут можливі два наслідки.

1-й наслідок. Якщо результати співставлення є незадовільними (звична ситуація на початковій стадії моделювання), то переходять до другого циклу процесу: уточнюється вхідна інформація про змодельований об’єкт і при необхідності уточнюється постановка задачі (1-й етап), уточнюється чи будується заново математична модель (2-й етап), розв’язується відповідна математична задача (3-й етап) і, нарешті, знову проводиться співставлення (4-й етап).

2-й наслідок. Якщо результати співставлення задовільні, то модель приймається. Коли мова йде про неодноразове використання на практиці результатів обчислень, то виникає задача підготовки моделі до експлуатації. Наприклад, метою моделювання є створення календарних планів виробничої діяльності підприємства. Тоді експлуатація моделі включає збирання й обробку інформації, введення обробленої інформації в ЕОМ, розрахунки на основі розроблених програм календарних планів і, нарешті, видавання результатів обчислень (в зручному для користувача вигляді) для їх, використання у сфері виробничої діяльності.

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

До другого напрямку – так званого стохастичного програмування – належать задачі, в яких вихідна інформація містить елементи невизначеності, або задачі, в яких деякі параметри носять випадковий характер з певними ймовірнісними характеристиками. Так, наприклад, планування виробничої діяльності дуже часто відбувається в умовах відсутності повної інформації про реальну ситуацію, в якій буде виконуватись план. Або, скажімо, коли екстремальна задача моделює роботу автоматичних пристроїв, що супроводжується випадковими завадами. Відзначимо, що одна з основних трудностей стохастичного програмування полягає в самій постановці задачі, головним чином, через складність аналізу вихідної інформації.

Традиційно в математичному програмуванні виділяють такі розділи:

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

Нелінійне програмування – цільова функція і (або) обмеження містять елементи нелінійності. Оскільки випадків нелінійності є надзвичайно велика кількість (якщо не безмежна!), то встановити якісь універсальні закономірності розв’язування таких задач практично неможливо. У таких ситуаціях використовують методику приведення нелінійних задач до найпростіших випадків, зокрема, задач:

а) опуклого програмування, коли опуклою є цільова функція (при розгляді задачі її мінімізації) і опукла множина, на якій розв’язується задача;

б) квадратичного програмування, коли цільова функція задачі квадратична, а обмеження є лінійними рівняннями чи нерівностями.

Цілочислове програмування – на змінні накладаються умови цілочисельності всіх чи кількох елементів розв’язку.

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

Дійсно, нехай необхідно дослідити екстремум лінійну функцію при лінійних обмеженнях

, (1.1.1)

Оскільки Z – лінійна функція, то . Але ж усі коефіцієнти лінійної функції не можуть бути рівними нулю, отже, всередині області, утвореної системою обмежень, екстремальні точки не існують. Вони можуть бути на межі області, але дослідити точки на межі неможливо, оскільки частинні похідні є константами.

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

Задача використання сировини. Для виготовлення двох видів продукції Р1 і Р2 використовують три типи сировини: S1, S2 і S3. У табл. 1.1 наведені запаси сировини, величини затрат сировини на виготовлення одиниці продукції, а також величина прибутку від реалізації одиниці продукції.

Таблиця 1.1.

Тип

сировини

Запас

сировини

Кількість сировини на виробництво одиниці різної продукції

Р1

Р2

S1

20

2

5

S2

40

8

5

S3

30

5

6

Прибуток від реалізації одиниці продукції

50

40

Вимагається скласти такий план випуску продукції, який дозволить отримати максимальний прибуток від її реалізації.

Позначимо через х1 кількість одиниць продукції Р1, а через х2 – кількість одиниць продукції Р2. Тоді, враховуючи дані таблиці 1.1, отримаємо систему обмежень

(1.1.2)

яка показує, що кількість сировини, яка витрачатиметься на виготовлення продукції, не може перевищувати її запасів. Якщо продукцію Р1 не доцільно випускати, то х1 = 0; в іншому випадку х1 > 0. Те ж саме стосується й х2. Отже, на невідомі х1 і х2 має бути накладене обмеження не-від’ємності: х1  0; х2  0.

Кінцеву мету задачі – отримання максимального прибутку від реалізації продукції – виразимо як функцію двох змінних х1 і х2:

(у.г.о.)1. (1.1.3)

Якщо умовами задачі не обумовлена неподільність одиниці продукції, тобто х1 і х2 можуть бути дробовими числами, то задача може мати нескінчену кількість варіантів.

Отже, необхідно знайти такі не-від’ємні значення х1 і х2, при яких функція Z досягає максимуму, тобто знайти максимальне значення лінійної функції при обмеженнях

. (1.1.4)

Побудована лінійна функція і є цільовою функцією, яка разом з системою обмежень утворює математичну модель економічної задачі.

Задачу використання сировини можна легко узагальнити, якщо при випуску n видів продукції використовують m типів сировини. Позначимо через Sі (і = 1, 2,…m) типи сировини; bi – запаси сировини і-того типу; Рj (j = 1, 2,…n) – види продукції; аij – кількість одиниць і-тої сировини, що йде на виготовлення j-того виду продукції; Сj – величину прибутку від реалізації j-того виду продукції. Умови задачі занесемо в таблицю 1.2.

Таблиця 1.2.

Типи сировини

Кількість одиниць і-тої сировини

для виготовлення j-тої продукції

Запаси

сировини

Р1

Р2

Рn

S1

S2

Sm

a11

a21

am1

a12

a22

am2

a1n

a2n

amn

b1

b2

bm

Прибуток

С1

С2

Cn

Математична модель задачі буде мати вигляд:

, (1.1.5)

(1.1.6)

Задача складання раціону. При відгодівлі кожна тварина щоденно повинна отримати не менше 9 од. поживної речовини S1, не менше 8 од. речовини S2 і не менше 12 од. речовини S3. Для складання раціону використовують два види кормів. Вміст кількості одиниць поживних речовин у 1 кг кожного виду кормів і вартість 1 кг кормів наведені у таблиці 1.3.

Таблиця 1.3.

Поживні речовини

Кількість одиниць поживних речовин

в 1 кг кормів різного виду

І

ІІ

S1

S2

S3

3

1

1

1

2

6

Вартість 1 кг, у.г.о.

4

6

Необхідно скласти денний раціон необхідної поживності, причому затрати на нього були мінімальними.

Для складання математичної моделі позначимо через х1 та х2 відповідно кількість кілограмів кормів І і ІІ в денному раціоні. Беручи до уваги табл.1.3 і умову, що денний раціон задовольняє необхідній поживності лише у випадку, коли кількість одиниць поживних речовин не менша від передбаченої, отримаємо систему обмежень:

(1.1.7)

Повинна також виконуватись умова не-від’ємності змінних:

. (1.1.8)

Мета задачі – добитись мінімальних витрат на денний раціон, тому загальну вартість раціону можна виразити у вигляді лінійної функції .

З множини можливих значень х1 і х2 потрібно вибрати такі, при яких функція Z з обмеженнями (1.1.7) і (1.1.8) матиме мінімальне значення.

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

Знайти мінімальне значення лінійної функції

при обмеженнях

(1.1.9)

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

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

Задача про оптимальне завантаження обладнання. Нехай підприємству задано план (N1, N2, …, Nn) з випуску продукції Р1, … Рn протягом деякого часу Т. Продукцію виготовляють за допомогою m типів взаємозамінного обладнання (устаткування) В1, …, Bm з різними потужностями. Задаються такі величини:

aij – норми часу на обробку одиниці продукції і-того виду та j-тому устаткуванні;

Аj – фонд часу j-того типу устаткування;

Ni – план випуску продукції і-того виду;

Сij – собівартість обробки і-того виду продукції на j-тому устаткуванні.

Необхідно спланувати випуск продукції Рj, щоб її вартість була найменшою, а план випуску був виконаний.

Для побудови математичної моделі задачі позначимо через хіj кількість продукції і-того виду, яка обробляється на j-тому устаткуванні. Фактичні витрати часу на обробку всієї продукції не можуть перевищувати відведених фондів, тому

. (1.1.10)

Оскільки перед нами стоїть умова виконання плану, то

. (1.1.11)

Загальна вартість випущеної продукції визначатиметься за формулою

. (1.1.12)

Величина Z повинна бути мінімальною. Отже, остаточну модель задачі формулюємо так: знайти найменше значення функції (1.1.12) з врахуванням обмежень (1.1.10)-(1.1.11), а також умови

.

Характер моделі може змінюватися залежно від постановки задачі. Наприклад, якщо припустити, що план з випуску продукції повинен перевиконуватись, то обмеження (1.1.11) запишеться так:

. (1.1.13)

Якщо задаються певні пропорції між видами продукції в кінцевому валовому продукті й необхідно випустити максимальний об’єм продукції Y, то обмеження (1.1.11) і цільова функція (1.1.12) набувають вигляду

(1.1.14)

де kі – частка і-того виду продукції в загальному об’ємі Y. Можливі також інші варіанти.

Розглянемо конкретну задачу.

Цех випускає вироби 2-х видів: вали і втулки. На виробництво одного вала робітник витрачає 3 год., однієї втулки – 2 год. Від реалізації одного вала підприємство отримує прибуток 800 тис. у.г.о., а від реалізації однієї втулки – 600 тис. у.г.о. Цех повинен випустити не менше 100 валів і 200 втулок. Скільки валів і втулок треба випустити, щоб отримати найбільший прибуток, якщо фонд робочого часу цеху становить 900 людино-годин?

Складаємо математичну модель. Для цього вводимо позначення:

х1 – кількість валів, що буде випущено;

х2 – кількість втулок, що буде випущено.

.

Розв’язок: ,

,

,

,

, .

Якщо, наприклад, х2 = 300, то х1 = 100. Тоді Z = 26.107 (у.г.о.).

Задача про раціональний розкрій матеріалів. Зміст задачі такий. Значна частина матеріалів надходить на підприємство у вигляді одиниць стандартних розмірів. Для оптимального використання їх доводиться розрізати на частини (заготовки) необхідної величини і форми. Виникає проблеми мінімізації відходів матеріалів.

Запишемо математичну постановку задачі. Позначимо через m кількість різних заготовок; Ві – план випуску заготовок і-того виду; n – кількість способів розкроювання стандартного матеріалу; bij – число заготовок і-того виду; отриманих за допомогою j-того способу розкрою; Сj – величину відходів при j-тому способі розкрою.

За невідому хj приймається величина вихідного матеріалу, яку треба розкроїти j-тим способом, за Z – загальна кількість відходів. Кількість заготовок і-того виду запишеться так:

. (1.1.15)

Математична модель задачі матиме вигляд

. (1.1.16)

(1.1.17)

Якщо, наприклад, поставити задачу про отримання заданої кількості заготовок з найменшої кількості вихідного матеріалу, то цільова функція матиме вигляд:

. (1.1.18)

Тема 1.2. Загальна задача лінійного програмування

Форма запису задачі. Як вже було зазначено, задачі лінійного програмування можуть мати досить різноманітний економічний зміст. Залежно від цього вигляд математичних моделей таких задач різний. Незважаючи на це, можна сформулювати так звану загальну задачу лінійного програмування. Це формулювання звучить так:

Нехай задана лінійна функція

(1.2.1)

та система лінійних обмежень

(1.2.2)

(1.2.3)

де aij, bi та Cjзадані постійні величини. Необхідно знайти такі не-від’ємні значення xj, які задовольняють систему обмежень (1.2.2) і надають лінійній функції (1.2.1) мінімального значення.

Загальна задача може бути записана у одному з кількох загальноприйнятих виглядів.

Векторний вигляд запису:

Мінімізувати лінійну функцію при обмеженнях

, (1.2.4)

де ; ; – скалярний добуток, а вектори та складаються відповідно з коефіцієнтів при невідомих та вільних членів:

, , … , .

Матричний вигляд запису:

Мінімізувати лінійну функцію при обмеженнях , де – матриця-рядок; – матриця системи;

та – матриці-стовпчики.

Запис за допомогою знаків суми:

Мінімізувати лінійну функцію при обмеженнях , ; .

Наведемо кілька означень.

Означення 1.

Планом або допустимим розв’язком задачі лінійного програмування називається вектор , який задовольняє умови (1.2.2)–(1.2.3).

Означення 2.

План називається опорним, якщо вектори , що входять до розкладу (1.2.4) з додатними коефіцієнтами хі, є лінійно незалежними.

Означення 3.

Опорний план називається невиродженим, якщо він містить m додатних компонентів, у зворотному випадку опорний план називається виродженим.

Означення 4.

Оптимальним планом або оптимальним розв’язком задачі лінійного програмування називається план, що надає цільовій функції найменшого (найбільшого) значення.

Геометрична інтерпретація задачі лінійного програмування. Розглянемо задачу лінійного програмування, система обмежень якої задана у вигляді нерівностей.

Знайти мінімальне значення лінійної функції

(1.2.5)

при обмеженнях

(1.2.6)

(1.2.7)

Сукупність чисел х1, х2, … хn , які задовольняють розв’язкам (1.2.6)–(1.2.7), називається розв’язком задачі. Якщо система нерівностей (1.2.6) при умові (1.2.7) має хоча б один розв’язок, то вона називається сумісною, а якщо ні – несумісною.

Розглянемо на площині х1Ох2 сумісну систему лінійних нерівностей

(1.2.8)

Кожна нерівність цієї системи геометрично визначає півплощину з граничною прямою . Умови не-від’ємності визначають півплощини відповідно з граничними прямими х1 = 0 та х2 = 0. Система сумісна, тому півплощини, як опуклі множини, перетинаючись, утворюють спільну частину, яка є опуклою множиною і є сукупністю точок, координати кожної з яких є розв’язком даної системи (рис.1.1).

Рис.1.1.

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

Якщо в системі обмежень (1.2.6)–(1.2.7) прийняти n = 3, то кожна нерівність геометрично буде півпростором тривимірного простору з граничною площиною та умовою не-від’ємності – півпросторами з граничними площинами хj = 0 (j = 1, 2, 3). Якщо система сумісна, то ці півпростори утворюють в просторі спільну частину, яка називається многогранником розв’язків. Він може бути точкою, відрізком, променем, многокутником, многогранником або багатогранною необмеженою областю.

При n > 3 до всіх об’єктів застосовують додаток “гіпер” (гіперпростір, гіперплощина і т.д.)

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

Теорема 1. Многокутник розв’язків завжди є опуклою фігурою.

Теорема 2. Оптимальне значення задачі лінійного програмування досягається у вершині многокутника розв’язків.

Задачу лінійного програмування можна інтерпретувати так.

У многокутнику розв’язків потрібно знайти таку вершину, де функція Z набуває найменшого (найбільшого) значення.

На основі геометричної інтерпретації задач лінійного програмування створений графічний метод відшукання оптимальних значень функції. Використовують його для обмеженого класу задач з двома змінними, оскільки для більшої кількості змінних побудувати наочний малюнок складно (при n = 3) або просто неможливо (при n  4). Розв’язок шукають у такій послідовності.

1. Будують многокутник розв’язків. Він утворюється при перетині окремих півплощин розв’язків. Обмеження хі  0 завжди дозволяють розташувати многокутник у першому квадранті системи координат.

2. Знаходять оптимальну точку. Згідно теореми 2, вона буде розташована у вершині многокутника розв’язків. Для визначення оптимальної точки використовують вектор нормалі

(1.2.9)

прямої

. (1.2.10)

Іноді вектор (1.2.9) ще називають вектором напрямків, оскільки він є вектор-градієнтом функції Z і вказує напрям зростання функції. Якщо замість Z(х) поставити Z(х) = С, то ми отримаємо лінію, яку називають лінією рівня. Всі лінії рівня паралельні між собою та перпендикулярні до вектора нормалі:

, (1.2.11)

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

Лінії рівня, до проходять через оптимальні вершини многокутника розв’язків, називають оптимальними (опорними).

За допомогою вектора можна на одному малюнку одночасно знайти максимум і мінімум, тобто розв’язати одночасно дві екстремальні задачі при одній і тій же системі обмежень.

3. Обчислюють оптимальні значення. Для цього знаходять координати вершин min i max як спільний розв’язок рівнянь відповідних граничних прямих, що перетинаються в оптимальних вершинах. Знайдені координати підставляють у вираз для цільової функції і обчислюють Zmin i (або) Zmax.

Проаналізувавши метод графічного розв’язування задачі лінійного програмування, доцільно зробити деякі загальні висновки стосовно властивостей її розв’язків, які зручно інтерпретувати геометрично.

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

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

 Задача лінійного програмування може не мати жодного розв’язку. Така ситуація реалізується за умов, коли:

А) область допустимих розв’язків є порожньою множиною, тобто обмеження на допустимі значення змінних сформульовані так, що множина значень змінних, які б задовольняли всім обмеженням, відсутня;

Б) цільова функція не обмежена в області допустимих розв’язків.

Симплексний метод розв’язання задач лінійного програмування. При постановці задач лінійного програмування можливі різні випадки: цільова функція в одних задачах повинна бути максимізована, в інших – мінімізована, обмеження на змінні можуть бути задані рівняннями чи нерівностями. Крім цього, в деяких задачах умова не-від’ємності поширюється не на всі змінні. Важливо лише, що у всіх випадках розбіжності мають формальний характер. Зокрема, з формальної точки зору, немає необхідності розрізняти задачі максимізації та мінімізації цільової функції Z, оскільки одна задача приводиться до іншої заміною знаку Z.

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

Стандартна (симетрична) задача має вигляд:

, (1.2.12)

(1.2.13)

(1.2.14)

Канонічною задачею називається задача, де всі змінні не-від’ємні і обмеження мають форму рівнянь:

. (1.2.15)

У канонічній задачі кількість невідомих завжди більша від числа рівнянь (n > m). Дійсно, якщо число невідомих рівне числу рівнянь, і рівняння лінійно незалежні, то система має єдиний розв’язок, і задача оптимізації не виникає. Якщо ж рівнянь більше, ніж змінних, то вони або лінійно залежні, і тоді частину з них можна відкинути, або є суперечливими, і тоді задача не має розв’язків.

Частковим випадком канонічної задачі є задача в базисній формі, в якій коефіцієнти вектора обмежень не-від’ємні (bі  0, і = 1, … m), і у кожному рівнянні є змінна з коефіцієнтом 1, яка не входить у жодне з решти рівнянь. Змінна з такою властивістю називається базисною.

Загальною задачею лінійного програмування називається задача, в якій є обмеження як і вигляді рівнянь, так і у вигляді нерівностей. Крім цього, вимога не-від’ємності може стосуватись не всіх змінних.

Розглянемо канонічну задачу

, (1.2.16)

(1.2.17)

, (1.2.18)

де система обмежень записана у вигляді векторного рівняння (1.2.17). Із запису видно, що вектор , xj  0, j = 1, … n є планом задачі (1.2.17)–(1.2.18) тоді й лише тоді, коли вектор виражається як не-від’ємна лінійна комбінація стовпчиків матриці А, де за коефіцієнти беруть координати вектора .

Отже, план задачі (1.2.17)–(1.2.18) є опорним, якщо система векторів-стовпчиків матриці А, які відповідають додатнім координатам хj, лінійно незалежна. Нагадаємо, що число додатних координат опорного плану не може перевищувати m.

Базисом опорного плану називається система з m лінійно незалежних векторів-стовпчиків матриці А, які містять всі вектори, що відповідають додатнім координатам опорного плану.

Основним методом розв’язування задач лінійного програмування на сьогоднішній день є симплекс-метод (симплексний метод, “метод послідовного покращення плану”), розроблений американським математиком Д.Данціґом у 1949 році для задач у канонічній формі запису:

, (1.2.19)

де А – матриця умов задачі розміром  n, ранг якої будемо вважати рівним (m + n – 1).

Оскільки в канонічних задачах обмеження задають системою лінійних алгебраїчних рівнянь, перетворення яких є суттєвим елементом симплекс-методу, згадаємо спочатку деякі дані про розв’язування алгебраїчних рівнянь.

Розглянемо дві системи:

(1.2.20)

(1.2.21)

У системі (1.2.21) кожне з рівнянь містить змінну, яка входить у нього з коефіцієнтом 1 і виключена з решти рівнянь (входить з коефіцієнтом 0). Такі змінні називаються базисними, а система вигляду (1.2.21) – системою в базисній формі. Так, базисними змінними системи (1.2.21) є змінні х1, х2, х3. Вектори-стовпчики

які відповідають цим змінним, складають одиничний базис системи (1.2.21). Базис системи (1.2.20) також може бути утворений з векторів-стовпчиків при змінних х1, х2, х3. Для цього досить переконатись, що визначник 3-го порядку, складений з компонентів векторів А1, А2 і А3 системи (1.2.20), відмінний від нуля:

.

Перевага системи (1.2.21) в тому, що її загальний розв’язок знаходиться безпосередньо:

.

Тут базисні змінні х1, х2, х3 виражені через вільну (незалежну) змінну х4. Прирівнявши її до нуля, отримаємо частковий розв’язок х1 = 1; х2 = 7; х3 = 3. Частковий розв’язок, в якому вільні невідомі дорівнюють нулю, називається базисним.

З теорії матриць відомо, що одинична матриця є результатом множення квадратної матриці на обернену до неї. Звідси випливає така схема розв’язування системи лінійних рівнянь . Розбиваємо матрицю А на дві підматриці B i R так, щоб В була неособливою квадратною матрицею розміром  m, а R – матрицею розміром  (n – m). Оскільки матриця В неособлива, то її вектори-стовпчики утворюють базис системи векторів-стовпчиків матриці А. Тому назвемо матрицю В базисною. Без шкоди для узагальнення будемо вважати, що матриця В складена з перших m стовпчиків матриці А, тобто А = (В,R), оскільки цього завжди можна досягти переставлянням стовпчиків. Аналогічно до матриці проведемо розбиття вектора :

,

де – вектор базисних змінних, а – вектор небазисних змінних. В результаті таких перетворень система може бути записана у вигляді

, (1.2.22)

а її загальний розв’язок – у вигляді , де – довільний (n – m)-вимірний вектор, а можна виразити як

. (1.2.23)

Базисний розв’язок , отриманий при , є єдиним, оскільки В – неособлива матриця.

Якщо розглядається система задачі (1.2.19), то базисний розв’язок і відповідний до нього базис В називаються допустимими при умові . Поняття базисного допустимого розв’язку співпадає з уведеним раніше поняттям опорного плану.

Метод виключень Жордана-Гаусса. З точки зору обчислень схема розв’язку, заснована на перетворенні базисної матриці, може бути реалізована різними способами.

Метод виключень Жордана-Гаусса дозволяє розв’язати систему перетворенням її в еквівалентну систему з одиничним базисом або встановити її несумісність. У процесі перетворень при необхідності може бути побудована також обернена матриця. На кожному кроці виключень одна зі змінних стає базисною: виключається зі всіх рівнянь, крім одного, де залишається з коефіцієнтом 1.

Розглянемо процес детальніше. Нехай змінна xs входить у рівняння r з коефіцієнтом ars  0. Для того, щоб вона стала базисною, розділимо r-те рівняння на ars (отримавши xs з коефіцієнтом 1) і результат віднімемо від кожного рівняння i = 1…m,  r, що залишилось, домножуючи його кожен раз на відповідний коефіцієнт ais (отримуючи xs з коефіцієнтом 0). Сукупність операцій, що складають крок жорданових виключень, називається жордановим перетворенням, коефіцієнт arsключовим елементом, рядок r і стовпчик s – відповідно, ключовим рядком і ключовим стовпчиком. Формули для розрахунку коефіцієнтів , bj нової системи, отриманої в результаті одного кроку жорданових виключень з ключовим елементом ars, мають вигляд

(1.2.24)

(1.2.25)

Обчислення за формулами (1.2.25) можна описати за допомогою так званого “правила прямокутника” (рис.1.2): щоб знайти перетворений елемент , треба від елемента aij відняти добуток коефіцієнтів, що стоять навпроти нього у ключових рядку і стовпчику, поділений на ключовий елемент, розташований по діагоналі від елемента aij. При цьому елементи ключового стовпчика набувають значення для всіх і = 1…m, i  r, .

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

Рис.1.2.

Для перетворення системи в базисну потрібно зробити не більше m кроків жорданових виключень. На першому кроці за ключовий вибирають довільний елемент ars  0. На другому кроці ключовий елемент вибирають в будь-якому рівнянні (крім r-того) серед ненульових елементів системи, отриманої після першого кроку і т.д. Якщо в процесі виключень з’являється рівняння, в якому ліва частина дорівнює нулю, а вільний член відмінний від нуля – це ознака несумісності системи. Якщо ліва й права частини якогось рівняння перетворюються в нуль – отже, воно є лінійною комбінацією решти рівнянь, і його треба виключити з розгляду. Таким чином, у процесі жорданових виключень або встановлюється несумісність системи рівнянь, або ж система приводиться до еквівалентної базисної форми

, (1.2.26)

звідки розв’язок отримують безпосередньо. Формули жорданових перетворень застосовуються однаково як у випадку співвідношення m = n, так і для m < n.

Обчислювальна схема симплекс-методу для задачі в базисній формі. Задачею в базисній формі називається задача лінійного програмування

.

з m рівняннями, n невідомими і не-від’ємним вектором , розв’язана відносно m змінних, тобто така, що має одиничний базис. Умови такої задачі зручно записати у вигляді так званої симплекс-таблиці (табл.1.4).

Таблиця 1.4

С1

С2

Сn

x1

x2

xm

b1

b2

bm

a11

a21

am1

a12

a22

am2

a1n

a2n

amn

Z1

1

2

n

Над позначеннями векторів проставлені коефіцієнти цільової функції. В процесі розв’язування в стовпчику знаходиться список базисних змінних, у стовпчику – значення базисних змінних, у стовпчику – коефіцієнти аij матриці умов, в оціночному рядку коефіцієнти цільової функції Z1 і приведені коефіцієнти j = Zj – Cj, (j = 1…n) при невідомих лінійної форми

, (1.2.27)

, j = 1…n. (1.2.28)

Якщо цільова функція виражена лише вільними змінними, тобто приведена до одиничного базису, і, крім того, її коефіцієнти при базисних змінних дорівнюють нулю, то елементи -рядка визначаються особливо просто. З наведених формул (1.2.26) і (1.2.27) видно, що вони набувають значень Z1 = 0, j = 0 для базисних змінних і j = – Сj для вільних змінних.

Опишемо алгоритм симплекс-методу.

 Переглядаємо знаки всіх коефіцієнтів j оціночного рядка. Якщо всі j  0, то задача розв’язана: допустимий базисний розв’язок є оптимальним, Zmax = Z1. Якщо не всі j  0, переходимо до кроку 2.

 Серед значень j < 0 знаходимо найбільше за абсолютною величиною, і відповідний стовпчик вибираємо за ключовий. Нехай це буде стовпчик з номером s. Якщо у ключовому стовпчику елементи ais  0 для всіх і = 1…m, маємо випадок 2: цільова функція не обмежена, Zmax = . Розв’язування закінчене. Якщо ж не всі ais  0, переходимо до кроку 3.

 Для кожного елемента ais > 0 ключового стовпчика знаходимо відношення (воно називається симплексним), вибираємо найменше і називаємо рядок, де воно досягається, ключовим. Нехай це буде рядок з номером r. Елемент ars на перетині ключового стовпчика і ключового рядка буде ключовим елементом.

 Виконуємо жорданове перетворення таблиці з ключовим елементом ars за формулами (1.2.25), а також

, (1.2.29)

, (1.2.30)

і переходимо до кроку 1.

Послідовність операцій 1-4 називається ітераціями симплекс-таблиці.

Спробуємо розв’язати симплекс-методом конкретну задачу лінійного програмування:

Знайти при

І етап. Приведення задачі лінійного програмування до канонічного вигляду. Симплекс-метод є методом цілеспрямованого перебору вершин многокутника розв’язків у напрямку зростання цільової функції.

Для перетворення задачі мінімізації в задачу максимізації достатньо цільову функцію помножити на (–1) і перепозначити Z1 = –Z. Для перетворення обмежень-нерівностей у рівняння до кожної нерівності введемо по одній балансовій не-від’ємній змінній. Задача набуває вигляду:

Знайти

(1.2.31)

при

(1.2.32)

(1.2.33)

ІІ етап. Побудова початкового опорного плану. Виділимо в системі рівнянь (1.2.32) одиничний базис. У нашій задачі для цього досить помножити друге рівняння на (–1):

(1.2.34)

Коефіцієнти при х4, х5, х6 утворюють одиничний базис:

.

В цьому випадку змінні х4, х5, х6 можна вважати базисними, а змінні х1, х2, х3 – вільними змінними системи (1.2.34). Тоді розв’язок системи називається базисним.

Згадаємо означення: базисний розв’язок системи обмежень, усі компоненти якого не-від’ємні, називається опорним розв’язком задачі лінійного програмування.

У нашому випадку базисний розв’язок є одночасно і опорним. Такий результат отриманий тому, що праві частини (вільні члени) системи (1.2.34) виявилися не-від’ємними.

Отже, початковий опорний розв’язок побудовано.

ІІІ етап. Побудова початкової симплексної таблиці. В початкову симплекс-таблицю заносять систему рівнянь (1.2.34), приведену до одиничного базису (х4, х5, х6), та нульовий (оціночний) рядок, утворений з формули (1.2.31) для цільової функції, яку записують у вигляді рівняння

. (1.2.35)

Заповнимо початкову симплекс-таблицю:

Базисні змінні

Вільні члени

х1

х2

х3

х4

х5

х6

Контроль

х4

х5

х6

1

2

5

2

-4

3

-1

2

0

1

-1

1

1

0

0

0

1

0

0

0

1

4

0

10

Z1

0

1

-1

-3

0

0

0

-3

Останній, контрольний стовпчик складається з суми елементів кожного з рядків і використовується для контролю обчислень.

Стовпчик вільних членів симплекс-таблиці складається зі значень базисних змінних у початковому опорному розв’язку , а вільний член нульового рядка дорівнює значенню цільової функції Z на цьому розв’язку .

IV етап. Знаходження оптимального розв’язку.

  1. Переглядаємо оцінки і отриманої симплекс-таблиці і шукаємо серед них найбільшу від’ємну. У нашій таблиці це стовпчик з оцінкою 3 = –3.

  2. Ключовим рядком нашої таблиці є рядок базисної змінної х4, оскільки симплексне відношення цього рядка – найменше. Це й буде ключовий рядок.

  3. На перетині ключового рядка і ключового стовпчика вибираємо ключовий елемент – це елемент 1.

  4. Будуємо наступну симплекс-таблицю за правилами перетворень Жордана-Гаусса:

а) всі елементи ключового стовпчика, крім самого ключового елемента, заміняємо нулями;

б) всі елементи ключового рядка ділимо на ключовий елемент (на місці ключового елемента отримуючи 1);

в) решта елементів таблиці знаходимо за правилом прямокутника;

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

У нашій задачі початкова симплекс-таблиця перетворюється в симплекс-таблицю 1.

Симплекс-таблиця 1

Базисні змінні

Вільні члени

х1

х2

х3

х4

Х5

х6

Контроль

х3

х5

х6

1

3

4

2

-2

1

-1

1

1

1

0

0

1

1

-1

0

1

0

0

0

1

4

4

6

Z1

3

7

-4

0

3

0

0

9

Ця таблиця задає опорний розв’язок і значення .

  1. Оскільки в нульовому рядку є від’ємна оцінка 2 = -4, то до симплекс-таблиці 1 застосовуємо знову алгоритм знаходження оптимального розв’язку і перетворюємо симплекс-таблицю 1 в симплекс-таблицю 2:

Симплекс-таблиця 2

Базисні змінні

Вільні члени

х1

х2

х3

х4

х5

х6

Контроль

х3

х2

х6

4

3

1

0

-2

3

0

1

0

1

0

0

2

1

-2

1

1

-1

0

0

1

8

4

2

Z1

15

-1

0

0

7

4

0

25

Симплекс-таблиця 2 задає опорний розв’язок і . Але розв’язок не оптимальний, оскільки в симплекс-таблиці 2 є від’ємна оцінка 1 = -1. Застосуємо знову алгоритм симплексного методу і побудуємо симплекс-таблицю 3.

Симплекс-таблиця 3

Базисні змінні

Вільні члени

х1

х2

х3

х4

х5

х6

Контроль

х3

х2

х1

4

11/3

1/3

0

0

1

0

1

0

1

0

0

2

-1/3

-2/3

1

1/3

-1/3

0

2/3

1/3

8

16/3

2/3

Z1

46/3

0

0

0

19/3

10/3

1/3

76/3

Третя симплексна таблиця стовпчиком вільних членів задає опорний розв’язок , який є шуканим оптимальним розв’язком, оскільки в нульовому рядку немає від’ємних оцінок, тобто виконується перший пункт алгоритму. При цьому , а .

При переході від однієї симплекс-таблиці до наступної доцільно здійснювати контроль обчислень. Для цього кожного разу обчислюються елементи контрольного стовпчика спочатку за правилом прямокутника, а потім додаванням елементів рядків нової таблиці. Відповідні результати повинні бути однаковими. В цьому й полягає контроль за правильністю обчислень у симплексній таблиці.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]