Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Optimizatsia_inzhenernykh_resheniy.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.27 Mб
Скачать

Работа №6. Планирование рабочей силы

Число рабочих, необходимых для выполнения какого-либо проекта, регулируется путем их найма и увольнения. Поскольку как наем, так и увольнение рабочих связано с дополнительными затратами, необходимо определить, как должна регулироваться численность рабочих в период реализации проекта.

Предположим, что проект будет выполняться в течение n недель и минимальная потребность в рабочей силе на протяжении i-й недели составит bi рабочих. При идеальных условиях хотелось бы на протяжении i-й недели иметь в точности bi рабочих. Однако в зависимости от стоимостных показателей может быть более выгодным отклонение численности рабочей силы как в одну, так и в другую сторону от минимальных потребностей. Если xi – количество работающих на протяжении i-й недели, то возможны затраты двух видов:

C1(xibi) – затраты, связанные с необходимостью содержать избыток xibi рабочей силы

C2(xixi-1) – затраты, связанные с необходимостью дополнительного найма xixi-1 рабочих.

Элементы модели динамического программирования определяются следующим образом.

Этап i представляется порядковым номером недели i, i = 1,2,..., n.

Вариантами решения на i-м этапе являются значения xi – количество работающих на протяжении i-й недели.

Состоянием на i-м этапе является xi-1 – количество работающих на протяжении (i – 1)-й недели (этапа).

Рекуррентное уравнение динамического программирования представляется в виде

,i = 1, 2, …, n,

где fn+1(xn)  0

Вычисления начинаются с этапа n при хn = bn и заканчиваются на этапе 1.

Пример 1. Для реализации проекта строительный подрядчик определил минимальные потребности в рабочей силе на ближайшие пять недель следующим образом: 5, 7, 8, 4 и 6 рабочих соответственно. Содержание избытка рабочей силы обходится подрядчику в 300 долларов за одного рабочего в неделю, а наем рабочей силы на протяжении одной недели обходится в 400 долларов (независимо от количества принимаемых на работу человек) плюс 200 долларов за обучение одного нового рабочего в неделю.Необходимо определить, каким образом должна регулироваться численность рабочих в период реализации проекта. Задачу решить методом динамического программирования.

Решение. Выражая затраты в сотнях долларов, имеем:

b1=5, b2=7, b3=8, b4=4, b5=6,

C1(xi-bi)=3(xi-bi), xi>bi, i=1, 2, 3, 4, 5,

C2(xi-xi-1)=4+2(xi-xi-1), xi>xi-1, , i=1, 2, 3, 4, 5.

Решение задачи начинаем с последнего (5-го этапа). По условию на этом этапе должно работать 6 работников. На предыдущем этапе в штате могло быть 4 (необходимый минимум), 5 или 6 работников (с учетом численности на 5-ом этапе).

Этап 5. (b5=6)

Табл.6.1

x4

С1(х5-6)+С2(х5-х4)

Опт.решение

х5 = 6

f5(x4)

x5*

4

3(0)+4+2(2)=8

8

6

5

3(0)+4+2(1)=6

6

6

6

3(0)+0=0

0

6

На четвертом этапе должно работать 4 работника, однако, учитывая, что на следующем этапе потребуется 6 исполнителей, в штате может быть 4, 5 или 6 человек. Поэтому в таблице 6.1х4 = 4, 5, 6.

Этап 4. (b4=4) Табл.6.2

x3

С1(х4-4)+С2(х4-х3)+ f5(x4)

Опт.решение

х4 = 4

х4 = 5

х4 = 6

f4(x3)

x4*

8

3(0)+0+8=8

3(1)+0+6=9

3(2)+0+0=6

6

6

На третьем этапе должно работать максимальное число (8) работников. Поэтому в таблице 6.2х3 = 8.

Этап 3. (b3=8)

Табл.6.3

x2

С1(х3-8)+С2(х3-х2)+ f4(x3)

