Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Issledovanie_operatsy_kursovaya.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
2.5 Mб
Скачать

1.4. Задача о назначениях

В общем виде задача о назначениях формулируется следующим образом.

Пусть имеются n работ и n кандидатов для их выполнения. Назначению j-го кандидата (j =1, …, n ) на i-ю работу (i =1, …, n ) соответствует определённая эффективность (прибыль, производительность) или затраты какого-либо ресурса сij. Требуется найти такие назначения кандидатов на все работы, которые обеспечат наибольшую эффективность, то есть минимум суммарных затрат или максимум прибыли (производительности). При этом каждого кандидата можно назначить только на одну должность и каждая работа может быть выполнена только одним кандидатом, а число работ равно числу исполнителей.

Математическая постановка задачи имеет вид:

Ц елевая функция задачи примет следующий вид:

∑ ∑ сij xij → min

п ри таких ограничениях

∑ xij =1 (i = 1, ... , n)

∑ xij = 1 (j = 1, ... , n)

1, если i-й кандидат выполняет j-ю работу;

xij = 0 – в противном случае.

Эта задача относится к задаче целочисленного программирования (двоичного), так как искомая переменная задачи xij может принимать только два значения (0 или 1).

Венгерский метод решения задачи о назначениях.

Известны несколько различных методов решения задачи о назначениях, из которых наиболее распространён венгерский метод.

Основная идея этого метода: оптимальность решения задачи не нарушается при уменьшении (увеличении) элементов строки (столбца) на одну и ту же величину.

Алгоритм построен на использовании понятий независимых нулей. Ноль будет являться независимым в матрице в том случае, если он не стоит с другим независимым элементом в одной строке или в одном столбце.

Алгоритм метода включает следующие основные этапы (шаги):

Подготовительный шаг: данные о себестоимости выполнения работ каждым работником записываются в матрицу. Затем в каждой строке этой матрицы находиться минимальный элемент, и вычитается из всех элементов строки. После этого по каждому столбцу находиться минимальный элемент и также вычитается из каждого элемента столбца. Этой операцией достигается то, что в каждой строке и в каждом столбце будет стоять хотя бы один нулевой элемент.

Первый шаг: проверяется число независимый нулей в полученной матрице. Для этой цели каждый ноль вычеркивается из матрицы одной линией. Необходимо вычеркнуть все нули в матрице минимальным числом линий (ноль вычёркивается либо построчно, либо по столбцам). Подсчитывают число линий зачеркивания. Если это число получилось равным n – размерности задач, то это означает, что в полученной матрице получилось n – независимых нулей и решение уже получено. Для окончательной его записи необходимо в матрице вместо независимых нулей поставить единицы, а вместо остальных элементов поставить нули. После этого полученная матрица будет соответствовать искомому решению.

Если независимых нулей будет меньше, чем n, то необходимо перейти ко второму шагу.

Второй шаг: из не зачеркнутых элементов выбирают самый маленький γ и далее строят новую матрицу по следующему правилу.

Из элементов матрицы предыдущего шага:

(0)

(1) Cij – γ - не зачеркнутые;

Cij = Cij - один раз зачеркнутые; (1.1)

Cij + γ - 2 раза зачеркнутые.

Если эти операции не приводят к оптимальному решению, то цикл повторяется, начиная с первого шага до получения оптимума.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]