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

Лабораторная работа № 22 «Решение задач о назначениях»

Теоретическая часть

1 Постановка задачи и математическая формализация условий

Сформулируем задачу о назначениях в общем виде на примере. Имеется n кандидатов (работников) для выполнения n работ. Известны затраты каждого i-го кандидата (i = 1n) на выполнение каждой j-ой работы (j = 1n). Обозначим эти затраты через cij. Они задаются квадратной матрицей.

Требуется распределить кандидатов на работы (найти назначение) так, чтобы суммарные затраты на выполнение работ были бы минимальные. При этом учитываются условия, что каждый кандидат может быть назначен только на одну работу, и каждая работа может быть выполнена только одним кандидатом.

Пусть Хij – переменная. Она может:

  • равняться 1, если i-й кандидат назначается на выполнение j-ой работы,

  • равняться 0 в противном случае.

Условие, что каждый кандидат выполняет только одну работу записывается так:

Условие, что каждая работа может выполняться одним кандидатом записывается так:

Целевая функция задачи имеет вид: .

В целевую функцию будут входить только те значения сij (i = 1n, j = 1n) , для которых Хij = 1. Это означает, что при определении значения целевой функции должны суммироваться только затраты по полученным оптимальным назначениям i-го кандидата на j-ую работу.

В качестве кандидатов могут выступать любые виды ресурсов, а в качестве работ – объекты, на которые эти ресурсы могут быть распределены. Задачи могут решаться не только на минимум целевой функции, но и на максимум.

2 Венгерский алгоритм решения задачи на минимум целевой функции

Задача о назначениях является частным случаем транспортной задачи, в которой ресурсы и потребности равны единице (ai=bj =1, i=j=n). Ее можно решать по алгоритму транспортной задачи, особенностью решения которой в данной постановке являются "базисные нули". Однако, учитывая специфику математической модели, более эффективным методом является венгерский метод.

В венгерском алгоритме решения задачи о назначениях используется принцип, что результат решения не изменяется при уменьшении или увеличении элементов строки (столбца) матрицы затрат на одну и ту же величину. Если обозначить измененные таким образом элементы матрицы затрат через dij (причем dij  0, i = 1n, j = 1n), то оптимальным считается решение, которое состоит из такого набора Хij , что

Венгерский алгоритм решения задачи (на минимум целевой функции)

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

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

  2. Проверка на оптимальность.

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

Если решение не найдено, то переход к пункту 4.

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

  2. Среди невычеркнутых элементов выбирают наименьший.

  3. Этот элемент вычитают из каждого невычеркнутого и прибавляют к каждому элементу, стоящему на пересечении проведенных прямых. Остальные элементы остаются без изменения. Переход к пункту 3.

  4. Запись оптимального решения и определение значения целевой функции.

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

Примечание. Если какой-либо ресурс не может быть назначен на какой-то объект, то соответствующий элемент матрицы затрат равен большому числу М.

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