Опт.решение

х3 = 8

f3(x2)

x3*

7

3(0)+4+2(1)+6=12

12

8

8

3(0)+0+6=6

6

8

На втором этапе в штате может быть 7 исполнителей (необходимый минимум) или 8 исполнителей (с учетом потребностей следующего этапа). Поэтому в таблице 6.3х2 = 7, 8.

Этап 2. (b2=7)

Табл.6.4

x1

С1(х2-7)+С2(х2-х1)+ f3(x2)

Опт.решение

х2 = 7

х2 = 8

f2(x1)

x2*

5

3(0)+4+2(2)+12=20

3(1)+4+2(3)+6=19

19

8

6

3(0)+4+2(1)+12=18

3(1)+4+2(2)+6=17

17

8

7

3(0)+0+12=12

3(1)+4+2(1)+6=15

12

7

8

3(0)+0+12=12

3(1)+0+6=9

9

8

На первом этапе, соответствующем началу выполнения проекта, в штат может быть зачислено от 5 до 8 исполнителей.

Поиск оптимального решения начинаем с табл. 6.5, из которой следует, что перед началом работ необходимо нанять 5 рабочих (последний столбец табл. 6.5). Далее в табл. 6.4 в первом столбце находим строку, соответствующую 5-ти рабочим на первом этапе. В последнем столбце табл. 6.4 этой строки х2 = 8. Следовательно, на втором этапе в штате должно быть 8 рабочих, поэтому дополнительно принимается 3 рабочих. Переходим к табл. 6.3. В строке этой таблицы, соответствующей 8-ми рабочим имеем х3 = 8. Отсюда следует, что на третьем этапе численность рабочих в штате остается неизменной. Переходим к табл. 6.2, из которой следует, что х4 = 6. Поэтому двое рабочих получают расчет. И наконец, из табл.6.1 находим х5 = 6.

Этап 1. (b1=5)

Табл.6.5

x0

С1(х1-5)+С2(х1-х0)+ f2(x1)

Оптимальное

решение

х1 = 5

х1 = 6

х1 = 7

х1 = 8

f1(x0)

x1*

0

3(0)+4+

+2(5)+

+19=33

3(1)+4+

+2(6)+

+17=36

3(2)+4+

+2(7)+

+12=36

3(3)+4+

+2(8)+

+9=38

33

5

Процесс нахождения оптимального решения можно представить следующей схемой:

Полученному решению соответствует следующий план.

Табл.6.6

Неделя

Требуется рабочих

Фактически

рабочих

Решение

1

5

5

Нанять 5 рабочих

2

7

8

Нанять 3 рабочих

3

8

8

Ничего не менять

4

4

6

Уволить 2 рабочих

5

6

6

Ничего не менять

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

Открыть рабочий лист Excel и ввести исходные данные в соответствии с таблицей 6.7.

Табл.6.7

Диапазон

Исходные данные

B2:F2

Номер недели

B3:F3

Необходимое кол-во рабочих

A2

Стоимость найма рабочих

A3

Стоимость обучения одного рабочего

A4

Стоимость содержания одного лишнего рабочего

А5:А9

Возможное число рабочих

B11:F11

Номер недели

А12:А16

Возможное число рабочих

В диапазон ячеек B4:F4 ввести максимально возможное число рабочих. Поскольку на третьей неделе потребуется 5 человек допустимо принять их в начале первой недели и сохранять до конца третьей недели. На 4-й и 5-й неделе в штате может быть шесть человек. Исходя из этих соображений, заполнить диапазон ячеек B4:F4. В результате рабочий лист будет иметь вид, показанный на рис.6.1.

A

B

C

D

E

F

G

1

2

4

1

2

3

4

5

3

2

5

7

8

4

6

4

3

8

8

8

6

6

5

4

6

5

7

6

8

7

9

8

10

11

1

2

3

4

5

12

4

13

5

14

6

15

7

16

