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

Download Report

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

Задача о назначениях.
Венгерский метод решения
задачи о назначениях.
Малофеевой Екатерины
гр. ММ-61
Возможные варианты задачи о
назначениях:
Ресурсы
Потребители
Критерий
эффективности
рабочие
Работа (рабочие
места)
Время выполнения
(мин)
автомобили
маршруты
Объём перевозимой
продукции
станки
Работа (участки)
Мин. время или макс.
производительность
Задача о назначениях.
Решим задачу как транспортную:
• Пример: Пусть имеется 4 сотрудника
фирмы, которых необходимо закрепить за
выполнением 4х работ. Известны
производительности каждого из сотрудников
по каждой работе:
2
15
13
4
10 9 7
4 14 8
14 16 11
15 13 19
строим первое опорное решение:
b1=1
a1=1
b2=1
2
b3=1
10
b4=1
9
1
a2=1
7
1
15
4
14
8
14
16
11
1
a3=1
13
0
a4=1
4
0
1
15
13
1
19
1). Проверяем открытая или закрытая
транспортная задача по формуле:
a  b
i
i
4=4 => транспортная задача закрытая
2). Проверяем первое опорное решение на
оптимальность методом потенциалов.
Количество заполненных клеток должно
равняться выражению: m + n-1. если недостаёт
заполненных клеток, то в 1 из пустых клеток
вводим нулевую поставку груза.
4+4-1=7
• Для заполненных клеток выполняется
соотношение: ui + vj = Cij
u1 + v1=2
u1 + v4=7
u2 + v2=4
u3 + v2=14
u3 + v4=11
u4 + v1 =4
u4 + v3=13
u1 =0
u1 =0
u2= -6
u2= -6
u3 = 4
u4 = 2
v1 = 2
v2 = 10
v3 = 11
v4 = 7
Δ12 = 10 – (0 +10) = 10 – 10 = 0
Δ13 = 9 – (0 + 11) = 9 – 11 = -2
Δ21 = 15 – (-6 +2) = 15 + 4 = 19
Δ23 = 14 – (-6 + 11) = 14 – 5 = 9
Δ24 = 8 – (-6 + 7) = 8 – 1 = 7
Δ31 = 13 – ( 4 + 2) = 13 – 6 = 7
Δ33 = 16 – (4 + 11) = 16 – 15 = 1
Δ42 = 15 – (2 + 10) = 15 – 12 = 3
Δ44 = 19 – (2 + 7) = 19 – 9 = 10
• Подсчитаем оценки Δij
свободных клеток по
формуле:
<0
>0
>0
>0
>0
>0
>0
>0
Δij= Cij – (ui + vj)
• Если все Δij не
отрицательны, то план
оптимален. Если же
существуют Δij<0, то
необходимо улучшить
первый опорный план,
перераспределив
поставки.
• Вывод: первый план не является оптимальным. Для
его улучшения найдём клетку с наибольшей по
абсолютной величине отрицательной Δij и составим
цикл перераспределения поставок.
•
Составляем цикл для Δ13:
1-
+
+
1-
1
1
• После перераспределения груза строим новую
таблицу с найденным вторым решением.
Таблица со вторым решением
b1=1
b2=1
a1=1
2
a2=1
15
a3=1
13
a4=1
4
b3=1
b4=1
9
7
4
14
8
14
16
11
15
13
19
10
1
1
0
1
Проверяем решение на оптимальность
u1+v3=9
u1+v4=7
u2+v1=15
u3+v2=4
u3+v2=14
u3+v4=11
u4+v1=4
u1=0
u1= 0
u2= -6
u3= 4
u4= -17
v1= 21
v2= 10
v3= 9
v4= 7
Δ11 = 2 – (0 + 21) = 2 – 21 = - 19
Δ12 = 10 – (0 + 10) = 10 – 10 = 0
Δ23 = 14 – (-6 + 9) = 14 – 3 = 11
Δ24 = 8 – (-6 + 7) = 8 – 1 = 7
Δ31 = 13 – (4 + 21) = 13 – 25 = -12
Δ33 = 16 – (4 + 9) = 16 – 13 = 3
Δ42 = 15 – (-17 + 10) = 15 + 7 = 22
Δ43 = 13 – (-17 + 9) = 13 + 8 = 23
Δ44 = 19 – (-17 + 7) = 19 +10 = 29
Решение не оптимально, т.к. Δ11 <0,
=>составляем цикл для Δ11
<0
=0
>0
>0
<0
>0
>0
>0
>0
• Цикл для Δ11 :
0-
+
0-
1+
0-
0
1
1+
1
• После перераспределения груза строим
новую таблицу с найденным решением.
Таблица с третьим решением.
b1=1
a1=1
b2=1
2
b3=1
10
0
a2=1
b4=1
9
7
14
8
1
15
4
1
a3=1
13
14
11
16
a4=1
4
15
13
1
19
1
Найденный план является оптимальным:
x13=1;x22=1;x34=1;x41=1
L(x) = 9+4+11+4=28 y.e.
Венгерский метод решения
задачи о назначениях.
Алгоритм решения:
1. Решаем задачу на минимум. Цель данного шага –
получение максимально возможного числа нулей в
матрице С. Для этого находим в матрице С в каждой
строке минимальный элемент и вычитаем его из
каждого элемента соответствующей строки.
Аналогично в каждом столбце вычитаем
соответствующий минимальный элемент.
Если задана не квадратная матрица, то делаем её
квадратной, проставляя стоимости равными
максимальному числу в заданной матрице.
2. Если после выполнения первого шага можно
произвести назначения, то есть в каждой строке и
столбце выбрать нулевой элемент, то полученное
решение будет оптимальным. Если назначения
провести не удалось, то переходим к третьему шагу.
3. Минимальным числом прямых вычёркиваем все нули
в матрице и среди не вычеркнутых элементов
выбираем минимальный, его прибавляем к
элементам, стоящим на пересечении прямых и
отнимаем от всех не вычеркнутых элементов. Далее
переходим к шагу 2.
Венгерский метод наиболее эффективен при
решении транспортных задач с целочисленными
объемами производства и потребления.
Пример:
Дана матрица:
2 10 9 7
15 4 14 8
13 14 16 11
4 15 13 19
Решим её венгерским методом.
1.найдём в каждой строке минимальное значение и
вычтем его из каждого элемента данной строки.
2 10 9 7
15 4 14 8
13 14 16 11
4 15 13 19
Получим
матрицу:
0 8 7 5
11 0 10 4
2 3 5 0
0 11 9 15
2.Назначение сотрудников провести нельзя.
Выберем в каждом столбце матрицы минимальный элемент и вычтем его
из каждого элемента данного столбца:
0 8 7 5
11 0 10 4
2 3 5 0
0 11 9 15
0 8
11 0
2 3
0 11
2
5
0
4
5
4
0
15
3.Назначение провести нельзя.
Минимальным числом прямых вычеркнем все нули в матрице.
Среди не вычеркнутых элементов выберем минимальный.
Прибавим его к элементам, стоящим на пересечении прямых
и вычтем из всех не вычеркнутых элементов.
Получим матрицу:
0 8
11 0
2 3
0 11
2
5
0
4
5
4
0
15
0 8
11 0
4 5
0 11
0
3
0
2
3
2
0
13
Назначения проведены:
1й сотрудник выполняет 3ю
работу;
2й-выполняет 2ю работу;
3й-выполняет 4ю работу;
5й-выполняет 1ю работу.