Материал: 62_201

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Задача про рюкзак буде розглядатися далі, і в розділі «Ди­ намічне програмування» буде наведено алгоритм її розв'язання. Окрім цього, задача про рюкзак існує ще у варіанті неперервної задачі, що розглядатиметься у розділі «Жадібні алгоритми».

Транспортна задача

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

Нехай у місті є два продовольчі склади і дві пекарні. Не­ обхідно щоденно з першого складу вивозити 50 т борошна, а з другого - 70 т. Перша пекарня при цьому отримує 40 т, а друга - 80 т борошна. Відома також вартість перевезення борошна зі складів до пекарень у гривнях за тонну (табл. 3).

 

 

 

 

 

 

Таблиця З

 

 

 

 

 

 

~~—-——_^_^^

Пекарня

1

2

Склад

~~

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

1,2

1,6

 

2

 

 

 

0,8

1,0

 

 

 

 

 

 

 

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

Позначимо ту - кількість борошна, яка перевозиться зі складу і на пекарню /. Виходячи з поставлених умов і введених позначень, запишемо математичну модель транспортної за­ дачі. Система обмежень буде такою:

ти + т12 =50;

т21 + т22 =70; тп+т21 =40;

т12+т22= 80,

де перші два рядки визначають кількість борошна, що виво­ зиться зі складів на пекарні, а другі два - кількість борошна, яка ввозиться на пекарні зі складів.

Оскільки нам відома вартість кожного з перевезень, то за­ гальна сума вартості визначатиметься за формулою:

L = 1,2тп + 1,6т1 2 + 0,8т2 1 + т 22-

Отже, розв'язок транспортної задачі полягає у відшуканні таких невід'ємних значень т;-, які задовольняють систему об­ межень, a L набуває мінімального значення.

185

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

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

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

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

«1А +ai2*2 + • • • + <Н»Хп <=> h'

а2Л+ a22x2 + ... + a2nxn о b2;

а » Л + а И 2*2 + - + a m A « f c m -

де a.j, b,i - фіксовані дійсні числа, а символ «c=>» означає один

ч ч

із знаків «^», «^», «=». Саме ця система обмежень або просто обмеження описують умови, які накладаються на вхідну інформацію задачі.

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

L = C]#i + с2х2 + ... + спхп,

де сі набуває дійсних значень. Наведений вираз називається

цільовою функцією.

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

розв'язків, які задовольняють систему обмежень, називається

допустимими розв'язками або планами даної задачі.

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

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

186

Геометрична інтерпретація розв'язування задач лінійного програмування

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

Геометрично систему обмежень цієї задачі, що є системою нерівностей

2xj+5x2 ^20;

5^+6^2 ^ ЗО, можна зобразити у вигляді деякої області на декартовій пло­ щині (мал. 112).

Оскільки розв'язки задач лінійного програмування завжди знаходяться в області невід'ємних значень, то до обмежень за­ дач лінійного програмування необхідно дописати ще дві нерівності: Xj ^ 0 та х2 > 0. На малюнку 112 ці дві нерівності визначають першу чверть визначеної системи координат.

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

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

Мал. 112

187

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

Далі для пошуку максимального розв'язку серед усіх допус­ тимих будується опорна пряма (або пряма нульового рівня):

L = 50х1 + 40х2 = 0.

З вигляду цього рівняння видно, що пряма проходитиме че­ рез початок координат. Якщо цільова функція матиме вільний член, то при побудові опорної прямої його можна проігнорува­ ти, адже максимум лінійної функції L - f1x1 + у2х2 + Yo Дося­ гається при тих же значеннях хх та х2, що і максимум лінійної функції без вільного члена у0. Щоб визначити точку - макси­ мум або мінімум серед допустимих розв'язків, необхідно пе­ реміщувати опорну пряму паралельно самій собі в одному з напрямів. При цьому значення L' буде або збільшуватись, або зменшуватись. Залежно від постановки вихідної задачі (в на­ шому випадку - це пошук максимуму) визначається напрям руху опорної прямої: за вектором напряму у випадку максимізації цільової функції або проти вектора напряму у разі мінімізації цільової функції. Вектор напряму визначається ко­ ефіцієнтами цільової функції:

a (YIJ Y2)-

Для нашої задачі вектор напряму матиме вигляд а (50; 40). Оскільки цільову функцію сформульованої задачі необхідно дослідити на максимум L = 50х1 + 40х2 —> max, то опорну пряму необхідно переміщувати в напрямі, який вказує побудований вектор напряму (мал. 112).

Координати останньої крайньої точки багатокутника допусти­ мих значень, яку перетне опорна лінія на своєму шляху, і будуть тими значеннями, при яких величина І/ набуде максимального значення. Для нашої задачі такою вершиною багатокутника є вершина С. Вона утворюється при перетині прямих 8х1 + Ьх2 = 40 та Ьхг + 6х2 = 30. Для визначення координат цієї вершини необхідно лише розв'язати відповідну систему лінійних рівнянь

8^+5x2 =40; 5^+6x2=30

і підставити отриманий розв'язок (Xj* ~ 3,9; х2* ~ 1,74) у цільо­ ву функцію. У результаті отримаємо розв'язок сформульованої задачі лінійного програмування L' = 264,6.

Опишемо алгоритм пошуку оптимального значення задачі лінійного програмування в геометричній інтерпретації.

1.За умовою задачі записати обмеження та цільову функцію.

2.Побудувати багатокутник допустимих значень.

188

3.Побудувати опорну пряму відповідно до такого скоректо­ ваного рівня цільової функції: прибрати вільний член і прирів­ няти до 0.

4.За коефіцієнтами цільової функції при невідомих побудува­ ти вектор напряму і визначити напрям переміщення опорної прямої для досягнення оптимального значення цільової функції.

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

6.Розв'язати систему лінійних рівнянь, яку утворюють рівняння визначених прямих.

7. Для отримання шуканого оптимального значення цільової функції підставити розв'язок системи рівнянь у цільову функцію.

Необхідно обов'язково розглядати такі три можливі випад­ ки одержання розв'язку задачі лінійного програмування:

1)задача має один розв'язок, тобто опорна пряма на остан­ ньому кроці перетинає одну точку, яка є вершиною області до­ пустимих розв'язків;

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

3)розв'язок задачі відсутній, тобто опорна пряма пере­ міщується в бік, де область допустимих значень не обмежена відрізком прямої, або опорна пряма переміщується в бік, про­ тилежний до розміщення області допустимих значень.

Завдання

1.Розв'язати геометрично задачу про використання сировини для випадку існування одного оптимального розв'язку, ви­ користавши власні вхідні дані.

2.Розв'язати геометрично задачу про використання сировини для випадку існування безлічі оптимальних розв'язків, ви­ користавши власні вхідні дані.

3.Розв'язати геометрично задачу про використання сировини для випадку відсутності жодного оптимального розв'язку, використавши власні вхідні дані.

4.Розв'язати геометрично задачу про складання харчового раціону для випадку існування одного оптимального роз­ в'язку, використавши власні вхідні дані.

5.Розв'язати геометрично задачу про складання харчового ра­ ціону для випадку існування безлічі оптимальних розв'яз­ ків, використавши власні вхідні дані.

6.Розв'язати геометрично задачу про складання харчового раціону для випадку відсутності жодного оптимального роз­ в'язку, використавши власні вхідні дані.

189

Источник: https://studfile.net/preview/14502489/