Случаи, когда число претендентов не равно количеству мест.
Возможны случаи, когда число рабочих, которых надо распределить на соответствующую работу, меньше (или больше) количества мест. В этом случае, вводятся дополнительные фиктивные рабочие (или рабочие места).
Представим, что один рабочий, например 4, уволился. Тогда нам необходимо расставить трех рабочих, имея четыре вакансии. При этом, конечно, общая цель назначений остается неизменной. Введем условно фиктивного рабочего, характеристики которого будут нулевые, т. е. все
C4j = 0 (j=1, 2, 3, 4). Тогда получается таблица:
Таблица 2.8.6
|
Исполнители |
|||
Задача |
1 |
2 |
3 |
4 |
1 |
48 |
20 |
42 |
22 |
2 |
28 |
44 |
20 |
30 |
3 |
30 |
34 |
40 |
38 |
4 |
0 |
0 |
0 |
0 |
Данная проблема решается так же, как и в общем случае, только мы уже не будем совершать этап 2 (понятно, не правда ли?). Оптимальное решение будет х12 —х23 — х31 =х44=1. Четвертый станок оказался незанятым.
А теперь представим ситуацию, когда число рабочих больше числа станков. Она свидетельствует о том, что один рабочий не будет иметь места. Как произвести назначение в этом случае и кого надо уволить, если цель остается неизменной? Для разрешения этой ситуации вводится фиктивный станок, на котором показатели работы равны нулю. В нашем случае будем считать, что станок 3, например, больше не используется. Это может быть отображено данными следующей таблицы.
Таблица 2.8.7
|
Исполнители |
|||
Задача |
1 |
2 |
3 |
4 |
1 |
48 |
20 |
0 |
22 |
2 |
28 |
44 |
0 |
30 |
3 |
30 |
34 |
0 |
38 |
4 |
22 |
38 |
0 |
26 |
Здесь мы уже не будем выполнять этап 1. Постарайтесь сами получить оптимальное решение х12 = х24 — х33 — х41 = 1.
Случай, когда некоторые назначения невозможны.
Предположим, что некоторые назначения невозможны, например,
второй рабочий не может выполнять работу на третьем станке. В этом случае, так же, как мы поступали в параграфе II. 4, в соответствующую клетку заносится большое число М. Это автоматически приводит к тому, что клетка окажется незанятой в оптимальном решении.
Задача о назначениях на максимум целевой функции.
Если мы столкнулись с проблемой назначения, в которой надо получить максимум целевой функции, то алгоритм венгерского метода имеет некоторые особенности. Прежде всего заметим, что венгерский метод позволяет решить задачи о назначениях на минимум. Для того, чтобы применить этот метод, нужно каким-то образом свести данную задачу на максимум к задаче на минимум целевой функции. В задаче на максимум предпочтительнее выбирать клетки с наибольшими Сij , в то время как в задаче на минимум — клетки с наименьшими Сij. Оптимальное решение получалось в нулевых клетках последней преобразованной матрицы. Рассмотрим особенности этой задачи на конкретном примере.
Пусть Сij — числа, характеризующие прибыль, которую приносит каждый i-ый рабочий, если он работает на j-ом месте. Матрица такой задачи имеет вид:
Таблица 2.8.8
|
Исполнители |
|||
Задача |
1 |
2 |
3 |
4 |
1 |
40 |
29 |
31 |
37 |
2 |
28 |
22 |
41 |
36 |
3 |
32 |
31 |
43 |
41 |
4 |
37 |
34 |
35 |
27 |
Принципиальное отличие задачи на максимум от задачи на минимум заключается в этапе 1. Здесь выбирается наибольший элемент в каждой строке и от него отнимаются все остальные элементы соответствующих строк.
Таблица 2.8.9
|
Исполнители |
|||
Задача |
1 |
2 |
3 |
4 |
1 |
0 |
11 |
9 |
3 |
2 |
13 |
19 |
0 |
5 |
3 |
11 |
12 |
0 |
2 |
4 |
0 |
3 |
2 |
10 |
Элементы таблицы III. 24 уже имеют другой смысл. Это не чистые прибыли, а потери прибыли от максимально возможной. Ясно, что для того, чтобы достичь наибольшей прибыли, необходимо избежать потерь прибыли или, если это не удается, иметь их как можно меньшими. А это значит, что мы от задачи на максимум ( таблица III. 23) перешли к задаче на минимум (таблица III. 24).
В итоге, оптимальное решение данной задачи будет:
x11= x23 = x34 =x42 = 1