Автор работы: Пользователь скрыл имя, 10 Декабря 2011 в 21:15, курсовая работа
Математическая постановка задачи.
Дана неотрицательная матрица размера n×n, где элемент в i-й строке и j-ом столбце соответствует объемам продаж в j-м магазине i-м продавцом. Нужно найти такое соответствие работников магазинам, чтобы максимизировать объем продаж.
Тестовый пример.
1. Постановка задачи ……………………………………………………………..2
2. Описание алгоритма …………………………………………………………...3
3. Решение поставленной задачи……………………………………………….. 6
4. Выводы по проделанной работе ……………………………………………..14
5. Список использованной литературы……………………………………….. 15
Содержание
1. Постановка
задачи ……………………………………………………………
2. Описание
алгоритма ……………………………………………………
3. Решение
поставленной задачи……………………………
4. Выводы по
проделанной работе ……………………………
5. Список
использованной литературы……………
1.
Постановка задачи
Математическая постановка
Дана
неотрицательная матрица
Тестовый пример.
В распоряжении
компании имеется семь торговых точек
и семь продавцов. В течение нескольких
месяцев продавцы менялись рабочими
местами и в конце концов коммерческий
директор компании провел сравнение эффективности
работы каждого продавца в каждой из семи
рабочих точек исходя из количества проданных
продуктов. Выяснилось, что эффективность
работы в продавцов в разных торговых
точках различна, она показана в следующей
таблице:
Продавец | Торговые точки, объем продаж (тыс.шт.) | ||||||
1 | 2 | 3 | 4 | 5 | 6 | 7 | |
А | 6 | 15 | 8 | 9 | 10 | 2 | 4 |
Б | 9 | 5 | 4 | 10 | 5 | 8 | 14 |
В | 7 | 8 | 3 | 9 | 7 | 6 | 2 |
Г | 5 | 13 | 12 | 4 | 5 | 11 | 13 |
Д | 8 | 10 | 11 | 8 | 9 | 7 | 4 |
Е | 3 | 7 | 9 | 7 | 5 | 6 | 3 |
Ж | 4 | 5 | 6 | 10 | 3 | 8 | 5 |
Как нужно
распределить продавцов по торговым
точкам, чтобы добиться максимального
объема продаж?
2.
Описание алгоритма
Венгерский алгоритм —
Венгерский алгоритм может
Венгерский алгоритм состоит
из 3х этапов:
Этап 1:
После
этого получаем приведенную матрицу,
т.е. такую матрицу, в каждой строке и каждом
столбце которой есть хотя бы один ноль.
Полученная матрица будет эквивалентна
исходной задаче и оптимальное решение
будет одним и тем же. Сущность Венгерского
метода заключается в продолжении процесса
приведения матрицы до тех пор, пока все
подлежащие распределению единицы не
попадут в клетки с нулевой стоимостью.
Это означает, что итоговое значение приведенной
целевой функции будет равно нулю. Так
как существует ограничение на неотрицательность
переменных, нулевое значение целевой
функции является оптимальным.
Этап 2:
Если некоторое решение является допустимым, то каждой строке и каждому столбцу соответствует только один элемент. Если процесс распределения элементов осуществляется только в клетки с нулевой стоимостью, он приведет к получению минимального значения целевой функции.
Если на данном этапе окажется, что есть несколько нулей, которым не соответствуют назначения и которые являются незачеркнутыми, то необходимо:
Если
окажется, что таблица содержит неучтенные
нули, повторить операции этапа 2. Если
решение является допустимым, т.е. все
элементы распределены в клетки, которым
соответствует нулевое значение, то полученное
решение одновременно является оптимальным.
Если решение является недопустимым, осуществляется
переход к этапу 3.
Этап 3:
В результате
выполнения данных операций в таблице
появится хотя бы один ноль. Необходимо
возвратиться к этапу 2 и повторять алгоритм
до тех пор, пока не будет получено оптимальное
решение.
3.
Решение поставленной
задачи
Венгерский алгоритм предполагает минимизацию
целевой функции. Для решения данной задачи
нужно максимизировать целевую функцию,
что является особым случает Венгерского
алгоритма. Решать такую задачу следует
точно также, как в случае минимизации
целевой функции, согласно трем этапам,
однако сначала все элементы заданной
матрицы умножаются на (-1).
Этап
1
Шаг 1: Умножаем каждый элемент данной таблицы на (-1) :
1 | 2 | 3 | 4 | 5 | 6 | 7 | |
А | -6 | -15 | -8 | -9 | -10 | -2 | -4 |
Б | -9 | -5 | -4 | -10 | -5 | -8 | -14 |
В | -7 | -8 | -13 | -9 | -7 | -6 | -12 |
Г | -5 | -13 | -12 | -4 | -5 | -11 | -13 |
Д | -8 | -10 | -11 | -8 | -9 | -7 | -4 |
Е | -3 | -7 | -9 | -7 | -5 | -6 | -3 |
Ж | -4 | -5 | -6 | -10 | -3 | -8 | -5 |
Шаг 2:
Делаем из данной матрицы приведенную,
т.е. сделаем так, чтобы в каждой строке
и в каждом столбце был хотя бы один нулевой
элемент. В отдельном столбце выписываем
минимальный элемент каждой строки (т.е.
максимальный по абсолютной величине):
1 | 2 | 3 | 4 | 5 | 6 | 7 | min | |
А | -6 | -15 | -8 | -9 | -10 | -2 | -4 | -15 |
Б | -9 | -5 | -4 | -10 | -5 | -8 | -14 | -14 |
В | -7 | -8 | -13 | -9 | -7 | -6 | -12 | -13 |
Г | -5 | -13 | -12 | -4 | -5 | -11 | -13 | -13 |
Д | -8 | -10 | -11 | -8 | -9 | -7 | -4 | -11 |
Е | -3 | -7 | -9 | -7 | -5 | -6 | -3 | -9 |
Ж | -4 | -5 | -6 | -10 | -3 | -8 | -5 | -10 |
Шаг 3: Вычитаем минимальный элемент из каждого элемента соответствующей строки, получим:
1 | 2 | 3 | 4 | 5 | 6 | 7 | |
А | 9 | 0 | 7 | 6 | 5 | 13 | 11 |
Б | 5 | 9 | 10 | 4 | 9 | 6 | 0 |
В | 6 | 5 | 0 | 4 | 6 | 7 | 1 |
Г | 8 | 0 | 1 | 9 | 8 | 2 | 0 |
Д | 3 | 1 | 0 | 3 | 2 | 4 | 7 |
Е | 6 | 2 | 0 | 2 | 4 | 3 | 6 |
Ж | 6 | 5 | 4 | 0 | 7 | 2 | 5 |
Шаг 4: В отдельной строке выписываем минимальный элемент каждого столбца:
1 | 2 | 3 | 4 | 5 | 6 | 7 | |
А | 9 | 0 | 7 | 6 | 5 | 13 | 11 |
Б | 5 | 9 | 10 | 4 | 9 | 6 | 0 |
В | 6 | 5 | 0 | 4 | 6 | 7 | 1 |
Г | 8 | 0 | 1 | 9 | 8 | 2 | 0 |
Д | 3 | 1 | 0 | 3 | 2 | 4 | 7 |
Е | 6 | 2 | 0 | 2 | 4 | 3 | 6 |
Ж | 6 | 5 | 4 | 0 | 7 | 2 | 5 |
min | 3 | 0 | 0 | 0 | 2 | 2 | 0 |