- •Кафедра транспортних технологій
- •Практична робота №1. Елементи теорії прийняття рішень.
- •Методичні вказівки
- •Контрольні запитання:
- •Практична робота №2. Найкоротший шлях на транспортній мережі.
- •Методичні вказівки
- •Контрольні питання:
- •Практична робота №3. Найкоротший шлях на транспортній мережі.
- •Контрольні питання:
- •Практична робота №4. Найкоротший шлях на транспортній мережі.
- •Методичні вказівки
- •Контрольні питання:
- •Методичні вказівки
- •Практична робота 5. Графоаналітичний метод рішення задачі лінійного програмування
- •Методичні вказівки
- •Практична робота 6. Рішення задачі лінійного програмування симплекс-методом.
- •Методичні вказівки
- •Контрольні питання
- •Практична робота 8. Створення припустимого плану перевезень.
- •Методичні вказівки
- •Метод найменшої вартості
- •Контрольні питання:
- •Практична робота 9. Створення припустимого плану перевезень.
- •Методичні вказівки Метод Фогеля
- •Контрольні питання:
- •Практична робота 10. Зняття виродженності транспортної задачі
- •Методичні вказівки
- •Контрольні питання:
- •Практична робота 11. Рішення транспортної задачі розподільчим методом
- •Методичні вказівки
- •Контрольні питання
- •Методичні вказівки
- •Контрольні запитання:
- •Практична робота 13. Рішення незбалансованої транспортної задачі.
- •Методичні вказівки
- •Контрольні запитання:
- •Методичні вказівки
- •Контрольні запитання:
- •Практична робота 15. Розв’язання задачі о призначеннях
- •Методичні вказівки
- •Контрольні запитання:
- •Практична робота 16. Універсальний метод знаходження найкоротшого шляху.
- •Методичні вказівки
- •Контрольні питання:
- •Практична робота 17. Матрічний спосіб знаходження максимального потоку
- •Методичні вказівки
- •Контрольні питання:
- •Практична робота 18. Графічний спосіб знаходження максимального потоку
- •Методичні вказівки
- •Контрольні питання:
- •Практична робота 19. Вирішення задачі об інвестиціях
- •Методичні вказівки
- •Контрольні питання:
- •Практична робота 20. Вирішення задачі рюкзачного типу
- •Методичні вказівки
- •Контрольні питання:
- •Практична робота 21. Комбінаторне програмування
- •Методичні вказівки
- •Контрольні питання:
- •Практична робота 22. Розробка раціональних маршрутів перевезень масових сумісних вантажів
- •Методичні вказівки
- •Контрольні питання:
- •Практична робота 23. Розробка розвозних маршрутів перевезень дрібнопартіоних вантажів
- •Методичні вказівки:
- •Контрольні запитання
- •Практична робота 24. Розробка часових графіків спільної роботи рухомого складу та вантажних (розвантажувальних) механізмів.
- •Контрольні запитання
- •Практична робота 25. Розрахунок параметрів мережевих графіків.
- •Методичні вказівки
- •Контрольні питання
- •Практична робота 26. Розрахунок параметрів мережевих графіків
- •Контрольні питання
- •Практична робота 27. Аналіз заданої смо
- •Методичні вказівки
- •Смо з очікуванням.
- •Контрольні питання
- •Література
Контрольні запитання:
Особливості постановці мережевій ТЗ (МТЗ)?
Які є методи вирішення МТЗ?
Які є обмеження на використання знайомих вам методів вирішення МТЗ?
Література [1, 5]
Практична робота 15. Розв’язання задачі о призначеннях
Мета: набути практичних навичок використання венгерського методу.
Задача
Для працівників і робіт, дана матриця nхn, що задає вартість виконання кожної роботи кожним працівником (викладач видає індивідуально).
Завдання
Знайти мінімальну вартість виконання робіт, таку що кожен працівник виконує рівно одну роботу, а кожну роботу виконує рівно один працівник.
Методичні вказівки
Надалі під призначенням розуміють відповідність між працівниками і роботами, що має нульову вартість, після того як зроблені трансформації, що впливають лише на загальну вартість робіт.
Н
асамперед
запишемо задачу в матричній формі:
де a, b, c, d - працівники, що повинні виконати роботи 1, 2, 3, 4.
Коефіцієнти a1, a2, a3, a4 позначають вартість виконання працівником "a" робіт 1, 2, 3, 4 відповідно. Аналогічний зміст мають інші символи. Матриця квадратна, тому кожен працівник може виконати тільки одну роботу.
Крок 1
Зменшуємо елементи построчно. Знаходимо найменший з елементів першого рядка (а1, а2, а3, а4), і віднімаємо його з всіх елементів першого рядка. При цьому хоча б один з елементів першого рядка обнулится. Те ж саме виконуємо і для всіх інших рядків. Тепер у кожнім рядку матриці є хоча б один нуль. Іноді нулів уже досить, щоб знайти призначення. Приклад показаний у таблиці. Червоні нулі позначають призначені роботи.
0 |
a2' |
0 |
a4' |
b1' |
b2' |
b3' |
0 |
0 |
c2' |
c3' |
c4' |
d1' |
0 |
d3' |
d4' |
При великій кількості нулів для пошуку призначення (нульової вартості) можна використовувати алгоритм перебування максимального паросочетания двочасткових графів, наприклад алгоритм Хопкрофта-Карпа. Крім того, якщо хоча б в одному стовпці немає нульових елементів, то призначення неможливе.
Крок 2
Часто на першому кроці немає призначення, як, наприклад, у наступному випадку:
0 |
a2' |
a3' |
a4' |
b1' |
b2' |
b3' |
0 |
0 |
c2' |
c3' |
c4' |
d1' |
0 |
d3' |
d4' |
Задача може бути ефективно (за нульову вартість) виконана як працівником a, так і працівником c, зате задача 3 не може бути ефективно виконана ніким.
У таких випадках ми повторюємо крок 1 для стовпців і знову перевіряємо, чи можливо призначення.
Крок 3
У багатьох випадках ми досягнемо бажаного результату вже після кроку 2. Але іноді це не так, наприклад:
0 |
a2' |
a3' |
a4' |
b1' |
b2' |
b3' |
0 |
0 |
c2' |
c3' |
c4' |
d1' |
0 |
0 |
d4' |
Якщо працівник d виконує роботу 2, комусь виконувати роботу 3, і навпаки.
У таких випадках ми виконуємо процедуру, описану нижче.
Спочатку, використовуючи будь-який алгоритм пошуку максимального паросочетания в двочастковому графі, призначаємо якнайбільше робіт тим працівникам, що можуть їх виконати за нульову вартість. Приклад показаний у таблиці, призначені роботи виділені червоними.
0 |
a2' |
a3' |
a4' |
b1' |
b2' |
b3' |
0 |
0 |
c2' |
c3' |
c4' |
d1' |
0 |
0 |
d4' |
Відзначимо всі рядки без призначень (рядок 1). Відзначимо всі стовпці з нулями в цих рядках (стовпець 1). Відзначимо всі рядки з нулями в цих стовпцях (рядок 3). Продовжуємо, поки нові рядки і стовпці не перестали відзначатися.
× |
|
|
|
|
0 |
a2' |
a3' |
a4' |
× |
b1' |
b2' |
b3' |
0 |
|
0 |
c2' |
c3' |
c4' |
× |
d1' |
0 |
0 |
d4' |
|
Тепер проводимо лінії через усі відзначені стовпці і невідмічені рядки.
× |
|
|
|
|
0 |
a2' |
a3' |
a4' |
× |
b1' |
b2' |
b3' |
0 |
|
0 |
c2' |
c3' |
c4' |
× |
d1' |
0 |
0 |
d4' |
|
Усі ці дії переслідували лише одну мету: провести найменша кількість ліній (вертикалей і горизонталей), щоб покрити всі червоні нулі. Можна було скористатися будь-як іншим методом замість описаного.
Крок 4
З непокритих лініями елементів матриці (у даному випадку це a2', a3', a4', c2', c3', c4') знайти найменший. Відняти його з усіх не відзначених рядків і додати до всіх перетинань відзначених рядків і стовпців. Так, наприклад, якщо найменший елемент із перерахованих дорівнює а2', ми одержимо
× |
|
|
|
|
0 |
0 |
a3'-а2' |
a4'-a2' |
× |
b1'+a2' |
b2' |
b3' |
0 |
|
0 |
c2'-а2' |
c3'-а2' |
c4'-а2' |
× |
d1'+a2' |
0 |
0 |
d4' |
|
Повторювати процедуру (кроки 1-4) доти, поки призначення не стане можливим.
