Оптимизация алгоритма календарного планирования с помощью динамического программирования
- Authors: 1
-
Affiliations:
- Тольяттинский государственный университет
- Issue: Vol 1 (2024)
- Pages: 390-391
- Section: ЧАСТЬ I. Цифровые технологии: настоящее и будущее
- URL: https://vietnamjournal.ru/osnk-sr2024/article/view/631333
- ID: 631333
Cite item
Full Text
Abstract
Обоснование. Решение задачи составления плана регулирования численности рабочих на последующие n месяцев имеет большое практическое значение.
Цель — на основе метода динамического программирования (ДП) разработать программный продукт для решения задачи календарного планирования рабочего графика.
Методы. Поставленная задача о календарном планировании рабочего графика в данной работе решается методом динамического программирования. Метод ДП — это алгоритмический подход к решению оптимизационных задач. Он основан на принципе разбиения составной задачи на отдельные подзадачи и использовании комбинаций их решений для получения оптимального результата.
Решим задачу менеджмента. Предположим, что предпринимателю необходимо составить план регулирования численности рабочих на последующие n месяцев, при котором затраты на найм, увольнение и содержание лишних рабочих будут минимальными.
Введем обозначения:
xi — количество рабочих, которые работают в месяце i; ai — минимальное количество рабочих, необходимых в месяце i; fi(xi–1) — оптимальные затраты в месяце i, денежных единиц.
Результатом решения рассматриваемой задачи является вектор x*= (x*1, x*2, ... x*n), компоненты которого равны оптимальному количеству рабочих в текущем месяце.
Убытки предпринимателя на содержание лишних рабочих Uл(xi – ai) можно представить в виде функциональной зависимости:
Uл(xi – ai) = 4(xi – ai) (i = 1; n). (1)
Расходы на найм и увольнение рабочих Uн(xi – xi–1) можно представить в виде:
(2)
Составим рекуррентные формулы (уравнение Беллмана) для вычисления функции цели:
f6(x5) = min {Uл(x6 – a6) + Uн(x6 – x5)}; (3)
fi(xi–1) = min {Uл(xi – ai) + Uн(xi – xi–1) + fi+1(xi)} (i = 1; n) (4)
Алгоритм решения реализован на языке C++.
При решении задачи методом ДП построение алгоритма начинаем с последнего месяца, двигаясь по месяцам в обратном порядке. Для каждого из месяцев рассчитываются и запоминаются значения оптимальных затрат и оптимального количества рабочих, с учетом возможной численности рабочих в следующем месяце. На первом шаге считаем только сумму затрат на найм и увольнение, а также затрат на содержание лишних рабочих. Начиная со второго шага к полученной сумме прибавляем затраты следующего месяца. Таким образом, на начало первого месяца остается единственный вариант, соответствующий минимальному значению суммарных затрат за первый месяц и все последующие. Используя обратный ход, получаем последовательность управлений начиная с первого месяца и до начала последнего месяца, т. е. за весь рассматриваемый период.
В таблице 1 представлен последний этап реализации алгоритма, оптимизации в целом.
Таблица 1. Оптимальные значения в первом месяце
x0 | a1 = 6 | Оптимальное решение | ||||
Uл(xi – ai) + Uн(x1 – x0) + f2(x1) | ||||||
x1 = 6 | x1 = 7 | x1 = 8 | x1 = 9 | f1(x0) | x1* | |
6 | 0+0+30 | 4+8+22 | 8+11+22 | 12+14+19 | 30 | 6 |
Оценку сложности вычислений алгоритма методом ДП по временным затратам можно описать формулой (5):
O(n(max – min)2). (5)
Для сравнения построен алгоритм, который перебирает все возможные последовательности численности рабочих в каждом месяце по порядку и находит среди них ту, при которой суммарные затраты будут минимальными.
Оценку сложности вычислений алгоритма перебора по временным затратам можно описать формулой (6):
O((max – min)n). (6)
Результаты. Для сравнения эффективности алгоритмов вычислили количество вызовов функций подсчета затрат, которые соответствуют формулам 1 и 2.
Результаты решения методом ДП и перебором выведены на рис. 1 и 2 в соответствующем порядке.
Рис. 1. Листинг алгоритма на основе метода ДП
Рис. 2. Результаты работы алгоритмов
Выводы. Результаты показывают, что для решения задачи перебором всех вариантов было произведено значительно больше вычислений.
Таким образом, применение метода ДП значительно увеличивает скорость решения задачи календарного планирования.
Full Text
Обоснование. Решение задачи составления плана регулирования численности рабочих на последующие n месяцев имеет большое практическое значение.
Цель — на основе метода динамического программирования (ДП) разработать программный продукт для решения задачи календарного планирования рабочего графика.
Методы. Поставленная задача о календарном планировании рабочего графика в данной работе решается методом динамического программирования. Метод ДП — это алгоритмический подход к решению оптимизационных задач. Он основан на принципе разбиения составной задачи на отдельные подзадачи и использовании комбинаций их решений для получения оптимального результата.
Решим задачу менеджмента. Предположим, что предпринимателю необходимо составить план регулирования численности рабочих на последующие n месяцев, при котором затраты на найм, увольнение и содержание лишних рабочих будут минимальными.
Введем обозначения:
xi — количество рабочих, которые работают в месяце i; ai — минимальное количество рабочих, необходимых в месяце i; fi(xi–1) — оптимальные затраты в месяце i, денежных единиц.
Результатом решения рассматриваемой задачи является вектор x*= (x*1, x*2, ... x*n), компоненты которого равны оптимальному количеству рабочих в текущем месяце.
Убытки предпринимателя на содержание лишних рабочих Uл(xi – ai) можно представить в виде функциональной зависимости:
Uл(xi – ai) = 4(xi – ai) (i = 1; n). (1)
Расходы на найм и увольнение рабочих Uн(xi – xi–1) можно представить в виде:
(2)
Составим рекуррентные формулы (уравнение Беллмана) для вычисления функции цели:
f6(x5) = min {Uл(x6 – a6) + Uн(x6 – x5)}; (3)
fi(xi–1) = min {Uл(xi – ai) + Uн(xi – xi–1) + fi+1(xi)} (i = 1; n) (4)
Алгоритм решения реализован на языке C++.
При решении задачи методом ДП построение алгоритма начинаем с последнего месяца, двигаясь по месяцам в обратном порядке. Для каждого из месяцев рассчитываются и запоминаются значения оптимальных затрат и оптимального количества рабочих, с учетом возможной численности рабочих в следующем месяце. На первом шаге считаем только сумму затрат на найм и увольнение, а также затрат на содержание лишних рабочих. Начиная со второго шага к полученной сумме прибавляем затраты следующего месяца. Таким образом, на начало первого месяца остается единственный вариант, соответствующий минимальному значению суммарных затрат за первый месяц и все последующие. Используя обратный ход, получаем последовательность управлений начиная с первого месяца и до начала последнего месяца, т. е. за весь рассматриваемый период.
В таблице 1 представлен последний этап реализации алгоритма, оптимизации в целом.
Таблица 1. Оптимальные значения в первом месяце
x0 | a1 = 6 | Оптимальное решение | ||||
Uл(xi – ai) + Uн(x1 – x0) + f2(x1) | ||||||
x1 = 6 | x1 = 7 | x1 = 8 | x1 = 9 | f1(x0) | x1* | |
6 | 0+0+30 | 4+8+22 | 8+11+22 | 12+14+19 | 30 | 6 |
Оценку сложности вычислений алгоритма методом ДП по временным затратам можно описать формулой (5):
O(n(max – min)2). (5)
Для сравнения построен алгоритм, который перебирает все возможные последовательности численности рабочих в каждом месяце по порядку и находит среди них ту, при которой суммарные затраты будут минимальными.
Оценку сложности вычислений алгоритма перебора по временным затратам можно описать формулой (6):
O((max – min)n). (6)
Результаты. Для сравнения эффективности алгоритмов вычислили количество вызовов функций подсчета затрат, которые соответствуют формулам 1 и 2.
Результаты решения методом ДП и перебором выведены на рис. 1 и 2 в соответствующем порядке.
Рис. 1. Листинг алгоритма на основе метода ДП
Рис. 2. Результаты работы алгоритмов
Выводы. Результаты показывают, что для решения задачи перебором всех вариантов было произведено значительно больше вычислений.
Таким образом, применение метода ДП значительно увеличивает скорость решения задачи календарного планирования.
About the authors
Тольяттинский государственный университет
Author for correspondence.
Email: semen-fofanov213@yandex.ru
студент
Russian Federation, Тольятти