Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЭММ_Часть2_печать.doc
Скачиваний:
42
Добавлен:
03.09.2019
Размер:
5.35 Mб
Скачать

Глава 3.Задача о назначениях

3.1.Постановка задачи о назначениях

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

Имеется n работ и n кандидатов для их выполнения. Затраты i–го кандидата на выполнение jй работы равны (i, j=1,..,n). Каждый кандидат может быть назначен только на одну работу, и каждая работа может быть выполнена только одним кандидатом. Требуется найти назначение кандидатов на работы, при котором суммарные затраты на выполнение работ минимальны.

Запишем формально данную задачу. Пусть переменная, значение которой равно 1, если i–й кандидат выполняет jю работу, и 0 – в противном случае. Тогда условие о том, что каждый кандидат выполняет только одну работу, запишется в виде .

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

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

В функцию входят только те значения (i, j=1,..,n), для которых отличны от 0, т.е. входят затраты, соответствующие назначенным работам.

Математическая модель выглядит следующим образом:

С =

(3.1)

(3.2)

(3.3)

{0;1}

(3.4)

Решить задачу о назначениях – значит найти, удовлетворяющие (3.2) – (3.4) и доставляющие минимум функции (3.1). Задача (3.1) - (3.4) является, очевидно, задачей линейного программирования (целевая функция линейна, ограничения линейны) и может быть решена симплекс – методом. Также задача (3.1)–(3.4) – это транспортная задача, в которой правые части ограничений равны 1, а переменные могут принимать только два значения.

Рассмотрим некоторые задачи, которые можно представить в виде задачи о назначениях.

Пример 3.1:

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

Таблица 44

i

j

Андрей

Боря

Витя

Гена

Дима

Жора

Иван

Костя

Лёня

Аня

3

4

5

2

4

5

3

2

5

Валя

4

4

2

4

5

4

5

5

3

Галя

2

4

3

5

4

5

3

5

5

Даша

3

4

5

5

3

4

4

3

3

Женя

4

5

5

3

4

5

3

5

4

Зина

3

2

3

5

4

5

2

3

5

Ира

5

2

4

3

2

5

3

4

5

Лариса

3

3

2

5

4

4

5

5

4

Нина

4

5

2

3

4

4

3

4

4

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

Для того, чтобы составить матрицу условий задачи, необходимо иметь исходные данные: характеристики работы любого исполнителя на каждой работе, определяющие значение принятого критерия. В рассматриваемых задачах о назначении возможное число допустимых решений N=n!

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

Итак, вместо перебора − математическое моделирование. Для составления математической модели нашей задачи необходимо выполнить следующее: ввести критерий; обозначить искомые величины как переменные; составить ограничения, то есть зависимости между ними. Составление математической модели рассмотрим на примере двух девушек Ани и Вали, и двух парней Андрея и Бориса.

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

Аня + Андрей= ;

Валя + Андрей= ;

Аня + Борис= ;

Валя + Борис= ;

На все искомые переменные , , , , во-первых, накладываем очень важное ограничение. Все эти переменные в результате решений не могут принимать никаких других значений, кроме 0 и 1. Во - вторых, принимаем, что

Перейдем к составлению ограничений: Аня одновременно может танцевать только с одним из двух парней: либо с Андреем, либо с Борисом. Это условие можно записать так: + =1.

Аналогично для Вали: + =1.

Соответственно для Андрея: + =1.

И для Бориса: + =1.

Если эти уравнения записать вместе, то получим систему:

+ =1

+ =1

+ =1

+ =1

Такая задача, в которой число исполнителей и число работ равны двум, имеет два возможных решения, так как N=2!=2.

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

f=3 +4 +4 +4 → max

Где коэффициенты перед переменными − это оценки качества исполнения каждой пары.

Математическую модель рассматриваемой задачи запишем следующим образом:

f=3 +4 +4 +4 → max

+ =1

+ =1

+ =1

+ =1

, ;

(3.5)

Систему (3.5) можно записать короче:

С =

(3.6)

{0;1}

Тогда математическая модель задачи о формировании танцевальных пар будет иметь вид:

С =

(j-й партнер танцует только с одной девушкой)

(i-ая девушка танцует только с одним партнером)

{0;1}

Оптимальное решение приведено в таблице 45.

Таблица 45

i

J

Андрей

Боря

Витя

Гена

Дима

Жора

Иван

Костя

Лёня

Аня

5

Валя

5

Галя

5

Даша

5

Женя

5

Зина

5

Ира

5

Лариса

5

Нина

5

Из таблицы видно, что среди полумиллиона вариантов есть такой, при котором каждая пара получает оценку пять и в сумме каждая пара набирает 55 = 45 очков.

Пример 3.2:

Рассмотрим ситуацию, когда требуется распределить m работ (или исполнителей) по n станкам. Работа i (i =1,2,...,m), выполняемая на станке j (j=1,2,. . . ,n), связанна с затратами . Задача состоит в таком распределении работ по станкам (одна работа выполняется одним станком), которое соответствует минимуму суммарных затрат. Такая задача известна как задача о назначениях.

Эту задачу можно рассматривать как частный случай транспортной задачи. Здесь работы представляют "исходные пункты", а станки - "пункты назначения". Предложение в каждом исходном пункте равно 1, т.е. ai = 1 для всех i. Аналогично спрос в каждом пункте назначения равен 1, т.е. bj = 1 для всех j. Стоимость "перевозки" (прикрепления) работы i к станку j равна . Если какую-либо работу нельзя выполнять на некотором станке, то соответствующая стоимость берется равной очень большому числу M. В табл.46 иллюстрируется общая структура задачи о назначениях.

Таблица 46

Станки

1

2

...

n

1

с11

с12

...

с1n

1

Виды

работ

2

с21

с22

...

с2n

1

...

...

...

...

...

m

сm1

сm2

...

сmn

1

1

1

1

...

1

Прежде чем решать задачу методами, ассоциированными с транспортной моделью, необходимо "ликвидировать" дисбаланс, добавив фиктивные работы или станки в зависимости от начальных условий (m<n или m>n). Поэтому без потери общности можно положить m = n.

Для иллюстрации задачи о назначениях рассмотрим табл. 47 с тремя работами и тремя станками. Исходное решение (полученное по правилу северо-западного угла) будет, очевидно, вырожденным.

Таблица 47

Станки

1

2

3

Виды работ

1

5

7

9

1

1

0

0

2

14

10

12

1

0

1

0

3

15

13

16

1

0

0

1

1

1

1

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

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