- •7.080401 «Інформаційні управляючі системи та технології»
- •Математичні методи дослідження операцій у будівництві: б12 Навчальний посібник. – к: кнуба, 2006. – 107 с.
- •2.5. Алгоритм розрахунку псевдоплану для двоїстого
- •4.2. Класифікація методів розв’язання задач цілочислового
- •5.5. Задача прогнозування термінів ремонту будівельних
- •6.4. Задача про найкоротший шлях для орієнтованих та
- •6.5. Задача про найкоротший шлях для багатополюсних мереж.
- •6.7. Задача про максимальний потік для однополюсних мереж.
- •7.5. Сепарабельне програмування.
- •8.2. Загальний алгоритм складання розкладу занять
- •1. Загальні визначення, класифікація моделей і методів
- •1.1. Загальні визначення дослідження операцій
- •1.2. Приклади постановок задач лінійного програмування та їх геометрична інтерпретація Задача про рекламу
- •Задача про бетонно-розчинний вузол (брв)
- •1.3. Основні етапи та класифікація моделей та методів дослідження операцій
- •Контрольні запитання
- •2. Лінійне програмування
- •Розглянемо приклад розв’язання задачі лінійного програмування:
- •2.1. Графічний метод розв’язання задач лінійного програмування
- •2.2. Алгоритм зведення до канонічного вигляду задач лінійного програмування
- •2.3. Метод симплекс-таблиць
- •2.4. Двоїста задача лінійного програмування
- •Отримавши результат – вектор y, можна на базі описаної системи знайти вектор X. Для розв’язання прямої задачі потрібно:
- •2.5. Алгоритм розрахунку псевдоплану для двоїстого симплекс-методу
- •3*10 – Розмірність задачі см.
- •2.6. Двоїстий симплекс-метод
- •Контрольні запитання
- •3. Задачі спеціального лінійного програмування
- •Задача призначення (про розподілення обладнання). Між чотирма кар’єрами потрібно розподілити п’ять екскаваторів таким чином, щоб їх виробітка була максимальною.
- •3.2. Задача про призначення
- •Алгоритм угорського методу задачі призначення має такі етапи.
- •3.3. Методи пошуку опорного рішення транспортної задачі
- •Метод Північно–Західного Кута (мпзк) має такі етапи:
- •Метод мінімального елемента (мме) має такі етапи:
- •3.4. Метод потенціалів транспортної задачі
- •Примітка. Цільова функція має постійно покращуватися (крім випадку, коли спрямовуючий елемент рівний ). Контроль правильності розрахунку має завжди дорівнювати:
- •Розглянемо алгоритм розв’язання задач методом потенціалів.
- •3.5. Угорський метод транспортної задачі
- •3.6. Різновиди транспортної задачі та їх використання
- •Контрольні запитання
- •4. Задачі цілочислового лінійного програмування
- •4.1. Загальне визначення цілочислового лінійного програмування
- •4.2. Класифікація методів розв’язання задач цілочислового лінійного програмування
- •Розв’язавши графічно, одержимо:
- •4.3. Метод відтинаючих площин
- •У комп’ютерній програмі стратегія реалізується таким чином.
- •Контрольні запитання
- •5. Динамічне програмування
- •5.1. Загальні визначення та алгоритм динамічного програмування
- •До особливостей розв’язку задач дп можна віднести.
- •5.2. Задача про інвестиції
- •5.3. Задача розрахунку траєкторії літака
- •5.4. Задача про рюкзак (завантаження транспортного засобу)
- •5.5. Задача прогнозування термінів ремонту будівельних конструкцій
- •Контрольні запитання
- •6. Методи аналізу мереж та потокове програмування
- •6.1. Загальні визначення потокового програмування
- •6.2. Способи представлення мереж
- •6.3. Типові задачі оптимізації на мережах
- •1. Задача визначення найкоротшого шляху в мережі:
- •6.4. Задача про найкоротший шлях для орієнтованих та біорієнтованих мереж. Алгоритми Дейкстра 1 та 2
- •6.5. Задача про найкоротший шлях для багатополюсних мереж. Алгоритм Флойда
- •6.6. Задача про мінімальний остов
- •6.7. Задача про максимальний потік для однополюсних мереж. Алгоритм Дейкстра 4
- •6.8. Задача про максимальний потік для багатополюсних мереж. Мінімальний розріз. Алгоритм Гоморі-Ху
- •Контрольні запитання
- •7. Розв’язання задач нелінійного програмування
- •7.1. Загальні визначення нелінійного програмування
- •7.2. Правило множників Лагранжа
- •7.3. Узагальнене правило Лагранжа
- •7.4. Умова Куна-Такера
- •7.5. Сепарабельне програмування. Метод кусочно-лінійної апроксимації
- •7.6. Загальна класифікація задач нелінійного програмування
- •8. Розв’язання багатокритеріальних задач
- •8.1. Основні визначення та моделі багатокритеріальних задач
- •8.2. Загальний алгоритм складання розкладу занять з використанням методів дослідження операцій
- •8.3. Класифікація методів технічного пошуку рішень
- •8.4. Моделювання гнучкості для забезпечення властивості бути керованим
- •Список літератури
2.3. Метод симплекс-таблиць
Даний метод базується на табличних перетвореннях Джордана-Гауса моделі, поданої в канонічному вигляді. Метод симплекс-таблиць або метод переміщення по кутах (по симплексах) має в основі ітераційний розрахунок з максимально можливою кількістю ітерацій:
,
де C – максимально можлива кількість ітерацій (умова перевірки на зацикленість);
n – кількість рівнянь;
m – кількість змінних у канонічному вигляді.
Симплекс-метод базується на постійних перетвореннях таблиці:
|
Cx |
Bx |
A0 |
A1 |
… |
Am |
1 |
|
|
|
|
|
|
2 |
|
|
|
|
|
|
3 |
|
|
|
|
|
|
… |
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
Δ |
0 |
1 |
… |
m |
Розглянемо приклад.
Фірма рекламує продукцію на радіо та телебаченні з обмеженням витрат на рекламу – 1500$ на тиждень. Хвилина реклами на радіо коштує 5$, на телебаченні – 100$. Фірма хоче використовувати радіо в два і більше разів частіше, ніж телебачення. Досвід минулих років показав, що обсяг збуту, забезпечений хвилиною реклами на телебаченні, в 25 разів вищий, ніж хвилиною на радіо. Визначити розподіл коштів на рекламу.
х1 – пошукові хвилини реклами на радіо, х2 – на телебаченні.
|
|
|
|
||||
|
|
|
|
|
|
||
|
|
|
|
|
|
||
|
|
|
|
|
|
||
|
|
|
|
|
|
||
|
|
2*5 (розмірність) |
|
||||
1 |
25 |
0 |
0 |
-250 |
|
||
5 |
100 |
1 |
0 |
0 |
1500 |
||
1 |
-2 |
0 |
-1 |
1 |
0 |
||
|
|
|
|
|
|
||
1-а ітерація:
|
|
|
1 |
25 |
0 |
0 |
-
Cимплекс
різниця
Δj:
|
Cx |
Bx |
A0 |
A1 |
A2 |
A3 |
A4 |
A5 |
0 |
x3 |
1500 |
5 |
100 |
1 |
0 |
0 |
-250 |
x5 |
0 |
1 |
-2 |
0 |
-1 |
1 |
|
Δ |
0 |
-251 |
475 |
0 |
250 |
0 |
Кожна ітерація полягає в заміні (перерахунку) базисної змінної.
Визначення спрямовуючого стовпчика j*
Якщо Δj відсутнє, то розв’язок знайдено: базисні змінні дорівнюють А0, а небазисні – 0.
Визначення спрямовуючого рядка i*
Якщо i* відсутнє, тобто в стовпчику знаходиться значення не більше 0, то розв’язок відсутній (ОДР не обмежена зверху), інакше фіксуємо спрямовуючий елемент: (21) = 1.
Перерахунок таблиці (власне заміна базисних змінних):
ділення значень спрямовуючого рядка на спрямовуючий елемент:
обнулення значень спрямовуючого стовпця, крім спрямовуючого елемента:
перерахунок решти значень за формулою прямокутників:
Перевірка ітерації:
цільова функція має не зменшуватися;
номер ітерації має не перевищувати їхню максимальну кількість:
;
базисні змінні мають мати одиничний вектор;
розрахунок Δj має співпадати як за формулою спрямовуючого стовпчика, так і за формулою «прямокутника».
2-а ітерація:
|
|
|
1 |
25 |
0 |
0 |
-250 |
Cx |
Bx |
A0 |
A1 |
A2 |
A3 |
A4 |
A5 |
0 |
x3 |
1500 |
0 |
110 |
1 |
5 |
-5 |
1 |
x1 |
0 |
1 |
-2 |
0 |
-1 |
1 |
|
Δ |
0 |
0 |
-27 |
0 |
-1 |
251 |
3-а ітерація:
|
|
|
1 |
25 |
0 |
0 |
-250 |
Cx |
Bx |
A0 |
A1 |
A2 |
A3 |
A4 |
A5 |
25 |
x2 |
13.64 |
0 |
1 |
0.009 |
0.045 |
-0.009 |
1 |
x1 |
27.27 |
1 |
0 |
0.018 |
-0.9 |
0.909 |
|
Δ |
368.2 |
0 |
0 |
0.245 |
0.227 |
249.8 |
Розв’язок знайдено, тому що всі Δ 0. Після розрахунку потрібно виконати наступну перевірку:
чи всі M-змінні дорівнюють 0: якщо ні, то розв’язок відсутній або ж вибрано занадто малий коефіцієнт m;
значення Z має дорівнювати значенню ∑CiXi.
Для програмування методу мовою Pascal потрібна така пам’ять:
C: array 1..M of real; A: array 1..N, 0..M of real;
D: array 0..M of real; B: array 1..N of byte,
де С – файл коефіцієнтів цільової функції;
А – файл коефіцієнтів обмежень лівої і правої частин;
D – файл значень симплекс різниці;
B – файл номерів базисних змінних.
Програмування СМ виконується на базі наведеного алгоритму, який має циклічний обчислювальний процес «while», доки значення файла D не стане позитивним. Алгоритм має процедури розрахунку в симплекс-таблиці спрямовуючого елемента, перерахунку значень симплекс-таблиці та друку потрібних ітерацій для контролю на екран.
