Короткі теоретичні відомості та вказівки до розв’язання задач
1. Математичне моделювання економічних задач
Математична модель відображає зв'язок між вхідними і вихідними змінними, на базі якої може бути вироблено таке управління об'єктом (процесом), яке задовольняє заданій системі обмежень і доставляє екстремальне значення вибраної функції мети, тобто забезпечує досягнення заданої мети функціонування об'єкта.
Приклад. Підприємство реалізує продукцію трьох видів: П1, П2, П3. Для цього використовується два обмежених ресурси – корисна площа приміщень, яка з використанням коефіцієнту оборотності становить 460 м2, та робочий час в 500 людино-ч. Товарообіг підприємства повинен бути не більше 240 од. Необхідно розробити план товарообігу, який дає максимум прибутку. Вихідні дані приведені в таблиці.
Ресурси |
Витрати ресурсів на реалізацію 1 тис. грн. |
Об’єм ресурсу |
||
П1 |
П2 |
П3 |
||
Корисна площа, м2 |
1,5 |
2 |
3 |
460 |
Робочий час, людино-ч. |
3 |
2 |
1,5 |
500 |
Прибуток, грн. |
50 |
65 |
70 |
|
Скласти математичну модель задачі та привести її до канонічного виду.
Змінні: х1, х2, х3 – об’єми продукції, які підлягають реалізації.
Цільова
функція: загальний прибуток від реалізації
трьох видів продукції:
.
Обмеження:
обмеження на корисну площу приміщень:
робочий час не повинен перевищувати його запасу:
урахування планового завдання:
природне обмеження полягає в тому, що обсяги реалізації продукції не можуть бути від’ємними:
Таким чином, математична модель задачі має вигляд:
Введемо додаткові змінні х4, х5, х6. Перейдемо до розширеної задачі у канонічному виді.
Видно, що перетворення, що приводять до канонічного виду завдання, еквівалентні щодо рішення. Кожному допустимому рішенню вихідної задачі відповідає єдине рішення розширеної задачі і навпаки. Так як додаткові змінні входять до розширеної задачі з нульовими коефіцієнтами, значення цільових функцій вихідної і розширеної задач при відповідних допустимих рішеннях збігаються. Зокрема, оптимальне рішення вихідної задачі відповідає рішенню розширеної і навпаки.
2. Графічний метод розв’язання задач лінійного програмування
Якщо задача лінійного програмування має дві змінні, тобто
,
,
,
тоді її графічно можна вирішити згідно наступного алгоритму:
Будуємо безліч допустимих розв’язків
з врахуванням системи обмежень (
).Будуємо вектор градієнтного направлення
Проводимо довільну лінію рівня
перпендикулярну до вектора
.При рішенні задачі на max переміщаємо пряму у напрямку вектора
так,
щоб вона зайняла крайнє положення. При
подальшому її переміщенні лінії рівня
не мають спільних крапок з областю
допустимих розв’язків
.
В разі рішення задачі на min
лінію рівня
переміщуємо
в антіградієнтному напрямку.Визначаємо оптимальний план. Можливі наступні випадки:
Оптимальний план єдиний. Тоді лінія рівня і область в крайньому положення матимуть одну спільну точку.
Оптимальних планів може бути безмежна кількість. В цьому випадку в крайньому положенні лінія рівня проходить через грань області .
Цільова функція не обмежена, оскільки лінія рівня, скільки б ви її не переміщали, не займає крайнього положення з областю допустимих розв’язків.
Задача вирішення не має; оскільки область допустимих розв’язків порожня, тобто система обмежень несумісна.
Приклад: Майстерня виготовляє два види продукції, використовуючи два ресурси: першого виду – 156 одиниць, другого – 63. Прибуток від реалізації одиниці першого виду продукції – 4 грн., другого – 5 грн. Норми витрат представлено в таблиці.
Визначити план випуску, що максимізує прибуток.
Ресурси |
Витрати на одиницю продукції |
Об’єм ресурсу |
|
П-1 |
П-2 |
||
1 |
2 |
1,6 |
156 |
2 |
0,5 |
0,8 |
63 |
Прибуток, грн. |
4 |
5 |
|
Складемо
модель задачі.
Нехай X
=
(х1,
х2)
– план випуску продукції. Тоді модель
прийме вигляд
при обмеженнях:
П
А
В
С
обудуємо
багатокутник розв’язків. Для цього в
системі координат х10х2
на плоскості намалюємо граничні прямі:
,
Візьмемо довільну точку площини, наприклад, початок координат і з'ясуємо, яку півплощину визначає відповідне обмеження. Півплощину, визначену відповідним обмеженням, показано на малюнку штрихами. Враховуючи умову невід’ємності багатокутник розв’язків задачі змальований чотирикутником ОАВС.
Далі
побудуємо довільну лінію рівня, наприклад
.
Для цього змалюємо вектор градієнтного
напрямку
.
Оскільки вектор необхідний лише для
визначення напрямку зростання цільової
функції, то враховуючи масштаб креслення,
можна для більшої наочності побудувати
вектор
,
в нашому випадку вектор 10
.
Через початок координат проведемо
пряму, перпендикулярно до вектора
.
Пряму
переміщаємо паралельно самій собі у
напрямі вектора
в крайнє положення (точка В). У цій точці
функція досягає найбільшого значення.
Вирішуючи спільно рівняння прямих АВ
і ВС знаходимо координати точки В х1=30,
х2=60.
Отже майстерня повинна виготовляти 30 одиниць продукції першого вигляду і 60 – другого. Максимальний прибуток складає 420 грн.
Зауваження. Графічно можна також вирішити завдання лінійного програмування з п>2 змінними, якщо в її канонічному запису число невідомих п і число лінійно незалежних рівнянь т зв'язане співвідношенням п-т2 (тобто ранг системи обмежений).
3. Симплексний метод розв’язання задач лінійного програмування
Алгоритм симплекс – методу вирішення ЗЛП
1. Побудова початкового опорного плану:
приведення задачі до канонічного вигляду;
приведення системи обмежень до переважного вигляду
;
побудова першої симплексної таблиці;
перевірка умови оптимальності;
2. Перехід до нового опорному плану.
вибір напрямного стовпця;
вибір напрямного рядка;
а)б) = > вибір розв’язувального елементу;
симплексні перетворення і побудова 2-ой симплексної таблиці;
перевірка умов оптимальності і або перехід до п.2 або кінця.
Завдання. Розв’яжемо задачу про використання ресурсів, модель якої має вигляд:
При обмеженнях:
(на
трудові ресурси),
(на
напівфабрикати),
(на
верстатне
устаткування),
1) Перейдемо до канонічного вигляду:
2) Додамо до лівих частин обмежень додаткові невід’ємні змінні:
Тепер система обмежень має переважний вигляд
Будуємо симплексну таблицю
БП |
Сб |
В |
|
|
|
|
|
|
|
-40 |
-50 |
-100 |
-80 |
0 |
0 |
0 |
|||
|
0 |
100 |
2,5 |
2,5 |
2 |
1,5 |
1 |
0 |
0 |
|
0 |
260 |
4 |
10 |
4 |
6 |
0 |
1 |
0 |
|
0 |
370 |
8 |
7 |
4 |
10 |
0 |
0 |
1 |
Ц.Ф. |
0 |
40 |
50 |
100 |
80 |
0 |
0 |
0 |
|
Сб – стовпець коефіцієнтів базисних в ц.ф.
БП – базисні змінні; змінні що входять в переважні обмеження;
В – стовпець вільних членів в системи обмежень, представлених в переважному вигляді.
На
перетині стовпців і рядків розташована
матриця коефіцієнтів системи обмежень.
Рядок "Ц.Ф." (Z-рядок або індексний
рядок) в ній розташовані коефіцієнти
і
,
які розраховуються по формулах:
і так
далі
Початковий
опорний алан задачі
,
.
Всі
оцінки вільних змінних
.
План не оптимальний.
Виберемо найбільшу оцінку.
1)
,
стовпець, якому належить ця оцінка
називається напрямним.
2) Елементи стовпця В ділимо на відповідні елементи напрямного стовпця. Рядок, що містить найменше з набутих значень, називається напрямним. Елемент, що стоїть на перетині напрямного рядка і напрямного стовпця називається розв’язувальним.
3) Будуємо другу симплексну таблицю
а) Елементи стовпців В і Сб – заповнюються відповідно до аналізу попередньої таблиці
б) Елементи напрямного рядка діляться на розв’язувальний елемент і записуються у відповідному по номеру рядку нової таблиці.
у) Елементи напрямного стовпця дорівнюють нулю (у новій таблиці), за винятком елементу відповідного місцю розв’язувального елементу. Цей елемент дорівнює одиниці.
г) Щоб знайти будь-який інший елемент нової таблиці, скористаємося правилом чотирикутника
-
розв’язувальний
елемент;
-
колишній
елемент;
-
елемент
напрямного рядку;
-
елемент
напрямного стовпця;
-
новий елемент =
БП |
Сб |
В |
|
|
|
|
|
|
|
-40 |
-50 |
-100 |
-80 |
0 |
0 |
0 |
|||
|
-100 |
50 |
1,25 |
1,25 |
1 |
0,75 |
0,5 |
0 |
0 |
|
0 |
60 |
-1 |
5 |
0 |
3 |
-2 |
1 |
0 |
|
0 |
170 |
3 |
2 |
0 |
7 |
-2 |
0 |
1 |
Ц.Ф. |
-5000 |
-85 |
-75 |
0 |
5 |
-50 |
0 |
0 |
|
4) План не оптимальний, оскільки існують позитивні оцінки вільних змінних.
Будуємо нову таблицю, аналогічно попередній.
БП |
Сб |
В |
|
|
|
|
|
|
|
-40 |
-50 |
-100 |
-80 |
0 |
0 |
0 |
|||
|
-100 |
35 |
1,5 |
0 |
1 |
0 |
1 |
-0,25 |
0 |
|
-80 |
20 |
- |
|
0 |
1 |
- |
|
0 |
|
0 |
30 |
|
- |
0 |
0 |
|
- |
1 |
Ц.Ф. |
-5100 |
- |
-
|
0 |
0 |
- |
0 |
0 |
|
Оптимальний
план завдання
,
так
як оцінки вільних змінних індексного
рядка останньої симплексної таблиці
відмінні від нуля, то завдання має єдине
вирішення
4. Двоїсті задачі лінійного програмування
З кожною задачею лінійного програмування тісно пов’язана інша лінійна задача, яка називається двоїстою.
Так, для початкової задачі, яка полягає у максимізації функції
за умовами
Двоїстою буде наступна задача:
знайти мінімум функції
при обмеженнях
Двоїста пара задач лінійного програмування може бути симетричною і несиметричною. В симетричних задачах систем обмежень здається у вигляді нерівностей і на змінні накладаються умови невід’ємності. У несиметричних задачах система обмежень задається рівностями, а у двоїстій – нерівностями, причому змінні останньої можуть бути від’ємними.
Пари двоїстих задач можуть бути записані так:
Симетричні
Пряма Двоїста
1)
2)
Несиметричні
3)
4)
де
,
,
,
,
.
Наприклад, маємо задачу
Запишемо її у вигляді (1)
тоді двоїстою буде задача:
Між розв’язками при двоїстих здач існують важливі співвідношення: коли перша з пари двоїстих задач має оптимальний розв’язок, то друга також має оптимальний розв’язок, і значення цільових функцій задач при оптимальних планах.
Крім
того, розв’язуючи симплекс-методом
початкову задачу, можна одночасно
отримати оптимальний розв’язок двоїстої.
Нехай Х*
– оптимальний план початкової задачі,
а
– базисні змінні в останній симплекс-таблиці.
Позначимо через С*
– матрицю-рядок з коефіцієнтів цільової
функції початкової задачі при цих
базисних змінних, а через Р – матрицю
коефіцієнтів при цих змінних в системі
обмежень початкової задачі. Тоді
оптимальний розв’язок
двоїстої
задачі можна знайти за формулою:
,
де
–
матриця, обернена до матриці Р.
Приклад. Для даної задачі записати двоїсту і знайти її розв’язок.
Розв’язання.
Двоїста задача полягає в знаходженні
значення функції
за умовами
.
Оптимальний розв’язок цієї двоїстої задачі знайдемо графічним методом.
А
З малюнка
видно, що максимального значення функція
досягає в точці А. Таким чином,
є оптимальним планом, при якому
.
Розв’яжемо тепер двоїсту задачу іншим методом. По-перше, визначимо оптимальний план початкової задачі за допомогою симплекс-методу.
БП |
Сб |
В |
х1 |
х2 |
х3 |
х4 |
|
1 |
0 |
-1 |
0 |
||||
х3 |
-1 |
1 |
1 |
-2 |
1 |
0 |
- |
х4 |
0 |
3 |
1 |
3 |
0 |
1 |
1 |
|
-1 |
-2 |
2 |
0 |
0 |
|
|
х3 |
-1 |
3 |
|
0 |
1 |
|
|
х2 |
0 |
1 |
|
1 |
0 |
|
|
|
-3 |
- |
0 |
0 |
- |
|
|
Отже,
,
,
.
В останній симплекс-таблиці базисні
змінні –
,
.
Тоді з коефіцієнтів при цих змінних у
цільовій функції складемо
,
а з коефіцієнтів в системі обмежень –
.
Обчислимо обернену матрицю:
.
Тоді оптимальний розв’язок двоїстої задачі:
.
5. Транспортна задача лінійного програмування
Алгоритм знаходження оптимального розв’язку транспортної задачі:.
1) Знаходження початкового опорного плану (методами північно-західного кута, мінімальної вартості)
2) Побудова системи потенціалів
3) Перевірка виконання умови оптимальності для незанятих кліток
4) Перехід до кращого опорного плану
а) вибір клітин, в яку необхідно зробити перевезення;
б) побудова циклу і визначення величини перерозподілу вантажу;
контроль обчислень;
5) Зміна системи потенціалів, і перехід до п.3.
Умови в таблиці
Виробники |
Споживачі |
Запаси |
|||
В1 |
В2 |
В3 |
В4 |
||
А1 |
4 |
6 |
7 |
2 |
200 |
А2 |
2 |
4 |
3 |
1 |
150 |
А3 |
9 |
7 |
4 |
2 |
150 |
Потреби |
100 |
120 |
130 |
150 |
500 |
Методом мінімальної збалансованості знаходимо початковий опорний план.
Будуємо
систему потенціалів
,
виходячи з умови
для зайнятих клітин в опорному плані.
Виробники |
Споживачі |
Запаси |
|||
В1 |
В2 |
В3 |
В4 |
||
А1 |
4 100 |
6 100 |
7 - |
2 - |
200 |
А2 |
2 0 |
4 - |
3 - |
1 150 |
150 |
А3 |
9 - |
7 20 |
4 130 |
2 - |
150 |
Потри |
100 |
120 |
130 |
150 |
500 |
Нехай
,
тоді
,
,
,
,
,
,
вирішивши
цю систему, отримаємо
,
,
,
,
,
.
Обчислюємо
значення
для незанятих клітин (записуємо в лівий
нижній кут клітин), якщо все
,
то план оптимальний; якщо існують
,
то план не оптимальний і переходимо до
побудови кращого опорного плану.
,
,
,
,
,
Так як
є
,
то план не оптимальний. Знаходимо
Будуємо цикл з вершинами у вибраній клітці і позначаємо його вершини знаками.
Виробники |
Споживачі |
Запаси |
||||
В1 |
В2 |
В3 |
В4 |
|||
|
vj ui |
|
|
|
|
|
А1 |
|
4
1 |
6
1 |
7 - -4 |
2 - 1 |
200 |
А2 |
|
2
0 |
4 - 0 |
3 - -2 |
1 1 50 |
150 |
А3 |
|
9 - -4 |
7
2 |
4 130 |
2 - 2 |
150 |
Потреби |
100 |
120 |
130 |
150 |
500 |
|
- величина
перерозподілу
вантажу.
Робимо
зрушення
по циклу на величину
,
переходимо
до нового
оптимального плану, перехід
здійснюємо
по формулі:
Виробники |
Споживачі |
Запаси |
||||
В1 |
В2 |
В3 |
В4 |
|||
|
vj ui |
|
|
|
|
|
А1 |
|
4
8
|
6 120 |
7 - -2 |
2 - 1 |
200 |
А2 |
|
2 2 0 |
4 - 0 |
3 - 0 |
1 130 |
150 |
А3 |
|
9 - -6 |
7 - |
4 130 |
2 20
|
150 |
Потреби |
100 |
120 |
130 |
150 |
500 |
|
Складаємо нову
систему потенціалів. Знаходимо оцінки
вільних клітин
вони пишуться в лівому нижньому кутку.
Умова оптимальності порушується в
клітці (1;3). Включаємо її в набір заповнених.
Будуємо цикл перерахунку і робимо
зрушення по циклу на величину постачання
.
Виробники |
Споживачі |
Запаси |
||||
В1 |
В2 |
В3 |
В4 |
|||
|
vj ui |
|
|
|
|
|
А1 |
|
4 - -1 |
6
1 |
7 - -3 |
2
8
|
200 |
А2 |
|
2 100 |
4 - 1 |
3 - 0 |
1 50 |
150 |
А3 |
|
9 - -6 |
7 - -1 |
4 130 |
2 20
|
150 |
Потреби |
100 |
120 |
130 |
150 |
500 |
|
Обчислення аналогічні обчисленням для попередньої таблиці.
Порушується
оптимальність в клітці (2;2).
,
робимо зрушення по циклу, на величину
.
Виробники |
Споживачі |
Запаси |
||||
В1 |
В2 |
В3 |
В4 |
|||
|
vj ui |
|
|
|
|
|
А1 |
|
4 - 0 |
6 70 |
7 - -3 |
2 130
|
200 |
А2 |
|
2 100 |
4 50
|
3 - -1 |
1 - -1 |
150 |
А3 |
|
9 - -5 |
7 - -1 |
4 130 |
2 20
|
150 |
Потреби |
100 |
120 |
130 |
150 |
500 |
|
Обчислення аналогічні попереднім обчисленням.
Знайденим
в таблиці опорний план оптимальний,
оскільки
.
Відповідь:
6. Задача про максимальний потік
Задача про максимальний потік в мережі формулюється так: при заданій топології мережі і відомої пропускної спроможності дуг знайти найбільшу величину потоку і його розподіл по дугах мережі.
Алгоритм визначення максимального потоку
Побудувати початковий допустимий план-потік. Вирішення можна почати, наприклад, з нульового потоку.
Перевіряємо, чи немає ненасичених шляхів, які йдуть з S в S'. Якщо вершина S' не потрапила в безліч вершин S, досяжних по ненасиченим ребрах з S, то побудований потік максимальний. Завдання вирішене. Якщо вершина S' потрапила в безліч S, то потік можна збільшити.
Виділяємо шлях, що складається з ненасичених ребер, ведучий з S в S'. Збільшуємо потік цього шляху на величину
.
Переходимо до нового потоку, збільшеного
на
і так далі
Ідею алгоритму можна, реалізувати табличним способом або графічно. Розгледимо графічний спосіб рішення задачі.
Приклад. Задана мережа, числа, записані над ребрами, означають пропускну спроможність ребер
Будуємо початковий допустимий потік Х0, для цього розглянимо, наприклад, шляхи
«1» S-1-3-2-s' min = {10, 7, 6, 8} = 6
«2» S-4-5-s' min = {4, 10, 13} = 4
По шляху «1» пропустили 6 одиниць. По шляху «2» пропустили 4 одиниці. Отримуємо потік Х0 величиною V0 = 10 одиниць.
Мережа, відповідна потоку Х0 намальована на рис.1
При цьому числа, що стоять над ребрами, означають: без дужок – пропускна спроможність, що залишилася, в дужках – величина вантажу, що пропускається, тобто величина потоку через дане ребро.
Пунктиром малюються насичені ребра, тобто ребра, потік через які рівний їх пропускній спроможності.
Перевіряємо, чи немає ненасичених шляхів. Такі шляхи є, тобто початковий потік можна збільшити. Для цього вибираємо шляхи «3», «4».
«3» S-1-2-s' min = {4, 5, 2} = 2
«4» S-3-s' min = {2, 2} = 2
По шляху «3» пропускаємо потік величиною 2 одиниці, а по шляху «4» також 2 одиниці. Отримаємо потік в мережі величиною V1 = 14 одиниць, йому відповідає мережа на рис.2.
Оскільки більше ненасичених шляхів з вершин S в S' немає, то отриманий потік є max і задача вирішена.

00
00
0
0
20
0