8

Рис. 6.1 Рабочий лист Excel с исходными данными задачи о планировании рабочей силы

Поместить мышь в ячейку A2, нажать правую кнопку и, не отпуская ее, перетянуть в ячейку F16, выделив таким образом диапазон ячеек A2:F16 (на рис.6.1 обозначен пунктиром)

Выбрать команду Вставка Þ ИмяÞ Присвоить. Появится диалоговое окно Присвоение имени. Ввести имя диапазона (напримерRS) в поле Имя.

Щелкнуть на кнопке ОК, чтобы выйти из диалогового окна. Теперь диапазону присвоено имя для ссылок.

Выбрать команду Сервис Þ Макрос Þ Макросы. Появится диалоговое окно Макрос. Ввести имя макроса (например Rabota) в поле Имя макроса и щелкнуть на кнопкеСоздать. Появится отдельное программное окно VisualBasic.

Между появившимися в окне строками SubRabota () и EndSub ввести текст процедуры (рис.6.2)

Sub Rabota()

Dim Z As Range

Set Z = Range("RS")

n = Z.Columns.Count: m = (Z.Rows.Count - 5) \ 2

c1 = Z.Cells(1, 1): c2 = Z.Cells(2, 1): c3 = Z.Cells(3, 1)

For k = n To 2 Step -1

b = Z.Cells(2, k): ii = 0: ik = 0

If k > 2 Then

ii = Z.Cells(2, k - 1): ik = Z.Cells(3, k - 1)

End If

jj = Z.Cells(2, k): jk = Z.Cells(3, k)

For i = ii Toik

mins = 9999: Sum = 0

For j = jj To jk

If k < n Then Sum = Z.Cells(j, k + 1)

If j > b Then Sum = Sum + c3 * (j - b)

If j >i Then Sum = Sum + c1 + c2 * (j - i)

If mins > Sum Then

mins = Sum: jmin = j

End If

Next j

If k = 2 Then i = jmin

Z.Cells(i + m + 2, k) = jmin

Z.Cells(i, k) = mins

Next i

Nextk

EndSub

Рис.6.2 Процедура определения оптимальной стратегии в задаче управления трудовыми ресурсами

Вернуться на рабочий лист Excel и выполнить команду Сервис Þ Макрос Þ Макросы. Появится диалоговое окно Макрос. Убедится, что в поле Имя макроса название вашей процедуры Pributok и щелкнуть на кнопкеВыполнить. Исходные данные будут дополнены результатами решения (рис. 3).

A

B

C

D

E

F

G

1

2

4

1

2

3

4

5

3

2

5

7

8

4

6

4

3

8

8

8

6

6

5

4

8

6

5

33

19

6

7

6

17

0

8

7

12

12

9

8

9

6

6

10

11

 

1

2

5

4

5

12

4

6

13

5

5

8

6

14

6

8

6

15

7

7

8

16

8

8

8

6

17

Рис.6.3Результаты решения задачи управления трудовыми ресурсами

Диапазон ячеек B5:F8 содержит значения fi(xi-1), соответствующие значениям этих величин в таблицах 6.1 – 6.5. Диапазон ячеек B12:F16 содержит значения хi*, соответствующие значениям этих величин в таблицах 6.1 – 6.5.

Задание. Необходимо определить оптимальный план найма рабочей силы согласно вариантам, представленным в табл.6.8.

Таблица 6.8

№ Варианта

Количество рабочих на недели

1

2

3

4

5

1

8

10

16

10

8

2

20

16

12

20

22

3

4

9

6

6

8

4

12

16

12

16

9

5

10

5

8

10

7

6

15

14

18

12

16

7

35

30

37

32

33

8

22

22

28

26

25

9

32

28

34

30

30

10

8

10

12

8

13

11

15

16

13

11

18

12

21

18

21

16

20

13

3

7

5

9

8

14

12

11

15

10

13

15

18

14

12

15

13