Статья опубликована в рамках: LXVIII Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 01 мая 2019 г.)
Наука: Математика
Скачать книгу(-и): Сборник статей конференции
РЕШЕНИЕ ЗАДАЧИ О НАЗНАЧЕНИЯХ
Введение
Высокий уровень развития технологий, усложнение систем и увеличение их количества привело к появлению задаче создания математической модели принятия оптимальных решений и ее реализация. Решения данной задачи означает создание системы управления различными техническими или человеческими ресурсами, что в современных условиях играет одну из ключевых ролей.
Такая задача получила название - задача о назначениях. Она позволяет решать такие экономико-математические вопросы, как получение наибольшей выгоды с минимальными затратами, путем распределения кандидатов на работы оптимальным образом.
Возможный набор условий, необходимый для решения задачи о назначениях
- Необходимо выполнить n-ое количество работ.
- Привлечь n исполнителей
- Каждый из n исполнителей за определенную плату готов взяться за выполнение любой работы (при невозможности выполнения стоимость для простоты возможно указать максимально возможной за данную работу)
- 1 работа = 1 исполнитель
- Цель - минимальные суммарные затраты на выполнение всех видов работ
По своей сути задача о назначениях является частным случаем транспортной задачи, и ее возможно решить с помощью методов линейного программирования. Но непосредственно для данной постановки задачи существует особый алгоритм – Венгерский метод. Целью данной работы стала программная реализация Венгерского метода и сравнение его с некоторыми существующими реализациями.
Алгоритм основан на двух идеях:
- если из всех элементов некой строки или столбца вычесть одно и то же число Y, общая стоимость уменьшится на Y, а оптимальное решение не изменится;
- если есть решение нулевой стоимости, оно оптимально.
Алгоритм ищет значения, которые надо вычесть из всех элементов каждой строки и каждого столбца (разные для разных строк и столбцов), такие, что все элементы матрицы останутся неотрицательными, но появится нулевое решение.
Математическая постановка задачи
Пусть имеется n рабочих и n работ. Известны затраты pij на выполнение j работы i работником. Необходимо составить план работ так, чтобы все работы были выполнены при минимальных суммарных затратах.
Введем некоторую булеву функцию
Целевая функция pij
При условиях:
- каждая работа должна быть выполнена для каждого вида работ j=1..n
- Каждый работник выполняет не более одной работы для каждого работника I =1..n
Алгоритмизация
- Поиск наименьшего элемента строки i.
- Вычитание найденного минимального элемента из каждого элемента i-той строки
- Поиск наименьшего элемента столбца j.
- Вычитание найденного минимального элемента из каждого элемента j-того столбца.
- В результате выполнения шагов 1,2,3 получается редуцированная матрица.
- Заполнение векторов I, J соответственными нулевыми элементами редуцированной матрицы.
- Если в каждом столбце и в каждой строке найден нулевой элемент, тогда найдено совершенное паросочетание.
- Выбрать нулевые элементы так, чтобы никакие два нуля не находились в одном и том же столбце или строке. Данные элементы входят в паросочетание.
- Выполнить шаги с 1 по 8 пока ни выполнится 6 шаг.
Пример: Директор фирмы K принял решение перераспределить своих действующих менеджеров между отделами для сохранения лояльности к рядовым сотрудникам и сохранению финансового благосостояния компании. Максимально возможная заработная плата - 70 тыс рублей, поэтому для подтверждения невозможности постановку на предыдущую должность у каждого менеджера она отмечается заработной платой в 100 тыс.
Таблица 1.
Исходные данные
Отдел\Менеджер |
Иванов |
Петров |
Сидоров |
Баринов |
По финансам |
100 |
50 |
61 |
65 |
По маркетингу |
54 |
100 |
50 |
70 |
По производству |
63 |
37 |
100 |
57 |
По персоналу |
55 |
49 |
41 |
100 |
1. Ищем минимум для каждой строки (и вычитаем найденный минимум из эл-в строки -> след. таблица)
Таблица 2.
Результаты для первого этапа
Отдел\Менеджер |
Иванов |
Петров |
Сидоров |
Баринов |
По финансам |
100 |
50 |
61 |
65 |
По маркетингу |
54 |
100 |
50 |
70 |
По производству |
63 |
37 |
100 |
57 |
По персоналу |
55 |
49 |
41 |
100 |
2. Ищем минимум для каждого столбца (и вычитаем найденный минимум из эл-в столбца -> след. таблица)
Таблица 3.
Результаты для второго этапа
Отдел\Менеджер |
Иванов |
Петров |
Сидоров |
Баринов |
По финансам |
50 |
0 |
11 |
15 |
По маркетингу |
4 |
50 |
0 |
20 |
По производству |
26 |
0 |
63 |
20 |
По персоналу |
14 |
8 |
0 |
59 |
3. Фиксируем нулевые эл-ты для нахождения оптимального решения
Таблица 4.
Результаты для третьего этапа
Отдел\Менеджер |
Иванов |
Петров |
Сидоров |
Баринов |
По финансам |
46 |
0 |
11 |
[0] |
По маркетингу |
[0] |
50 |
0 |
5 |
По производству |
22 |
[0] |
63 |
5 |
По персоналу |
10 |
8 |
[0] |
44 |
4. Получаем матрицу решений, заменяя все зафиксированные элементы на 1, остальные на 0.
Таблица 5.
Результаты для четвертого этапа
Отдел\Менеджер |
Иванов |
Петров |
Сидоров |
Баринов |
По финансам |
0 |
0 |
0 |
1 |
По маркетингу |
1 |
0 |
0 |
0 |
По производству |
0 |
1 |
0 |
0 |
По персоналу |
0 |
0 |
1 |
0 |
т.о. min затраты -> 54 + 37 + 41 + 65 = 197
Программная реализация и ее анализ.
Был разработан алгоритм для решения поставленной задачи. Для разработки в качестве инструмента использовался компилируемый язык программирования C++. В своей работе мы производим сравнение разработанного алгоритма с работой программы TransTrade интегрированной в такие системы как 1С, АТИ, Почта России и многие другие. Конкретно в данной программе было произведено исследование функции подбора исполнителей. Производилась оценку времени работы при различном количестве входных данных.
Таблица 6.
Результаты скорости работы
Объем входных данных |
Program, мс |
TransTrade,мс |
5 |
29 |
20 |
10 |
35 |
25 |
30 |
245 |
200 |
50 |
630 |
940 |
70 |
1150 |
1500 |
90 |
2350 |
2900 |
100 |
2462 |
3400 |
150 |
5800 |
7400 |
200 |
14500 |
23200 |
Рисунок 1. Графики скорости работы
На основании полученных результатов можно сделать следующие выводы:
- При объеме входных данных менее 30 алгоритм программы TrаnsTrade работает лучше
- При увеличении объема входных данных наш алгоритм обладает более высокой скоростью работы
- Наш алгоритм обладает более высокой стабильностью - значений, при которых работа алгоритма аварийно прекращается, обнаружено не было, в отличие от TrаnsTrade.
Список литературы:
- Диниц Е.А., Крондрл М.А. Один алгоритм решения задачи о назначении./ДАН СССР.-1969.-Т.189.-№1.-С.23-25.
- Флейшман С.Б. Оптимальные назначения специального вида. -М., 1990.-15с. (Препр./АН СССР Ин-т точн. механ. и вычислит. техн. Им. С.А. Лебедева; №2).
Комментарии (4)
Оставить комментарий