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

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

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

Пусть имеется n работ и n претендентов на их выполнение, которые могут выполнять любую из имеющихся работ. Известны затраты (производительность) ci,j (qi,j) на выполнение i-м работником j-й работы. Цель задачи – найти оптимальное распределение (с минимальными суммарными затратами или максимальной суммарной производительностью) работ среди работников.

Задачу о назначениях n работников на n работ удобно представлять в виде таблицы.

Работы

1

2

3

….

n

Работники

1

с1,1

с1,2

....

....

с1,n

2

с2,1

с2,2

….

....

с2,n

3

….

….

….

....

….

....

….

….

….

....

….

n

сn,1

сn,1

….

....

сn,n

Данная задача имеет следующие ограничения:

- количество работ должно равняться количеству претендентов (равенство можно достичь введением в модель либо фиктивной работы, либо фиктивного работника);

- каждый работник должен быть назначен только на одну работу;

- на каждую работу следует назначить только одного претендента.

Построим математическую модель задачи.

Введем переменные хi,j:

1, если i-й работник назначен на j-ю работу,

хi,j =

0, если i-й работник не назначается на j-ю работу.

Требуется минимизировать (максимизировать) выражение

при соблюдении условий

, i = 1, 2, …, n;

, j = 1, 2, ..., n.

Данные условия означают, что каждый претендент назначается только на одну работу, а на каждую работу назначается только один работник. Таким образом, матрица X = (хi,j) назначений – допустимое решение задачи – содержит в каждом столбце и в каждой строке ровно по одной единице, все остальные элементы матрицы – нули.

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

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

Алгоритм нахождения оптимального назначения максимальной стоимости

1 шаг. В каждом столбце выбрать максимальный элемент.

2 шаг. Пересчитать все элементы каждого столбца по правилу: новое значение элемента столбца = максимальный элемент столбца – старое значение элемента столбца.

3 шаг. Если в каждой строке и в каждом столбце имеется нуль, то переходим к шагу 5.

4 шаг. В каждой строке выбрать минимальный элемент и из каждого элемента строки вычесть соответствующие минимальное значение.

5 шаг. В полученной матрице найти строку или столбец с одним нулем.

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

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

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

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

10 шаг. В оставшейся матрице найти минимальный элемент.

11 шаг. К элементам, лежащим на пересечении вертикальных и горизонтальных прямых, найденный минимальный элемент прибавить.

12 шаг. Из всех невычеркнутых элементов матрицы найденный минимальный элемент вычитается.

13 шаг. Повторить шаги 5–8.

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