Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по мат.прогрм. 2.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
816.64 Кб
Скачать

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 , таких, що xij0 і , то xij=Xij мінімізує також функціонал , де при всіх i і j= 1,…,n...

Теорема 2 (Фробеніуса): Мінімальне число ліній, що покривають усі нулі матриці, дорівнює максимальному числу незалежних нулів у ній.

Незалежним нулем будемо називати єдиний вибраний нуль у рядку та стовпці, на перетині яких він знаходиться. Якщо, крім вибраного незалежного нуля, в рядку або стовпці присутні ще нулі, то їх далі необхідно вважати залежними. Незалежний нуль на місці (i, j) є призначенням і – го завдання на виконання j-м ресурсом.

Фактично наведений метод розв`язку зводиться до перетворень рядків і стовпців за допомогою деяких констант доти, поки достатнє число коефіцієнтів Cij не обернеться на нуль, що дасть шуканий результат.

4.3 Алгоритм розв’язання і розв’язання задачі про призначення

Нехай необхідно розв’язати задачу про призначення 4 завдань на виконання 4 ресурсам, якщо задана матриця витрат часу на виконання кожного завдання кожним ресурсом: .

  1. Приведемо матрицю до такого вигляду, щоб у кожному стовпці й кожному рядку знаходився хоча б один нуль. Для цього знайдемо в кожному рядку матриці мінімальний елемент і віднімемо його з усіх елементів відповідного рядка. Аналогічні перетворення виконаємо також з елементами стовпців.

  1. Якщо після першого кроку можливий вибір чотирьох незалежних нулів, тоді можна стверджувати, що задача розв’язана. Незалежні нулі для зручності будемо позначати (*). При розставленні позначок найкраще вибирати рядок або стовпець, що містять найменшу кількість нулів. У цьому рядку (стовпці) вибираємо нуль, позначаємо його і викреслюємо інші нулі в рядку або стовпці, на перетинанні яких знаходиться вибраний (або незалежний) нуль. Позначки ставимо доти, поки в матриці існують вільні (непозначені або невикреслені) нулі.

У розглянутому прикладі не вдалося відразу ж одержати оптимальне розв’язання, отже, переходимо на виконання третього кроку.

  1. Проведемо мінімальне число горизонтальних і вертикальних ліній, що перетинають, принаймні, один раз усі нулі . Для задач невеликої розмірності візуально легко нанести шукані лінії, для більш складних зручно використати насупний алгоритм:

1. Позначаємо всі рядки, що не містять незалежних нулів.

2. Позначаємо всі стовпці, що містять нуль хоча б в одному позначеному рядку.

3. Позначаємо всі рядки, що містять незалежні нулі в позначених стовпцях.

Кроки 2 і 3 виконуємо доти, поки можливо ставити позначки. Далі викреслюємо непозначені рядки і позначені стовпці.

Якщо виявилося, що кількість ліній дорівнює n ,тоді необхідно повернутися на попередній крок (позначки нулів) і знову вибрати незалежні нулі. Такий варіант можливий, якщо при проставленні позначок 2 або більше нулів у рядку мали «однакове право» бути незалежними.

  1. Серед елементів, через які не пройшла жодна з ліній, вибираємо найменший. Віднімаємо це число зі всіх елементів, через які не пройшла жодна лінія, і додаємо його до всіх елементів, через які проведені дві лінії.

  1. П овертаємося на крок вибору незалежних нулів. У розглянутому прикладі держуємо відразу два оптимальних розв’язання:

1-е завдання  1-й ресурс;

2-е завдання  2-й ресурс (або на 4-й ресурс);

3-е завдання  3-й ресурс;

4-е завдання  4-й ресурс (або на 2-й ресурс).

У результаті такого призначення система виконає всі завдання за 17 умовних одиниць часу.

У тому випадку, якщо необхідно розв’язати задачу отримання максимального значення функції мети, можна скористатися наступною формулою переходу, що слушна для будь-якої задачі лінійного і нелінійного програмування: min (L) = - max (-L) (тобто елементи матриці С домножити на (-1) ).