Тема 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 +... + a1nxn £ b1 ,

а21х1 + а22х2 +... + a2nxn £ b2 ,

аk1х1 + аk2х2 +... + aknxn £ bk,

n

S aij xj = bi, де і = k +1, k + 2,..., m;

j=1


ak+1;1x1 + ak+1;2x2 +... + ak+1;nxn = bk+1 ,

ak+2;1x1 + ak+2;2x2 +... + ak+2;nxn = bk+2 ,

am;1x1 + am;2x2 +... + am;nxn = 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, де усі функціональні обмеження мають вигляд нерівностей.

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

 


ai1x1 + ai2x2 + ... + ainxn + 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

a11x1 + a12x2 + ... + a1nxn + xn+1 = b1,

a21x1 + a22x2 + ... + a2nxn + xn+2 = b2,

am1x1 + am2x2 + ... + amnxn + 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 x1 + 20 x2 ; 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, усі крапки якої є розв’язком задачі – нескінченна множина рішень.

У розглянутому випадку многокутник розв’язків не тільки опуклий, а ще і є замкненим. Можливі варіанти опуклого многокутника розв’язків, який є необмеженим.

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

 


 

 


Малюнок. Многокутник розв’язків несумісної системи обмежень

задачі лінійного програмування

 







Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: