- •Оглавление
- •Введение
- •Работа №1. Графический метод решения задачи линейного программирования
- •Работа №2. Решение задачи линейного программирования симплекс-методом
- •Работа 3. Задача коммивояжера (метод ветвей и границ)
- •Матрица стоимостей (условные единицы)
- •Редукция строк
- •Редукция столбов
- •Значения АiиВj
- •Значения Фij
- •Преобразованная матрица стоимости
- •Вторая матрица решений
- •Третья матрица решений
- •Матрица стоимости возврата
- •Работа №4. Транспортная задача
- •Работа №5. Нелинейное программирование
- •Работа №6. Планирование рабочей силы
- •Работа №7. Оптимизация замены оборудования на предприятии
- •Варианты задания для выполнения работы
- •Работа №8. Задачи упорядочевания (алгоритм джонса)
- •Алгоритм джонсона для решения задачи упорядочения nх2
- •Варианты для задания №1
- •Варианты для задания №2
- •Вопросы к лабораторной работе №1
- •Список литературных источников
- •«Оптимизация инженерных решений»
- •400131, Г. Волгоград, пр. Им. В. И. Ленина, 28. Корп. 1
Работа №6. Планирование рабочей силы
Число рабочих, необходимых для выполнения какого-либо проекта, регулируется путем их найма и увольнения. Поскольку как наем, так и увольнение рабочих связано с дополнительными затратами, необходимо определить, как должна регулироваться численность рабочих в период реализации проекта.
Предположим, что проект будет выполняться в течение n недель и минимальная потребность в рабочей силе на протяжении i-й недели составит bi рабочих. При идеальных условиях хотелось бы на протяжении i-й недели иметь в точности bi рабочих. Однако в зависимости от стоимостных показателей может быть более выгодным отклонение численности рабочей силы как в одну, так и в другую сторону от минимальных потребностей. Если xi – количество работающих на протяжении i-й недели, то возможны затраты двух видов:
C1(xi – bi) – затраты, связанные с необходимостью содержать избыток xi – bi рабочей силы
C2(xi – xi-1) – затраты, связанные с необходимостью дополнительного найма xi – xi-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 |
|
