
- •1 Вступ
- •2 Вибір варіанта завдання
- •3 Транспортна задача
- •3.1 Постановка задачі(т.З.) та ії математична модель
- •3.2 Опорні плани транспортних задач
- •3.3 Методи визначення початкових опорних планів
- •Метод мінімального елемента.
- •3.4 Метод потенціалу
- •3.5 Типове розв’язання т.З.
- •3.6 Питання по темі
- •3.7 Завдання для контрольних і самостійних робіт
- •4 Задача вибору або задача про призначення.
- •4.1 Постановка задачі про призначення та ії математична модель
- •4.2 Основні теореми для розв’язання задачі про призначення
- •4.3 Алгоритм розв’язання і розв’язання задачі про призначення
- •4.4 Запитання з теми
- •4.5 Завдання для контрольних і самостійних робіт
- •5 Цілочислове програмування
- •Постановка задачі цілочислове програмування
- •5.2 Коротка характеристика методів рішення з.Ц.П.
- •5.3 Геометрична ілюстрація методу Гомори
- •5.4 Аналітичне подання методу Гомори
- •5.5 Запитання з теми
- •5.6 Завдання для контрольної та самостійної робіт
- •6 Список літератури
- •Кременчук - 2005
4 Задача вибору або задача про призначення.
Транспортна задача і задача про призначення належать до одного різновиду розподільних задач, але методика їх розв`язку різна.
4.1 Постановка задачі про призначення та ії математична модель
У конструкторському бюро потрібно розробити проект машини, що складається із n вузлів. До їх розробки можна залучити n конструкторів. Відомий час, що витрачається кожним конструктором на розробку будь-якого вузла. Потрібно визначити, хто і який вузол машини повинен проектувати, щоб сумарний час проектування всієї машини був мінімальним.
Побудуємо математичну модель задачі.
Нехай xij=1 це розробка i-им конструктором j-го вузла машини,а xij=0 – це розробка i-им конструктором j-го вузла машини, сij – витрати часу на цю розробку, i,j=1,…,n.Тоді функцією мети L буде функція сумарних витрат на проектування всієї машини .
Математична модель має вигляд:
Функція
мети
min (max)
Система
граничних умов:
3.
,
якщо i - й ресурс призначений на виконання
j - й роботи; 0 - інакше.
Для розв`язку задачі про призначення застосовується угорський метод, що грунтується на двох теоремах.
4.2 Основні теореми для розв’язання задачі про призначення
Теорема
1:
Якщо xij=Xij мінімізує
зі
всіх xij , таких, що xij0
і
,
то xij=Xij мінімізує також функціонал
,
де
при всіх i і j= 1,…,n...
Теорема 2 (Фробеніуса): Мінімальне число ліній, що покривають усі нулі матриці, дорівнює максимальному числу незалежних нулів у ній.
Незалежним нулем будемо називати єдиний вибраний нуль у рядку та стовпці, на перетині яких він знаходиться. Якщо, крім вибраного незалежного нуля, в рядку або стовпці присутні ще нулі, то їх далі необхідно вважати залежними. Незалежний нуль на місці (i, j) є призначенням і – го завдання на виконання j-м ресурсом.
Фактично наведений метод розв`язку зводиться до перетворень рядків і стовпців за допомогою деяких констант доти, поки достатнє число коефіцієнтів Cij не обернеться на нуль, що дасть шуканий результат.
4.3 Алгоритм розв’язання і розв’язання задачі про призначення
Нехай
необхідно розв’язати задачу про
призначення 4 завдань на виконання 4
ресурсам, якщо задана матриця витрат
часу на виконання кожного завдання
кожним ресурсом:
.
Приведемо матрицю до такого вигляду, щоб у кожному стовпці й кожному рядку знаходився хоча б один нуль. Для цього знайдемо в кожному рядку матриці мінімальний елемент і віднімемо його з усіх елементів відповідного рядка. Аналогічні перетворення виконаємо також з елементами стовпців.
Якщо після першого кроку можливий вибір чотирьох незалежних нулів, тоді можна стверджувати, що задача розв’язана. Незалежні нулі для зручності будемо позначати (*). При розставленні позначок найкраще вибирати рядок або стовпець, що містять найменшу кількість нулів. У цьому рядку (стовпці) вибираємо нуль, позначаємо його і викреслюємо інші нулі в рядку або стовпці, на перетинанні яких знаходиться вибраний (або незалежний) нуль. Позначки ставимо доти, поки в матриці існують вільні (непозначені або невикреслені) нулі.
У розглянутому прикладі не вдалося відразу ж одержати оптимальне розв’язання, отже, переходимо на виконання третього кроку.
Проведемо мінімальне число горизонтальних і вертикальних ліній, що перетинають, принаймні, один раз усі нулі . Для задач невеликої розмірності візуально легко нанести шукані лінії, для більш складних зручно використати насупний алгоритм:
1. Позначаємо всі рядки, що не містять незалежних нулів.
2. Позначаємо всі стовпці, що містять нуль хоча б в одному позначеному рядку.
3. Позначаємо всі рядки, що містять незалежні нулі в позначених стовпцях.
Кроки 2 і 3 виконуємо доти, поки можливо ставити позначки. Далі викреслюємо непозначені рядки і позначені стовпці.
Якщо виявилося, що кількість ліній дорівнює n ,тоді необхідно повернутися на попередній крок (позначки нулів) і знову вибрати незалежні нулі. Такий варіант можливий, якщо при проставленні позначок 2 або більше нулів у рядку мали «однакове право» бути незалежними.
Серед елементів, через які не пройшла жодна з ліній, вибираємо найменший. Віднімаємо це число зі всіх елементів, через які не пройшла жодна лінія, і додаємо його до всіх елементів, через які проведені дві лінії.
П
овертаємося на крок вибору незалежних нулів. У розглянутому прикладі держуємо відразу два оптимальних розв’язання:
1-е завдання 1-й ресурс;
2-е завдання 2-й ресурс (або на 4-й ресурс);
3-е завдання 3-й ресурс;
4-е завдання 4-й ресурс (або на 2-й ресурс).
У результаті такого призначення система виконає всі завдання за 17 умовних одиниць часу.
У тому випадку, якщо необхідно розв’язати задачу отримання максимального значення функції мети, можна скористатися наступною формулою переходу, що слушна для будь-якої задачі лінійного і нелінійного програмування: min (L) = - max (-L) (тобто елементи матриці С домножити на (-1) ).