- •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. Моделювання гнучкості для забезпечення властивості бути керованим
- •Список літератури
3.2. Задача про призначення
Загальна матмодель задачі вибору або призначення має вигляд:
Алгоритм угорського методу задачі призначення має такі етапи.
Зведення задачі до канонічного вигляду, тобто вона має бути закритою – матриця С має бути квадратною типу М*M (за рахунок додавання нульового фіктивного рядка або стовпчика).
Визначення істотних нулів (єдиних нулів у рядках та стовпчиках), при цьому в стовпчику з нулем ставиться позначка «+»):
перерахунок за стовпчиками: віднімання від max елемента;
перерахунок по рядках: віднімання min елемента.
Рішення знайдено при кількості позначок «+», рівній М – розмірності задачі. Якщо рішення не знайдено, то перехід до пункту 4.
Перевірка на зацикленість, тобто номер ітерації має не перевищувати розмірність задачі М.
Побудова множини (дерева) ланцюжків типу 0′0*…0′, де 0* – істотний нуль, а 0′ – виділений нуль в рядку з 0*. Побудова ланцюжка здійснюється від 0′ у невиділеному стовпчику до 0* у рядку, потім прямуємо до 0′ у стовпчику і т.д., закінчуючи 0′. Будуючи ланцюжок, необхідно відмічати рядки «+» та знімати позначення стовпчиків. Якщо хоч один ланцюжок побудовано, то замінюємо 0′0* та переходимо до пункту 3, якщо жодного не побудовано – до пункту 6.
Генерація нових нулів на основі одного з непобудованих ланцюжків 0′…0* включає:
визначення h 0 у матриці С серед невиділених елементів;
віднімання h від невиділених рядків та додавання h до виділених стовпчиків серед значень матриці С;
перехід до пункту 3.
Загальна схема алгоритму програми угорського методу розглянута на рисунку нижче.
Примітка. Типова помилка при програмуванні угорського методу – це розгляд згідно з літературою лише одного варіанта ланцюжка.
Розглянемо приклад.
Між чотирма кар’єрами треба розподілити п’ять екскаваторів таким чином, щоб їх виробітка була максимальною. Виробітки подані в таблиці, де стовпчики – кар’єри, а рядки – екскаватори.
3 |
5 |
5 |
1 |
Зробимо задачу закритою, тобто додамо фіктивний стовпчик: |
3 |
5 |
5 |
1 |
0 |
5 |
4 |
3 |
5 |
5 |
4 |
3 |
5 |
0 |
|
7 |
8 |
6 |
2 |
7 |
8 |
6 |
2 |
0 |
|
4 |
3 |
5 |
4 |
4 |
3 |
5 |
4 |
0 |
|
5 |
3 |
5 |
1 |
5 |
3 |
5 |
1 |
0 |
|
|
|
|
|
|
|
+ |
|
|
+ |
+ |
За стовпчиками віднімаємо всі значення від max елемента: |
4 |
3 |
1 |
4 |
0 |
За рядками віднімаємо min елемент від усіх значень та формуємо істотні нулі: |
4 |
3 |
1 |
4 |
0* |
2 |
4 |
3 |
0 |
0 |
2 |
4 |
3 |
0* |
0 |
||
0 |
0 |
0 |
3 |
0 |
0* |
0 |
0 |
3 |
0 |
||
3 |
5 |
1 |
1 |
0 |
3 |
5 |
1 |
1 |
0 |
||
2 |
5 |
1 |
4 |
0 |
2 |
5 |
1 |
4 |
0 |
1-а ітерація: |
|
|
|
+ |
+ |
|
2-а ітерація: |
|
|
+ |
+ |
+ |
|
Формуємо ланцюжок: |
4 |
3 |
1 |
4 |
0* |
|
Ланцюжок не знайдено, тому серед невиділених елементів знаходимо h=1 (див. вище) та знову формуємо ланцюжок: |
3 |
2 |
0 |
4 |
0* |
|
2 |
4 |
3 |
0* |
0 |
|
1 |
3 |
2 |
0* |
0 |
|
||
0* |
0′ |
0 |
3 |
0 |
+ |
0* |
0′ |
0 |
4 |
1 |
+ |
||
3 |
5 |
1 |
1 |
0 |
|
2 |
4 |
0* |
1 |
0 |
|
||
2 |
5 |
1 |
4 |
0 |
|
1 |
4 |
0 |
4 |
0 |
|
3-а ітерація: |
|
|
+ |
+ |
+ |
|
2-а ітерація: |
+ |
+ |
+ |
+ |
+ |
Ланцюжок знову не знайдено, тому генеруємо нові 0 (теж h=1): |
2 |
1 |
0 |
4 |
0* |
|
Ланцюжок побудовано. Нулі 0′ замінюємо на 0*, а 0* – на 0′: |
2 |
1 |
0 |
4 |
0* |
0 |
2 |
2 |
0* |
0 |
|
0 |
2 |
2 |
0* |
0 |
||
↓0* |
0′ |
1 |
5 |
2 |
+ |
0 |
0* |
1 |
5 |
2 |
||
1 |
3 |
0* |
1 |
0 |
|
1 |
3 |
0* |
1 |
0 |
||
0′ |
3 |
0 |
4 |
0 |
+ |
0* |
3 |
0 |
4 |
0 |
Примітка. Розв’язання задачі призначення виконується за допомогою програми Vengr1.exe. Виклик командного рядка: <vengr1 file_in file_out>, де file_in та file_out – файли з початковими даними та ітераціями розрахунку.
Відповідь: 1 екс. – не працює, 2-ий – на 4-му кар’єрі, 3-ій – на 2-му, 4-ий – на 3-му та 5-ий – на 1-ому з загальною виробіткою 23.
