Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Алгоритм венгерского метода

Читайте также:
  1. RSVP алгоритммен тарату жүйесіне QoS-көрсеткішінің табу әдістемесі
  2. Алгоритм
  3. Алгоритм введения и изменения заряда точки привязки
  4. Алгоритм визначення рейтингової оцінки
  5. Алгоритм выполнения работы по созданию ТТПК
  6. Алгоритм выполнения.

РЕФЕРАТ

по Теории игр и исследованию операций

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

 

 

Преподаватель Семенкина О.Э.

 

Студент ИМ0903б Бурцев Н.Н.

 

 

Красноярск 2013

 

Описание задачи

Задача о назначениях - вид задачи линейного программирования, с помощью которой решаются вопросы типа: как распределить рабочих по видам работ, чтобы общая выработка была наибольшей, либо минимизировав затраты; как наилучшим образом распределить экипажи самолетов, как назначить людей на различные должности. Является частным случаем классической транспортной задачи. И в связи своей специфичности был разработан эффективный метод, известный как венгерский метод.

 

Математическая постановка задачи

Дана неотрицательная матрица размера n×n, где элемент в i-й строке и j-ом столбце соответствует стоимости выполнения j-ого вида работ i-м работником. Требуется так распределить работников по видам работ, чтобы суммарный эффект от их использования был максимален.

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

 

Алгоритм венгерского метода

ВАЖНО: Под назначением понимаем соответствие между работниками и работами, имеющее нулевую стоимость, после того как мы произвели трансформации, влияющие лишь на общую стоимость работ.

Запишем задачу в матричном виде:

A1 A2 A3 A4
B1 B2 B3 B4
C1 C2 C3 C4
D1 D2 D3 D4

 

 

A, B, C, D – работники, которые должны выполнить работы 1, 2, 3, 4. Элементы таблицы обозначают стоимость выполнения i-ым работником j-ой работы.

 

Шаг 1

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

  A2’   A4’
B1’ B2’ B3’  
  C2’ C3’ C4’
D1’   D3’ D4’

 

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

 

Шаг 2

Часто на первом шаге нельзя произвести назначение. Пример:

  A2’ A3’ A4’
B1’ B2’ B3’  
  C2’ C3’ C4’
D1’   D3’ D4’

 

Работа №1 может быть эффективно (за нулевую стоимость) выполнена как работником A, так и работником C, зато задача 3 не может быть эффективно выполнена никем. В таких случаях мы повторяем шаг 1 для столбцов и вновь проверяем, возможно ли назначение.

 

 

Шаг 3

Во многих случаях мы достигнем желаемого результата уже после шага 2. Но иногда это не так, например:

  A2’ A3’ A4’
B1’ B2’ B3’  
  C2’ C3’ C4’
D1’     D4’

 

Если работник d выполняет работу 2, некому выполнять работу 3, и наоборот.

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

  A2’ A3’ A4’
B1’ B2’ B3’  
  C2’ C3’ C4’
D1’     D4’

 

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

x        
  A2’ A3’ A4’ x
B1’ B2’ B3’    
  C2’ C3’ C4’ x
D1’     D4’  

 

 

Теперь проводим линии через все отмеченные столбцы и неотмеченные строки.

x        
  A2’ A3’ A4’ x
B1’ B2’ B3’    
  C2’ C3’ C4’ x
D1’     D4’  

 

 

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

 

Шаг 4

Из непокрытых линиями элементов матрицы (в данном случае это A2', A3', A4', C2', C3', C4') найти наименьший. Вычесть его из всех не отмеченных строк и прибавить ко всем пересечениям отмеченных строк и столбцов. Так, например, если наименьший элемент из перечисленных равен A2', мы получим:

x        
    A3’-A2’ A4’-A2’ x
B1’+A2’ B2’ B3’    
  C2’-A2’ C3’-A2’ C4’-A2’ x
D1’+A2’     D4’  

 

 

Повторять процедуру (шаги 1-4) до тех пор, пока назначение не станет возможным.

 

Пример

2      
  4    
      11
4      

 

1) Найдем минимальный элемент в каждой строке и вычтем его из каждого элемента данной строки

 

0      
  0    
    5 0
       

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

 

 

x        
        x
         
         
        x

3) Назначение произвести нельзя. Выполняем алгоритм из шага 4. Минимальный элемент из невычеркнуых – 2. Вычтем его из всех неотмеченных. И прибавим к элементам, стоящим на пересечении выделенных строк и столбцов.

 

4) В полученной матрице выполняем назначения.

       
       
       
       

 


Дата добавления: 2015-09-06; просмотров: 268 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Определение коэффициента запаса усталостной прочности при совместном действии изгиба и кручения бруса. Формула Гаффа-Полларда (без вывода).| Служу Отечеству!

mybiblioteka.su - 2015-2024 год. (0.011 сек.)