Оптимизация алгоритма календарного планирования с помощью динамического программирования

Cover Page
  • Authors: 1
  • Affiliations:
    1. Тольяттинский государственный университет
  • 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 месяцев, при котором затраты на найм, увольнение и содержание лишних рабочих будут минимальными.

Введем обозначения:

x— количество рабочих, которые работают в месяце 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) можно представить в виде:

Uнxi-xi-1=5+3xi-xi-1, при xi>xi-1,0, при xixi-1. (i=1;n) (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 месяцев, при котором затраты на найм, увольнение и содержание лишних рабочих будут минимальными.

Введем обозначения:

x— количество рабочих, которые работают в месяце 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) можно представить в виде:

Uнxi-xi-1=5+3xi-xi-1, при xi>xi-1,0, при xixi-1. (i=1;n) (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, Тольятти

Supplementary files

Supplementary Files
Action
1. JATS XML
2. Рис. 1. Листинг алгоритма на основе метода ДП

Download (406KB)
3. Рис. 2. Результаты работы алгоритмов

Download (34KB)

Copyright (c) 2024 Фофанов С.А.

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.