Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции-Практики-2012НИТ / Л-5(1 час)Задача о назначениях.doc
Скачиваний:
58
Добавлен:
29.03.2015
Размер:
132.61 Кб
Скачать

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

В данном разделе будет исследоваться частный случай транспорт­ной задачи — задача о назначениях.

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

Цель назначений зависит от реальной ситуации. Это могут быть наименьшие общие затраты, наименьшее общее время выполнения всех работ, получение наибольшей прибыли и т.д.

Пусть Сij — характеристика выполнения i-ым исполнителем j-ого вида работы (i=1, 2, .. . , n; j=1, 2, . ., , n). Обозначим через хij— тип назна­чения i-ого на j-ую работу. Очевидно, что величина х. может принимать только два значения: хij = 1, если i-ый исполнитель назначен на j-ую работу и хij = 0, если i-ый исполнитель не назначен на j-ую работу.

Тогда функция

(2.68)

характеризует выполнение всех видов работ (общая производитель­ность, общее время, суммарные затраты и т. д. ). Очевидно, что функ­ция Z есть не что иное, как целевая функция.

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

i=1,2,…..n. (2.69)

Итак, задача о назначении формулируется следующим образом: Определить переменные хij (i = 1, 2, . . . n; j = 1, 2, . . . , n) таким образом,

чтобы функция (2.68) принимала бы наименьшее (или наибольшее) значение при выпол­нении условий (2.69), при этом решения имеют вид:

хij=0 или хij=1

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

Конечно, задача о назначении (2.68) — (2.69) может быть решена симплекс-методом или любым алгоритмом решения транс­портных задач. Но ее специфичность позволяет использовать специаль­ный алгоритм, который носит название венгерского метода и сразу, же позволяет получить оптимальное решение.

Рассмотрим особенности данного" метода на конкретном примере. Предположим, что требуется 4 -х рабочих закрепить за 4-мя станками таким образом, чтобы суммарное время изготовления деталей было бы минимальным. Известно время, за которое каждый рабочий изго­тавливает деталь на каждом станке. Эти данные приведены в следующей таблице (матрице):

Таблица 2.8.1

Исполнители

Задача

1

2

3

4

1

48

20

42

22

2

28

44

20

30

3

30

34

40

38

4

22

38

28

26

Из приведенных данных следует, что первый рабочий изготавли­вает деталь на 3 станке за 42 минуты, третий рабочий тратит 34 мину­ты на изготовление детали на втором станке и т. д.

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

Алгоритм состоит из следующих этапов:

1. Создается новая матрица путем вычитания из каждого элемента каждой строки наименьшего элемента этой строки. В приведенном примере из всех элементов первой строки необходимо вычесть 20, из всех элементов второй строки вычесть 20, из всех элементов третьей строки вычесть 30, из всех элементов четвертой строки вычесть 22. В результате получается:

Таблица 2.8.2

Исполнители

Задача

1

2

3

4

1

28

0

22

2

2

8

24

0

10

3

0

4

10

8

4

0

16

6

4

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

Таблица 2.8.3

Исполнители

Задача

1

2

3

4

1

28

0

22

0

2

8

24

0

8

3

0

4

10

6

4

0

16

6

2

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

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

Если число таких прямых равно размерности матрицы, то пере­ходим на этап 5.

Если число прямых меньше размерности матрицы, то переходим на этап 4.

В рассмотренном примере (см таблицу III. 18) все нули возможно зачеркнуть тремя прямыми, проведенными по первой, второй стро­кам и первому столбцу, но 3 < 4, что говорит о том, что нужно перейти к этапу 4.

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

Таблица 2.8.4

Исполнители

Задача

1

2

3

4

1

28

0

22

0

2

8

24

0

8

3

0

2

8

4

4

0

16

4

0

Как бы мы не старались, но зачеркнуть все нули возможно только четырьмя прямыми. Число 4 равно размерности матрицы, значит пора переходить на этап 5.

Замечание. Если бы наименьшее число прямых снова оказалось бы меньше размерности матрицы, то этап 4 пришлось бы повторять до тех пор, пока число прямых стало бы равным размерности матрицы.

5. На этом этапе мы получаем оптимальное решение. Нужно рассматривать нулевые элементы. Вспомним, что каждый рабочий должен быть закреплен только за одним станком. Для этого выбирается одна клетка в каждом ряду и каждом столбце. Как это сделать? Рассматриваются, как мы уже отмечали, только нулевые клетки. Выбирается такая нуле­вая клетка, которая является единственной в данном ряду или столб­це и помечается знаком X. В таблице клетки (4, 1), (1, 4), (4, 4) не могут быть выбраны, т. к. эти нули не являются единственными ни в ряду, ни в столбце. Первая нулевая клетка, которая помечается — это (2, 3). Затем помечается клетка (1, 2). Это значит, что мы уже выбрали первый и второй ряды, а также второй и третий столбцы. Иными словами, мы произвели назначение первого рабочего (пер­вый ряд) и второго рабочего на второй и третий станки соответственно. Первый ряд уже выбран, и нулевая клетка (1, 4) больше уже не рас­сматривается. Следовательно, нулевая клетка (4, 4) стали единствен­ной в четвертом столбце. Пометим ее. В результате, ряд 4 не рассмат­ривается, и нулевая клетка (4, 1) "уже не участвует в игре". В первом столбце осталась клетка (3, 1). Заметим, что эта клетка может быть сразу помечена, будучи единственной нулевой клеткой в третьей строке. Назначения произведены следующим образом:

Таблица 2.8.5

Исполнители

Задача

1

2

3

4

1

28

X

22

0

2

8

24

X

8

3

X

4

8

4

4

0

14

4

X

т. е. первый рабочий закреплен за 2-ым станком, второй — за треть­им, третий — за первым и четвертый — за четвертым. Это и есть оптимальное решение:

х1223= х31= х44= 1. Все остальные хij= 0.

Подсчитаем найденное минимальное значение целевой фун­кции (см. таблицу2.8.1):

min Z = 20 + 20 + 26 + 3O = 96.

А теперь подсчитаем общее количество, вычтенное нами на эта­пах 1,2, 4. На этапе 1 мы вычитали 20 + 20 + 30 + 22 =92. На этапе 2 и 4 мы вычитали по 2. Общее количество вычтенного равно 96, т. е. равно минимальному значению целевой функции.

Мы убедились, что венгерский метод позволяет достаточно про­сто находить решение задачи о назначениях, при этом используются только арифметические действия сложения и вычитания.

Задача о назначениях, как частный случай транспортной задачи, может иметь особенности, некоторые из которых мы рассмотрим.