Реферат: Математичне програмування в економіці
Название: Математичне програмування в економіці Раздел: Рефераты по математике Тип: реферат | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Математичне програмування Тема 1. Предмет, особливості та сфери застосування математичного програмування в економіці. Класифікація задач Математичне програмування – математична дисципліна, яка займається вивченням методів розв’язування, аналізу та використання задач зі знаходження екстремуму функції на множенні допустимих варіантів функції. Математичне програмування використовують при розв’язанні різноманітних практичних задач, у тому числі і економічних. Загалом послідовність використання економіко-математичних моделей така: - формується економічна проблема; - створюється математична модель задачі, у якій логічні зв’язки економічної моделі перетворюються на математичні співвідношення: функції. рівняння, нерівності; - розв’язується математична задача, перевіряється рішення; - перекладається розвиток на економічну мову і аналізується результат. Математичне програмування – це частковий випадок системного аналізу однієї чітко вираженої мети, досягнення якої здійснюється за одним критерієм. У загальному вигляді математична формулювання задачі виглядає таким чином: - необхідно знайти найбільше або найменше значення цільової функції f (x1 , x2 , x3 …, xn ); - якщо треба виконати умови gi (x1 , x2 , x3 …, xn ) £ bi , i = 1,2,3…,m; - де: f, gi – відомі функції, bi - деякі дійсні числа, n > m. Задачу оптимізації з точки зору економіки можна сформулювати таким чином: - знайти такі значення змінних. що надають ефективності діяльності максимальне чи мінімальне значення; - за умов виконання обмежень, які пов’язані зі змінними, , за допомогою котрих, змінних, здійснюється керування діяльністю. Конкретна ціль, поставлена у економічній задачі, пояснюється цільовою функцією (критерієм ефективності), екстремум якої і треба знайти. Обмеження відображають умови, при розв’язанні економічної задачі, наприклад, брак ресурсів, гранична вартість і таке інше. Змінні, з яких будується цільова функція, та на які накладаються обмеження, використовують як “інструмент”, за допомогою якого досягається той чи інший варіант цілі. Як змінні задовольняють усім обмеженням, так отриманий варіант називають припустимим (допустимим). Задача математичного програмування полягає в тому, щоб з усіх допустимих варіантів значень інструментальних змінних (невідомих моделі) знайти такі, при яких функція цілі (критерій оптимальності) досягає екстремума. Розв’язати задачу – це знайти її оптимальне рішення, або з’ясувати його відсутність. Функція цілі (критерій оптимальності) повинна об’єктивно характеризувати суспільно-корисну значущість соціально-економічного явища або процесу. Критерій оптимальності можливо з’ясувати лише з економічної сутності проблеми – задача, яку розв’язує фахівець економіст. Принципово неможливо визначити цільову функцію на етапі розв’язання задачі математиком. такою ж мірою це все стосується також обмежень задачі оптимізації. Класифікація моделей задач математичного програмування залежить від властивостей функції цілі та функцій обмежень. Якщо функція цілі та усі функції обмежень лінійні, така задача математичного програмування має назву задачі лінійного програмування ; якщо ж хоча б одна з функцій нелінійна, така задача має назву задачі нелінійного програмування . Якщо у математичній моделі ураховується поетапно час, така задача має назву задачі динамічного програмування ; у іншому випадку – задачі статичного програмування. В залежності від того, який характер мають вихідні дані моделі – детермінований або стохастичний – задачі мають назву відповідно детермінованого та стохастичного програмування . Серед задач нелінійного програмування особливо досконало досліджені задачі опуклого програмування – задачі знаходження екстремума опуклої функції, заданої на опуклій замкненій множині. У свою чергу, серед задач опуклого програмування найпростіші і найдосконало досліджені задачі квадратичного програмування , у яких функція цілі – квадратична, а обмеження – лінійні. Якщо змінні задачі математичного програмування приймають тільки цілочисельні значення, така задача має назву задачі цілочислового програмування ; у іншому випадку – задачі неперервного програмування. У задачі дробово-лінійного програмування цільова функція являє собою співвідношення двох лінійних функцій, а обмеження – лінійні. Якщо у задачі математичного програмування відсутні усі обмеження. така задача має назву задачі безумовного програмування. У якості прикладів економічних проблем , які доцільно розв’язувати. використовуючи методи та моделі математичного програмування, розглянемо такі: Приклад 1. Задача про планування випуску продукції малого підприємства. Планується виробляти жіночі та чоловічі костюми. На жіночій костюм потрібно 1 м. шерсті, 2 м. шовку та 1 людино-тиждень працевитрат. На чоловічий костюм потрібно 3,5 м. шерсті, 0,5 м. шовку і також 1 людино-тиждень працевитрат. Загалом підприємство має 350 м. шерсті, 240 м. шовку та 150 людино-тижнів працевитрат. За попередньою домовленістю із замовником мають виробити 110 костюмів жіночих та чоловічих загалом. Акціонери, які вклали гроші у підприємство та сировину (тканину), вимагають прибуток не менше, ніж 1400 грн. Замовник купує жіночий костюм на 10 грн. дорожче собівартості, чоловічий – на 20 грн. Потрібно з’ясувати: скільки необхідно виготовити жіночих та чоловічих костюмів, щоб задовольнити усім вимогам та отримати найбільший прибуток. Розв’язок задачі: Позначимо кількість жіночих костюмів, які потрібно виготовити, через х1 ; кількість чоловічих – х2 . Загальний прибуток (критерій оптимізації, мета, ціль) виробництва складає: Z = f ( x ) = 10 x 1 + 20 x 2 ; витрати: шерсті = 1 ´ х1 + 3,5 ´ х2 ; шовку = 2 ´ х1 + 0,5 ´ х2 ; трудомісткості = х1 + х2 ; результати: кількість загальна костюмів х1 + х2 ; прибуток 10 x1 + 20 x2 . Функціональні обмеження задачі мають вигляд: х1 + 3,5 х2 £ 350; 2 х1 + 0.5 х2 £ 240; обмеження ресурсів х1 + х2 £ 150; х1 + х2 ³ 110; обмеження планового завдання 10 х1 + 20 х2 ³ 1400; Нефункціональні обмеження вочевидь складають: х1 ³ 0; х2 ³ 0. Розв’язок задачі математичного програмування у даному прикладі складає: х1 = 70; х2 = 80; f (x)max = 2300 грн. Приклад 2. Задача про постачання вантажів від постачальників до замовників. Від трьох постачальників, розташованих у пунктах А1 , А2 , А3 до чотирьох замовників, розташованих у пунктах В1 , В2 , В3 , В4 , треба перевезти однорідний вантаж. Наявність вантажу по пунктах постачальників: А1 = 50т, А2 = 40 т, А3 = 20т. Потреба у вантажі: В1 = 30т, В2 = 25т, В3 = 35т, В4 = 20т. Відстані між пунктами замовників та постачальників наведені у таблиці. Таблиця
Розв’язок задачі. Позначимо xij – кількість вантажу. який буде перевезено з “i”–ого пункта постачання у “j”–ий пункт замовлення; cij – відстань від “i”-ого постачальника до “j”-ого замовника. Мета: розшукати вартість перевезення вантажів з найменшою витратою транспортного моменту. Z = f (x) = S S Cij ´ XijЗадача збалансована, тобто наявність вантажу дорівнює потреби у вантажу: S Xij = аі , і = 1, 2, 3; - умова вивезення вантажу від кожного з трьох постачальників до 4 замовників;S Xij = в j ; j – 1, 2, 3, 4; - умова отримання кожним замовником необхідної кількості вантажу. Нефункціональні обмеження: хij ³ 0. Розв’язок задачі складає: х11 = 25; х12 = 5; х14 = 20; х13 = 0; х21 = 5; х23 = 35; х22 = 0; х24 = 0; х31 = 20; х32 = 0; х33 = 0; х34 = 0; f (x)min = 190т.км. Приклад 3. Задача про раціональний розкрій. Підприємство одержує прут сталевого прокату довжиною l = 800 см. Треба виготовити деталі трьох (і) різновидів: l1 = 250 см, а1 = 150 штук; l2 = 190 см, а2 = 140 штук; l3 = 100 см, а3 = 48 штук. Скласти раціональний план розкрою вихідного матеріалу (деталей) з найменшими виходами (залишками). Розв’язок задачі. Побудуємо таблицю можливих варіантів розкрою. Таблиця
Позначимо: - “х j ” - кількість одиниць (прутків) первинного матеріалу, який буде розкроєно за “j” варіантом (способом); - аі – потрібна кількість деталей “і”-ого різновиду (lі - довжини); - с j – залишок при розкрої одиниці первинного матеріалу (прутка) за “j”-тим способом (варіантом); - bij – кількість деталей “і”-ого виду, яку отримують при виготовлені з одиниці первинного матеріалу (прутка) за “j”-тим варіантом (способом). Залишок за “j”-тим способом від розкрою = cj ´ xj , загалом n Z = S Cj ´ Xj ® min , j =1 за умов: n S bij ´ xj ³ aj , i = 1,2,3…m; j=1 xj ³ 0, j = 1,2,3…n. Найбільш трудомістка частина задачі – визначення способів (варіантів) розкрою, яка здійснюється за формулою: m S li ´ bij + Cj ³ l, j = 1,2,3…n; і=1 0 £ Cj £ min (li ). Цільова функція: Z = 50 ´ х1 + 10 ´ х2 + 0 ´ х3 + 70 ´ х4 + 60 ´ х5 + 50 ´ х6 + +40 ´ х7 + 30 ´ х8 + 20 ´ х9 + 10 ´ х10 + 0 ´ х11 ; ® min; обмеження: 3х1 + 2х2 + 3х3 + 1х4 + х5 + х6 ³ 150; х2 + 2х4 + х5 + 4х7 + 3х8 + 2х9 + х10 ³ 140; х2 + 3х3 + х4 + 3х5 + 5х6 + 2х8 + 4х9 + 6х10 + 8х11 ³ 48; xj ³ 0, j = 1,2,3…11. Розв’язок задачі складає: Z* = 2300, x* = (8; 48; 0; 0; 0; 0; 23; 0; 0; 0; 0;). Приклад 4. Задача комплектного розкрою деталей. На розкрій поступають варіанти заготовок (t = 2) у обсязі “bi ” (i = 1,2,3…m) кожного. Потрібно виготовити комплекти деталей, які налічують по “lk ” штук (l1 = 1 деталь, l2 = 2 деталі) деталей кожного різновиду деталей. Кожна одиниця “і”-ого (одного з двох) різновидів заготовки може бути розкроєна ni (j = 1,2…ni ) різними способами. При розкрої одиниці “t”-ого матеріалу заготовки “j”-тим способом отримаємо “atjk ” одиниць “k” – а деталі. Потрібно скласти програму виготовлення якомога більше комплектів деталей, маючи вказані заготовки та задану комплектацію. Дамо конкретні дані: заготовки (t = 1) “А” мають довжину 5 м, кількість b1 = 100 штук; заготовки (t = 2) “В” мають довжину 4 м, кількість b2 = 175 штук; деталі D1 мають довжину 2,0 м, деталі D2 - довжину 1,25 м; до одного комплекту залучають одну (l1 = 1) деталь D1 та дві (l2 = 2) деталі D2 . Треба виготовити якомога більше комплектів деталей. Розв’язок задачі. Позначимо: xtj - кількість одиниць “t”-ого різновиду заготовок, які розкроюваються “j”-тим способом; х – загальна кількість комплектів. Побудуємо таблицю варіантів розкрою заготовок. Таблиця
Цільова функція: Z = x ® max; обмеження: по кількості заготовок: х11 + х12 + х13 £ 100; х21 + х22 + х23 £ 175; по комплектності: х11 + 2×х12 + 0×х13 + 2×х21 + х22 + 0×х23 ³ х; 2×х11 + 0×х12 + 4×х13 + 0×х21 + х22 + 3×х23 ³ 2х; хij ³ 0; х ³ 0. Оптимальний план складає: Z* = 264; х* = (0; 0; 100; 132; 0; 43) Приклад 5. Задача про складання суміші. На підприємстві потрібно виготовити суміш, які містить 30% речовини П1 , 20% речовини П2 , 40% речовини П3 та 10% речовини П4 . Для виготовлення суміші можливо використати три різновиди сировини М1 , М2 , М3 з різними співвідношеннями речовин та різною вартістю. Потрібно скласти суміш з мінімальною вартістю та наданим складом речовин. Ісходні дані наведені у таблиці. Таблиця
Розв’язок задачі. Позначимо “xi” - кількість використаної сировини “Mi ”. Цільова функція: Z = 4 x1 + 2x2 + 3x3 ® min; обмеження: 0,3х1 + 0,1х2 + 0,6х3 ³ 0,3; 0,1х1 + 0,2х2 + 0,2х3 ³ 0,2; 0,5х1 + 0,6х2 + 0,1х3 ³ 0,4; 0,1х1 + 0,1х2 + 0,1х3 ³ 0,1; хі ³ 0. Оптимальний план х* = (0; 0,6; 0,4); Z* = 2,4. Тема 2. Загальна задача лінійного програмування та деякі з методів її розв’язування У загальному вигляді розв’язання задачі математичного програмування майже неможливо. Найдосконало вивчені задачі лінійного програмування. Це пояснюється тим, що більшість реальних економічних моделей зводиться до задачі лінійного програмування, внаслідок чого і методи розв’язку задач лінійного програмування найбільш розвинені. Загальною задачею лінійного програмування зветься задача знаходження максимального (мінімального) значення функції n Z = S Cj ´ Xj , j =1 ( Z = С0 + С1 Х1 + С2 Х2 + . . . + С n Х n ); За умов функціональних обмежень: n S aij xj £ bi , де і = 1,2, . . . , k; j =1 а11 х1 + а12 х2 + . . . + a1 n xn £ b1 , а21 х1 + а22 х2 + . . . + a2 n xn £ b2 , аk1 х1 + аk2 х2 + . . . + akn xn £ bk , n S aij xj = bi , де і = k +1, k + 2, . . . , m; j=1 ak+1;1 x1 + ak+1;2 x2 + . . . + ak+1;n xn = bk+1 , ak+2;1 x1 + ak+2;2 x2 + . . . + ak+2;n xn = bk+2 , am;1 x1 + am;2 x2 + . . . + am;n xn = bm нефункціональних обмежень: xj ³ 0 , де j = 1,2,3,. . . n; а також aij ; bi ; cj – задані постійні величини, а ще k £ m. Цільову функцію можливо оптимізувати на “max”, або на “min” – це не є принципово, бо у точці х* функція Z = f (x*) – досягає мінімуму, а функція Z = - f (x*) – досягає максимуму. Таким чином ми завжди можемо мінімізувати цільову функцію, не втрачаючи загальності підходу. Цільова функція та усі функціональні обмеження , як ми вже бачили, мають лінійну форму відносно невідомих xj , що і дає цій задачі математичного програмування назву – лінійне програмування. Невідомі, які присутні у лінійній моделі, відповідно нефункціональним обмеженням невід’ємні, що теж не обмежує загальності підходу, бо є можливість завжди перепозначити xj = - (xj )- , де (xj )- - від’ємне. В залежності від вигляду функціональних обмежень (нерівності або рівності) загальну задачу лінійного програмування поділяють на: а) канонічну, якщо k = 0; l = n, де усі функціональні обмеження мають вигляд рівностей; б) стандартну (симетричну), де k = m; l = n, де усі функціональні обмеження мають вигляд нерівностей. Будь-які задачу лінійного програмування можливо звести до канонічної задачі шляхом перетворення функціональних обмежень нерівностей у обмеження рівності доданням до нерівностей невідомих невід’ємних величин: ai1 x1 + ai2 x2 + . . . + ain xn + yi = bi ; де yi ³ 0; новим невідомим дають назви відповідно xn+1 ; xn+2 ; . . . ; хn + m ; та відповідно xj ³ 0 , де j = 1,2,3 . . . n; n + 1 . . . n + m; функціональні обмеження набувають вигляд n S aij xj + yi = bi , де і = 1, 2, 3 . . . , m; j=1 a11 x1 + a12 x2 + . . . + a1n xn + xn+1 = b1 , a21 x1 + a22 x2 + . . . + a2n xn + xn+2 = b2 , am1 x1 + am2 x2 + . . . + amn xn + xn+m = bm , кількість невідомих моделі xj ³ 0 збільшилась до n + m . Слушне зауваження у підручнику – якщо знак нерівності ³, так додаткові невідомі треба віднімати від лівої частини нерівності. Будь-яку задачу лінійного програмування можливо звести до стандартної задачі лінійного програмування шляхом віднімання з лівої частини рівняння додаткових невід’ємних невідомих частин. Таким чином ми навчились зводити задачу лінійного програмування від мінімізації до максимізації; переходити від функціональних обмежень у вигляді нерівностей до обмежень – рівностей і навпаки; замінювати невідомі змінні від’ємні на невід’ємні. Введені додаткові невідомі змінні мають чіткий економічний зміст. так, наприклад, якщо у обмеженнях задачі лінійного програмування (нерівність) відбиваються витрати ресурсу та їх наявність, так додаткова зміна задачі (у формі рівняння) дорівнює обсягу невитраченого відповідного ресурсу. Слушне зауваження у підручнику – якщо змінні не є невід’ємною, так її можливо замінити на дві невід’ємні: xi = ui – vi . Система обмежень у вигляді рівностей сумісна, якщо є хоча б одно рішення; несумісна, якщо ранг матриці ½aij , i = 1,2,. . . n равен ( r ) , а ранг розширеної матриці (додан стовбець “bi ”) більше ніж ( r ); надмірна, якщо одне з рівнянь можливо отримати як лінійну комбінацію інших. У системі: n – кількість невідомих, m – кількість рівнянь. Якщо система сумісна та не є надмірною, так будемо вважати, що ранг її дорівнює (m); тоді: m – базисні змінні, (n – m) – вільні змінні, m < n. Система у даному випадку має нескінченну кількість розв’язків, так як ми маємо можливість надавати вільним змінним будь-які значення. Рішення системи рівнянь (обмежень) має назву базисного рішення , якщо усі вільні змінні дорівнюють нулеві. Сукупність значень невідомих (чисел) задачі математичного програмування, які задовольняють усім обмеженням задачі, мають назву припустимого рішення або плану. Сукупність усіх припустимих рішень системи рівнянь є опукла множина. Або множина розв’язків задачі лінійного програмування є опуклою. Базисне припустиме рішення задачі лінійного програмування відповідає одній з вершин або граней множини розв’язків. Оптимальне рішення задачі лінійного програмування відповідає одному з базисних припустимих рішень, тобто досягається у вершині множини розв’язків, має другу назву – оптимальний план задачі лінійного програмування. Геометрична інтерпретація множини допустимих розв’язків задачі лінійного програмування та графічний метод її розв’язування. /2/ стор. 165. Розглянемо задачу лінійного програмування у формі стандартної задачі – з обмеженнями у вигляді нерівностей. З метою наочності розглянемо простіший випадок з двома невідомими змінними. Пригадаємо задачу про планування випуску продукції малим підприємством. Z = 10 x 1 + 20 x 2 ; Z ® max; х1 + 3,5 х2 £ 350; 2 х1 + 0,5 х2 £ 240; х1 + х2 £ 150; х1 + х2 ³ 110; 10 х1 + 20 х2 ³ 1400; х1 ³ 0; х2 ³ 0. Нерівність – обмеження графічно відображається півплощіною, а границя – граничною прямою, рівняння якої утворюється перетворенням нерівності на рівняння. l1 ® x1 + 3,5x2 = 350 ; x1 = 0, x2 = 350 / 3,5 = 100 ; x2 = 0, x1 = 350. Щоб з’ясувати, яка напівплощіна задовольняє нерівності, перевіримо, наприклад, чи включає точку (0,0) 0 + 3,5 × 0 £ 350 напівплощіна нижче граничної прямої – нерівність виконується – напівплощіна нижче границі. Таким же чином перевіримо та побудуємо інші нерівності: l2 ® 2x1 + 0,5x2 = 240 ; x1 = 0, x2 = 240 / 0,5 = 480 ; x2 = 0, x1 = 240 / 2 = 120 ; l3 ® x1 + x2 = 150; x1 = 0; x2 = 150; x2 = 0, x1 = 150; l4 ® x1 + x2 = 110; x1 = 0; x2 = 110; x2 = 0, x1 = 110; l5 ® 10x1 + 20x2 = 1400; x1 = 0, x2 = 1400 / 20 = 70; x2 = 0, x1 = 1400 / 10 = 140; але точка (0,0) 10 × 0 + 20 × 0 = 0 ³ 1400 не відповідає нерівності, тому нам потрібна півплощіна вище граничної прямої. Таким чином отриманий многокутник розв’язків, до речі – опуклий, як завжди. З метою знаходження максимуму цільової функції Z = 10 x1 + 20 x2 побудуємо лінію рівня цільової функції, поклавши Z = 0 , 10 x1 + 20 x2 = 10; x1 = 0, x2 = 40; x2 = 0; x1 = 80; зростання цільової функції позначає паралельне зміщення самій собі догори, доки остання крапка не вийде на границю многокутника розв’язків. Ця точка відповідає перетину прямих х1 + 3,5 х2 = 350; - l1 ( × ) C (70; 80) х1 + х2 = 250; - l3 х1 = 70, х2 = 80, Zmax (x) = 10 × x1 + 20 × x2 = 10 × 70 + 20 × 80 = 23000 грн. Слушне зауваження у підручнику – якщо було б потрібно знайти мінімальне значення цільової функції, так лінію рівня потрібно зміщувати униз, доки остання крапка вийде на границю многокутника розв’язків – це l5 , усі крапки якої є розв’язком задачі – нескінченна множина рішень. У розглянутому випадку многокутник розв’язків не тільки опуклий, а ще і є замкненим. Можливі варіанти опуклого многокутника розв’язків, який є необмеженим. У першому випадку можливо знайти максимальне значення цільової функції, а у другому випадку – мінімальне значення. На наступному малюнку наведений приклад многокутника розв’язків несумісної системи обмежень – розв’язок задачі математичного програмування відсутній. Малюнок. Многокутник розв’язків несумісної системи обмежень задачі лінійного програмування Тема 3. Симплексний метод розв’язання задач лінійного програмування Перша праця по лінійному програмуванню була надрукована Канторовичем у 1939 році, але лише після відкриття Данцігом у 1949 році симплекс-метода розв'язання задачі лінійного програмування до цього класу задач виникла зацікавленість. Симплекс-метод дає аналітичний розв’язок лінійної задачі математичного програмування. Симплексний метод розв’язання задачі лінійного програмування ґрунтується на переході від одного опорного плану до іншого таким чином, що кожного разу значення цільової функції зростає (за умов, що задача має оптимальний план, та кожний з опорних планів не є надмірним ). Під опорним планом мають на увазі невід’ємний базисний розв’язок задачі лінійного програмування. Нагадаємо – базисний план (розв’язок) – рішення системи обмежень. у якому усі вільні змінні дорівнюють нулеві, тобто геометрично базисний план відповідає одній з вершин або граней многокутника розв’язків. Розглянемо використання симплекс-методу для вирішення задачі лінійного програмування на прикладі задачі про планування випуску продукції малим підприємством. У зв’язку з тим, що ця задача була розв’язана раніше, і ми з’ясували, що функціональні планові обмеження виконуються автоматично, а також з метою спрощення пошуку, розглянемо тільки функціональні обмеження ресурсів. х1 + 3,5 х2 £ 350; 2 х1 + 0,5 х2 £ 240; х1 + х2 £ 150; х1 ³ 0; х2 ³ 0. Z = f (x) = 10 x1 + 20 x2 ; Z ® max; ( -Z = - f (x) = - 10 x1 - 20 x2 - 0 × x4 - 0 × x5 ; ® min ). Розв’язок задачі. Перетворимо функціональні обмеження-нерівності на обмеження-рівності шляхом введення у обмеження-нерівності невід’ємних вільних невідомих y1 , y2 , y3 (хоча можливо було б і х3 , х4 , х5 ). х1 + 3,5 х2 + у1 = 350; (1) 2 х1 + 0,5 х2 + у2 = 240; (2) х1 + х2 + у3 = 150; (3) х1 ³ 0; х2 ³ 0; у1 ³ 0; у2 ³ 0; у3 ³ 0. Перед початком виробництва х1 = х2 = 0 , тоді у1 = 350; наявність ресурсу – шерсть; у2 = 240; наявність ресурсу – шовк; у3 = 150; наявність ресурсу – трудомісткість. Прибуток на початок справи Z = 10 × 0 + 20 × 0 = 0; Кількість рівнянь-обмежень m = 3; кількість невідомих – х1 , х2 , у1 , у2 , у3 n = 5; кількість вільних змінних – (n – m) = 5 – 3 = 2; базисне припустиме рішення задачі – це таке, у якому усі вільні змінні дорівнюють нулеві (вершина або грань многокутника розв’язків). Тому початковий опорний план складає х (1) = (0; 0; 350; 240; 150) ; Z ( х(1) ) = 0; де : х1 = 0; х2 = 0 – вільні змінні, відповідає рішенню задачі, коли продукція не виробляється. Надамо цю інформацію у вигляді симплекс-таблиці Таблиця
Z = 10х1 + 20х2 = 10 × 0 + 20 × 0 = 0; - Z = 0; Виробництво чоловічих костюмів х2 дає більший дохід, так почнемо його збільшувати, залишаючи х1 = 0, але існують обмеження. З першої строки симплекс-таблиці (першого рівняння-обмеження на наявність шерстяної тканини) чоловічих костюмів можливо виготовити 350 / 3,5 = 100; з другої строки симплекс-таблиці (другого рівняння-обмеження на наявність шовкової тканини) чоловічих костюмів можливо виготовити 240 / 0,5 = 480 штук; з третьої строки симплекс-таблиці (третього рівняння-обмеження на наявність ресурсів праці) чоловічих костюмів можливо виготовити 150 / 1 = 150 одиниць. Визначальним є обмеження на шерстяну тканину, тобто найбільша кількість чоловічих костюмів (за умов відсутності жіночих – х1 = 0) дорівнює найменшому з трьох значень 100; 480; 150; х2 = 110. Визначальний елемент симплекс-таблиці – коефіцієнт у першому рівнянні при другій вільній змінній (х2 ), який дорівнює3,5; та має назву центру (ключового елемента). Як буде виготовлено 100 чоловічих костюмів, так х2 = 100 і з першого рівняння-обмеження отримаємо (х1 = 0) у1 = 350 – 3,5х2 – х1 ; (1) у2 = 240 – 0,5х2 – 2х1 ; (2) у3 = 150 – х2 – х1 ; (3) що у1 = 0, тобто ресурсів шерстяної тканини не буде; з другого рівняння-обмеження отримаємо у2 = 240 – 0,5 × 100 – 2 × 0 = = 190 м шовкової тканини у запасах; з третього рівняння-обмеження отримаємо у3 = 150 – 100 – 0 = 50 людино - тижнів трудомісткості у запасах. Прибуток складає Z = 10 × 0 + 20 × 100 = 2000 грн.; - Z = - 2000. Цільова функція Z = 10 × х1 + 20 × х2 через нові вільні змінні (х1 = 0; у2 = 0) має вираз 40 40 40 30 Z = 10 х1 + 20 х2 = 10 × х1 + 2000 - ¾ у1 - ¾ х1 = 2000 - ¾ у1 + ¾ х1 , 7 7 7 7 бо (з першого рівняння-обмеження) маємо: х2 = 100 – у1 / 3,5 – х1 / 3,5. Перетворимо систему рівнянь-обмежень, замінюючи х2 на його вираз: х1 + 3,5 (100 – у1 / 3,5 – х1 / 3,5) + у1 = 350; (1¢) 2 х1 + 0,5 (100 – у1 / 3,5 – х1 / 3,50) + у2 = 240; (2¢) х1 + (100 – у1 / 3,5 – х1 / 3,50) + у3 = 150; (3¢) х2 + у1 / 3,5 + х1 / 3,5 = 100 (4¢) Другий опорний план задачи таким чином складає х(2) = (0; 100; 0; 190; 50; 100); Z (х(2) ) = 2000; де: х1 = 0; у1 = 0 – вільні змінні, відповідає розв’язку задачі, якщо виробляються виключно чоловічі костюми (х2 = 100). Знов надамо цю інформацію у вигляді симплекс-таблиці. Таблиця
Кожен з елементів симплекс-таблиці має своє значення: – у першому стовпці (х1 ) 13 / 7 – потрібна кількість шовкової тканини, потрібної на один жіночий костюм; 5 / 7 – потрібна кількість праці на один жіночий костюм; 30 / 7 – прибуток від одного жіночого костюма; Дивлячись на цільову функцію 30 40 Z = 2000 + ¾ × х1 - ¾ × у1 , 7 7 бачимо, що збільшення виготовлення жіночих костюмів може збільшити прибуток, бо х1 ³ 0 , а також 30 / 7 > 0. Пригадуючи, що у1 = 0, знайдемо значення нової вільної змінної, яка задовольняє систему рівнянь-обмежень (2¢), (3¢), (1¢¢), а також у2 ³ 0 , у3 ³ 0 , х2 ³ 0 . (2¢) дає, якщо у2 = 0, х1 » 102; (3¢) дає, якщо у3 = 0, х1 = 70; (1¢¢) дає, якщо х2 = 0, х1 =350; Визначальними є обмеження на ресурси праці: , х1 = 70, у3 = 0 з рівняння (3¢). Визначальний елемент симплекс-таблиці – це коефіцієнт у рівнянні (3¢), якій дорівнює (5/7), та відіграє роль нового центру, або ключового елементу. Як буде виготовлено 70 жіночих костюмів, так х1 = 70 з рівняння (3¢) отримаємо у3 = 0 (нова базова змінна); Третій опорний план задачі складає: Х (3) = (70; 80; 0; 60; 0;); Z (3) = 2300 грн.; Z (3) > Z (1); де: у1 = 0; у3 = 0 - вільні змінні, відповідає розв’язку задачі, якщо виробляється 70 жіночих та 80 чоловічих костюмів. Надамо цю інформацію у вигляді симплекс-таблиці. Таблиця
Збільшити прибуток неможливо у зв’язку з тим, що вільні змінні (уі > 0), що наявні у цільовій функції мають від’ємні коефіцієнти у той же час, як самі вони додатні. Опорний план Х (3) є оптимальним. Х* = ( х1 * = 70? х2 * = 80; у1 = 0; у2 * = 60; у3 = 0); залишки шовкової тканини складають 60 метрів, прибуток складає 2300 грн., як буде виготовлено 70 жіночих та 80 чоловічих костюмів. Надамо звичайний вигляд симплекс-таблиці розв’язку задачі. Таблиця 1 ітерація
Z (х) = ( -Z); Z (х) – С0 – С1 Х1 – С2 Х2 – С3 Х3 – С4 Х4 – С5 Х5 = 0; Z = С0 + С1 Х1 + С2 Х2 + С3 Х3 + С4 Х4 + С5 Х5 = 0 + 10Х1 + 10Х2 + 0 × Х3 + 0 × Х4 + 0 × Х5 = 0 × Х1 + 2 × Х2 ; ( -Z) = - 10 Х1 – 20 х2 ; ® min Таблиця 2 ітерація
х2 = 100 – (2/7) х1 – (2/7)х3 ; Z (x) + (30/7) х1 – (40/7)х3 = -2000 ; Z = 10х1 + 20 × (100 – (2/7)х1 – (2/7)х3 ) = 2000 + (30/7)х1 – (40/7)х3 ; - Z = - 2000 + (40/7)х3 - (30/7)х1 = - 2000; Таблиця 3 ітерація
х1 = 70 + (2/5) х3 – (7/5)х5 ; Z (x) - (28/7) х3 – 6 × х5 = -2300 ; Z = 2000 + (30/7) (70 + (2/5)х3 – (7/5)х5 ) – (40/7) х3 = 2300 - 6х5 – (28/7)х3 ; - Z = - 2300 + 6х5 + (28/7)х3 = - 2300; х3 = х5 = 0. У цільовій функції усі вільні змінні від’ємні – опорний план Х* = (70; 80; 0; 60; 0) є оптимальним. Задача розв’язана. Z*max = (-Z*)min = +2300. Стереометрично ідея методу полягає у тому, що: - знаходять будь-яку вершину багатогранника розв’язків; - рухаються вздовж того з ребер, по якому функція зменшується (збільшується) до іншої вершини багатогранника розв’язків; - як потрапляють у вершину, з якої у всі боки функція зростає (спадає), так знаходять мінімум (максимум). Нагадаємо ще раз: - якщо вектор розв’язків задовольняє усім обмеженням, так він має назву плану; - якщо план відповідає вершині багатогранника розв’язків (усі вільні змінні дорівнюють нулеві), так він має назву опорного плану; - якщо опорний план відповідає екстремальному значенню цільової функції, так він має назву оптимального плану. Критерій оптимальності за симплекс-таблицею. Якщо форма мінімізується (максимізується) і у рідку цільової функції відсутні додатні числа (від’ємні числа), за винятком стовпчика опорний розв’язок (b1 ), так опорний план є оптимальним. Коефіцієнти рядка цільової функції інтерпретують як приріст цільової функції при збільшенні вільної невідомої на одиницю. Приріст додатній, якщо коефіцієнт від’ємний, і навпаки від’ємний, якщо коефіцієнт додатній. Стовпець “j” є вирішальним, як у цьому стовпцю, оцінка коефіцієнта при невідомій у цільовій функції найбільша за модулем, тобто ½ Сj ½ = max. Змінну “xj ” у вирішальному стовпцю знаходять за співвідношенням bi min ¾ = q, (fij > 0; bi ³ 0); aij яке має назву симплекса , що і дає у свою чергу назву методу. Відповідний елемент aij назву ключового елемента, або центру таблиці. Вільну змінну, яка відповідає вирішальному стовпчику, залучають до базисних змінних, а базисну змінну, яка відповідає мінімальному симплексу, відповідно перетворюють на вільну змінну. Елементи симплексної строки нової таблиці дорівнюють елементам старої таблиці, поділеним на “ aij ” – ключовий елемент (центр). Усі інші елементи вирішального стовпця прирівнюють до “0” (за виключенням ключового, якій дорівнює одиниці) шляхом жорданового перетворення; це стосується також цільової функції. Можливі випадки розв’язку задачі лінійного програмування симплексним методом. Нескінченна множина оптимальних планів можлива, якщо у строці цільової функції оптимального плану хоча б одна вільна змінна має нульову оцінку (обмеження паралельне цільовій функції). Оптимальне рішення у цьому випадку вирождене, тобто ранг системи рівнянь-обмежень більший за кількість ненульових координат вектора розв’язків. Необмеженість задачі лінійного програмування виникає, як у якомусь стовпчику змінних у випадку мінімізації “сj ” > 0 , а усі елементи таблиці “аij ” £ 0; у випадку максимізації “сj ” < 0, а усі “аij ” £ 0. Це позначає, що область припустимих розв’язків задачі не обмежена знизу (мінімізація) або зверхне (максимізація). Послідовність використання симплекс-методу: - звести задачу лінійного програмування до задачі мінімізації у канонічній формі (обмеження-рівняння; bі ³ 0); - поділити змінні на базисні та вільні і отримати базисне припустиме рішення (базисні змінні невід’ємні; вільні змінні дорівнюють нулеві); - знайти вираз базисних змінних та цільової функції через вільні змінні; - за знаком коефіцієнтів при невідомих (сj £ 0) у цільовій функції з’ясувати, чи є рішення оптимальне Z = с0 + с1 х1 + с2 х2 + . . . + сn хn ; (cj ³ 0 – мінімізація); або яку вільну змінну можливо підвищити від нуля та перевести у базис і відповідно, яку базисну змінну перевести у вільні змінні; - знайти мінімальне додатне співвідношення “bi ” вільних членів рівнянь-обмежень до коефіцієнтів “aij ” при новій вільній змінній, тобто з’ясувати, яку базисну змінну необхідно перевести у вільні змінні; - перетворити умови-обмеження та цільову функцію у вираз в залежності від нових вільних змінних. Приклад. Розглянемо розв’язання задачі лінійного програмування, якщо у обмеженнях є нерівності двох напрямків. Потрібно максимізувати функцію Z = 4х1 + 2х2 – х3 , за умов обмежень х1 + х2 + х3 ³ 8; х2 + х3 £ 10; х1 + х2 + 2х3 £ 30; Перетворимо першу нерівність за допомогою змінної х4 х1 + х2 + х3 - х4 £ 8; До цих трьох обмежень додамо штучні змінні у1 , у2 , у3 (х5 , х6 , х7 ). Цільова функція набуває вигляду Z = 4х1 + 2х2 – х3 + 0 × х4 ; обмеження: х1 + х2 + х3 – х4 + у1 + 0 × у2 + 0 × у3 = 8; 0 × х1 + х2 + х3 + 0 × х4 + 0 × у1 + у2 + 0 × у3 = 10; х1 + х2 + 2х3 + 0 × х4 + 0 × у1 + 0 × у2 + у3 = 30; Вектори у1 ( 0 ); у2 ( 1 ); у3 ( 0 ) утворюють базис тримірний у загальному симівимірному просторі х1 , х2 , х3 , х4 , у1 , у2 , у3 . Кількість невідомих n = 7; обмежень m = 3; вільних змінних n – m = 7 – 3 = 4. Базові змінні у1 , у2 , у3 ; вільні змінні х1 , х2 , х3 , х4 . Базове опорне рішення х (0; 0; 0; 0; 1; 1; 1), Z (х) = 0. Розв’язок задачі надамо у вигляді симплекс-таблиці. Таблиця
Х* (30; 0; 0; 22; 0; 10; 0); Z = 4х1 + 2х2 – х3 = 4 × 30 = 120. Z* = 120 – 2х2 – 9х3 – 4у3 = 120. Тема 4. Теорія двоїстості та двоїсті оцінки в аналізі розв’язків лінійних оптимізаційних моделей Основна та двоїста задачі як пара взаємноспряжених задач лінійного програмування. Дві задачі лінійного програмування називаються взаємно двоїстими, якщо виконуються такі умови: 1. матриці системи обмежень двох задач є транспонованим, одна відносно другої; 2. система обмежень складається з нерівностей, які в обох задачах направлені у протилежні боки; 3. коефіцієнти оптимізуючої форми однієї задачі є вільними членами системи обмежень другої задачі і навпаки; 4. форми в обох задачах оптимізуються протилежно – перша на максимум, друга на мінімум. Зв’язок розв’язків взаємноспряжених задач лінійного програмування полягає у тому, що розв’язуючи симплексним методом одну з них, автоматично отримують розв’язок другої задачі. Оптимальні розв’язки двоїстих задач збігаються. Економічна інтерпретація двоїстої задачі лінійного програмування Розглянемо приклад виробничої задачі. Виробництво може виготовляти при різновиди продукції. Обсяг ресурсів обмежений, вартість продукції та витрати на кожен з різновид продукції відомі і наведені у таблиці. Таблиця
(у4 ) (у5 ) (у6 ) Потрібно знайти кількість кожного з різновидів продукції, які забезпечують найбільшу вартість загальної продукції. З економічної точки зору вартість ресурсів, використаних на виготовлення одиниці продукції, не може бути меншою, ніж вартість самої одиниці продукції, інакше це позначає, що вартість частини одиниці продукції виникає з повітря. Для якої завгодно виробничої програми вартість виробленої продукції не перевищує загальної вартістю наявних ресурсів. Проаналізуємо отримані результати. Розв’язок прямої задачі вказує на то, що необхідно виробити першої продукції х1 = 60 одиниць, третьої продукції х3 = 12 одиниць, другу продукцію виробляти непотрібно (х2 = 0). Використані повністю ресурси робочої сили (х4 = 0) та сировини (х5 = 0), залишок енерговитрат складає х6 = 180 кВт – год. Розв’язок двоїстої задачі вказує на те, що ресурси перший (у1 > 0) та другий (у2 > 0) використані повністю, третій ресурс надмірний (у3 = 0). Додаток першого обмеженого ресурсу на одиницю збільшує цільову функцію прямої задачі на 12 одиниць (зростає вартість, бо у1 = 12), другого обмеженого ресурсу на одиницю збільшує Z(x), цільову функцію, на 60 одиниць (у2 = 60). Збільшення третього ресурсу (необмеженого) – енерговитрату околиці оптимального плану не викликає змін цільової функції. Як уn = 0, у6 = 0, так це позначає, що виробництво продукції першої та третьої не є збитковим; у5 = 170 – це позначає, що виготовлення одиниці другої продукції викликає збиток у 170 грошових одиниць. перевіримо це таким чином: вартість ресурсів на другу продукцію складає а12 у1 +а22 у2 + а32 у3 = 20 × 12 + 3 × 60 + 60 × 0 = 420, водночас вартість другого виробу складає 250; тобто збиток = 420 – 250 = 170. Арифметична перевірка задач. Основна задача: 15 × 60 + 20 × 0 + 2,5 × 12 = 1200; 2 × 60 + 3 × 0 + 2,5 × 12 = 150; 35 × 60 + 60 × 0 + 60 × 12 = 2820 < 3000№ х4 = 0; х5 = 0; х6 = 180 > 0; у1 = 12 > 0; у2 = 60 > 0; у3 = 0; Двоїста задача: 15 × 12 + 2 × 60 + 35 × 0 = 300; 20 × 12 + 3 × 60 + 60 × 0 = 420 250; 25 × 12 + 2,5 × 60 + 60× 0 = 450; у4 = 0; у5 = 170 > 0; у6 – 0; х1 = 60 > 0; х2 = 0; х3 = 12 > 0. Стійкість оптимальних планів прямої та двоїстої задач обумовлені зміною обмежень “D С2 < 170;” “DСj , які не викликають порушень умов оптимізму. У нашому прикладі в b3 = в b1 = 0. Це позначає, що збільшення без обмежень, та зменшення менш ніж на 180 енерговитрат не змінює оптимального плану задачі. У оптимальному плані двоїстої задачі значення змінної (уі *) чисельно дорівнює частковій похідній функції jmax (b1 ,b2 , . . ,bm ) за аргументом “уі ”ю. тобто ¶ j max = yi *. ¶ bi Це вочевидь співвідношення вказує на те, що зміна “bі” викликає зміну j max , яка визначається зміною “уі ”. Але на прикладі ми бачили, що як обмеження не є критичним, так зміна “bі” ресурсу у околиці оптимального плану не викликає зміни цільової функції. Тому важливо визначити інтервали зміни кожного з вільних членів системи обмежень основної задачі. або коефіцієнтів цільової функції двоїстої задачі, у яких оптимальний план двоїстої задачі не змінюється. Це має місце для усіх значень (bi + Dbi ), при котрих стовпець вектора Р0 останньої симплекс-таблиці розв’язання основної задачі не містить від’ємних чисел, тобто коли серед компонентів вектора b1 + Db1 b2 + Db2 . bn + Dbn відсутні від’ємні значення. Матриця В-1 – це зворотня матриці В яка утворена з компонентів векторів базису, що визначає оптимальний план основної задачі лінійного програмування. Таким чином, якщо знайдено оптимальне рішення основної задачі лінійного програмування, так не важко провести аналіз стійкості двоїстих оцінок відносно зміні “bi”, оцінити ступінь впливу змінення “bi” на оптимальне значення цільової функції основної задачі, а також обрати найбільш ефективний варіант можливих змін “bi”. Література Основна:1. Акулич И.Л. Математическое программирование в примерах и задачах: Учеб. пособие для студентов эконом. спец. вузов. – М.: Высш. шк., 1986. – 319 с. 2. Бугір М.К. Математика для економістів. Лінійна алгебра, лінійні моделі. Посібник для студентів вищих навчальних закладів. – К.: Видавничий центр “Академія”, 1998 – 272 с. 3. Вітлінський В.В., Наконечний С.І. Ризик у менеджменті. – К.: ТОВ “Борисфен – М”, 1996. – 336 с. 4. Справочник по математике для экономистов / В.Е.Барбогумов, В.И.Ермакова, Н.Н.Кривенцова и др.; Под ред. В.И. Ермакова. – 2 изд., перераб. и доп. – М.: Высш. шк., 1997. – 384 с. Додаткова: 5. Банди Б. Методы оптимизации. Вводный курс: Пер. с англ. – М.: Радио и связь, 1988. – 128 с. 6. Численные методы в экстремальных задачах. Пшеничный Б.Н., Данилин Ю.М., Главная редакция физико-математической литературы издательства «Наука», 1975. – 319 с. 7. Численные методы. Н.Н. Калиткин. Главная редакция физико-математической литературы издательства «Наука», М., 1978. – 512 с. 8. Юдин Д.Б. Задачи и методы стохастического программирования. М., 1979. – 345 с. 9. Мажид К.И. Оптимальное проектирование конструкций. Лондон, 1974, пер. с англ. – М.: Высш. шк., 1979. – 237 с. 10. Грешилов А.А. Как принять наилучшее решение в реальных условиях. – М.: Радио и связь, 1991. – 320 с. |