powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подбор оптимального количества смен.
25 сообщений из 31, страница 1 из 2
Подбор оптимального количества смен.
    #39895511
Yaroslav85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Подскажите, может кто сталкивался.
Нужно придумать расчет оптимального к-ва смен.

Итак что есть:
1. посчитанное к-во необходимого к-ва операторов на каждый час:
DayOfWeek Hour OpNeed1 0 11 1 11 2 11 3 11 4 11 5 11 6 11 7 21 8 41 9 61 10 91 11 91 12 71 13 71 14 61 15 51 16 51 17 61 18 61 19 51 20 51 21 41 22 31 23 22 0 12 1 12 2 12 3 12 4 12 5 12 6 12 7 32 8 102 9 222 10 242 11 242 12 222 13 192 14 192 15 182 16 172 17 142 18 132 19 122 20 92 21 82 22 42 23 23 0 13 1 13 2 13 3 13 4 13 5 13 6 13 7 53 8 133 9 223 10 233 11 223 12 193 13 173 14 173 15 163 16 153 17 133 18 113 19 123 20 93 21 73 22 43 23 24 0 14 1 14 2 14 3 14 4 14 5 14 6 24 7 54 8 124 9 194 10 224 11 214 12 194 13 174 14 174 15 164 16 154 17 144 18 124 19 114 20 94 21 74 22 44 23 25 0 15 1 15 2 15 3 15 4 15 5 15 6 25 7 55 8 125 9 205 10 225 11 225 12 205 13 205 14 195 15 175 16 175 17 135 18 135 19 125 20 105 21 85 22 55 23 36 0 16 1 16 2 16 3 16 4 16 5 16 6 26 7 66 8 126 9 216 10 226 11 246 12 206 13 176 14 166 15 176 16 166 17 136 18 126 19 106 20 76 21 76 22 56 23 37 0 27 1 17 2 17 3 17 4 17 5 17 6 17 7 37 8 77 9 127 10 137 11 137 12 117 13 97 14 87 15 87 16 87 17 77 18 77 19 67 20 57 21 57 22 37 23 2

2. смены операторов:
id Name ShortName hFrom hTo hFromCorrect hTOCorrect1 см1 8-17 8 17 8 172 см2 16-22 16 22 16 223 см3 8-20 8 20 8 204 см4 9-21 9 21 9 215 см5 10-22 10 22 10 226 см6 11-23 11 23 11 237 см7 20-8 20 8 0 24

7-я смена переходит на следующий день
Что в идеале получить:
DayOfWeekidSmenyShortNameNeedSmenCount118-170218-170318-170418-170518-170618-170718-1701216-2202216-2203216-2204216-2205216-2206216-2207216-220138-200238-200338-200438-200538-200638-200738-200149-210249-210349-210449-210549-210649-210749-2101510-2202510-2203510-2204510-2205510-2206510-2207510-2201611-2302611-2303611-2304611-2305611-2306611-2307611-2301720-802720-803720-804720-805720-806720-807720-80

где вместо 0 - оптимальное к-во смен в день
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895560
Remind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавили бы хотябы скрипты с тестовыми данными.
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895593
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Remind
Добавили бы хотябы скрипты с тестовыми данными.

Лучше путь критерий оптимальности огласит.
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895613
Minamoto
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Remind
Добавили бы хотябы скрипты с тестовыми данными.

Лучше путь критерий оптимальности огласит.
Минимальное количество смен при 100%-м перекрытии необходимого количества операторов на каждый час?
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895622
Yaroslav85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Remind
Добавили бы хотябы скрипты с тестовыми данными.

Ссори - первый раз с вопросом тут.
Без проблем:


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
241.
242.
drop table #Smeny
drop table #OperatorsNeed
drop table #Result
SELECT * into #Smeny
 FROM (VALUES
	 (1,N'см1',N'8-17',8,17,8,17)
	,(2,N'см2',N'16-22',16,22,16,22)
	,(3,N'см3',N'8-20',8,20,8,20)
	,(4,N'см4',N'9-21',9,21,9,21)
	,(5,N'см5',N'10-22',10,22,10,22)
	,(6,N'см6',N'11-23',11,23,11,23)
	,(7,N'см7',N'20-8',20,8,0,24)
) as x([id],[Name],[ShortName],[hFrom],[hTo],[hFromCorrect],[hTOCorrect])
Select * from #Smeny
--================================================
SELECT * into #OperatorsNeed

 FROM (VALUES
	 (1,0,1)
	,(1,1,1)
	,(1,2,1)
	,(1,3,1)
	,(1,4,1)
	,(1,5,1)
	,(1,6,1)
	,(1,7,2)
	,(1,8,4)
	,(1,9,6)
	,(1,10,9)
	,(1,11,9)
	,(1,12,7)
	,(1,13,7)
	,(1,14,6)
	,(1,15,5)
	,(1,16,5)
	,(1,17,6)
	,(1,18,6)
	,(1,19,5)
	,(1,20,5)
	,(1,21,4)
	,(1,22,3)
	,(1,23,2)
	,(2,0,1)
	,(2,1,1)
	,(2,2,1)
	,(2,3,1)
	,(2,4,1)
	,(2,5,1)
	,(2,6,1)
	,(2,7,3)
	,(2,8,10)
	,(2,9,22)
	,(2,10,24)
	,(2,11,24)
	,(2,12,22)
	,(2,13,19)
	,(2,14,19)
	,(2,15,18)
	,(2,16,17)
	,(2,17,14)
	,(2,18,13)
	,(2,19,12)
	,(2,20,9)
	,(2,21,8)
	,(2,22,4)
	,(2,23,2)
	,(3,0,1)
	,(3,1,1)
	,(3,2,1)
	,(3,3,1)
	,(3,4,1)
	,(3,5,1)
	,(3,6,1)
	,(3,7,5)
	,(3,8,13)
	,(3,9,22)
	,(3,10,23)
	,(3,11,22)
	,(3,12,19)
	,(3,13,17)
	,(3,14,17)
	,(3,15,16)
	,(3,16,15)
	,(3,17,13)
	,(3,18,11)
	,(3,19,12)
	,(3,20,9)
	,(3,21,7)
	,(3,22,4)
	,(3,23,2)
	,(4,0,1)
	,(4,1,1)
	,(4,2,1)
	,(4,3,1)
	,(4,4,1)
	,(4,5,1)
	,(4,6,2)
	,(4,7,5)
	,(4,8,12)
	,(4,9,19)
	,(4,10,22)
	,(4,11,21)
	,(4,12,19)
	,(4,13,17)
	,(4,14,17)
	,(4,15,16)
	,(4,16,15)
	,(4,17,14)
	,(4,18,12)
	,(4,19,11)
	,(4,20,9)
	,(4,21,7)
	,(4,22,4)
	,(4,23,2)
	,(5,0,1)
	,(5,1,1)
	,(5,2,1)
	,(5,3,1)
	,(5,4,1)
	,(5,5,1)
	,(5,6,2)
	,(5,7,5)
	,(5,8,12)
	,(5,9,20)
	,(5,10,22)
	,(5,11,22)
	,(5,12,20)
	,(5,13,20)
	,(5,14,19)
	,(5,15,17)
	,(5,16,17)
	,(5,17,13)
	,(5,18,13)
	,(5,19,12)
	,(5,20,10)
	,(5,21,8)
	,(5,22,5)
	,(5,23,3)
	,(6,0,1)
	,(6,1,1)
	,(6,2,1)
	,(6,3,1)
	,(6,4,1)
	,(6,5,1)
	,(6,6,2)
	,(6,7,6)
	,(6,8,12)
	,(6,9,21)
	,(6,10,22)
	,(6,11,24)
	,(6,12,20)
	,(6,13,17)
	,(6,14,16)
	,(6,15,17)
	,(6,16,16)
	,(6,17,13)
	,(6,18,12)
	,(6,19,10)
	,(6,20,7)
	,(6,21,7)
	,(6,22,5)
	,(6,23,3)
	,(7,0,2)
	,(7,1,1)
	,(7,2,1)
	,(7,3,1)
	,(7,4,1)
	,(7,5,1)
	,(7,6,1)
	,(7,7,3)
	,(7,8,7)
	,(7,9,12)
	,(7,10,13)
	,(7,11,13)
	,(7,12,11)
	,(7,13,9)
	,(7,14,8)
	,(7,15,8)
	,(7,16,8)
	,(7,17,7)
	,(7,18,7)
	,(7,19,6)
	,(7,20,5)
	,(7,21,5)
	,(7,22,3)
	,(7,23,2)
) as x([DayOfWeek],[Hour],[OpNeed])
Select * from #OperatorsNeed
--=====================================================================
SELECT * into #Result
 FROM (VALUES
	 (1,1,N'8-17',0)
	,(2,1,N'8-17',0)
	,(3,1,N'8-17',0)
	,(4,1,N'8-17',0)
	,(5,1,N'8-17',0)
	,(6,1,N'8-17',0)
	,(7,1,N'8-17',0)
	,(1,2,N'16-22',0)
	,(2,2,N'16-22',0)
	,(3,2,N'16-22',0)
	,(4,2,N'16-22',0)
	,(5,2,N'16-22',0)
	,(6,2,N'16-22',0)
	,(7,2,N'16-22',0)
	,(1,3,N'8-20',0)
	,(2,3,N'8-20',0)
	,(3,3,N'8-20',0)
	,(4,3,N'8-20',0)
	,(5,3,N'8-20',0)
	,(6,3,N'8-20',0)
	,(7,3,N'8-20',0)
	,(1,4,N'9-21',0)
	,(2,4,N'9-21',0)
	,(3,4,N'9-21',0)
	,(4,4,N'9-21',0)
	,(5,4,N'9-21',0)
	,(6,4,N'9-21',0)
	,(7,4,N'9-21',0)
	,(1,5,N'10-22',0)
	,(2,5,N'10-22',0)
	,(3,5,N'10-22',0)
	,(4,5,N'10-22',0)
	,(5,5,N'10-22',0)
	,(6,5,N'10-22',0)
	,(7,5,N'10-22',0)
	,(1,6,N'11-23',0)
	,(2,6,N'11-23',0)
	,(3,6,N'11-23',0)
	,(4,6,N'11-23',0)
	,(5,6,N'11-23',0)
	,(6,6,N'11-23',0)
	,(7,6,N'11-23',0)
	,(1,7,N'20-8',0)
	,(2,7,N'20-8',0)
	,(3,7,N'20-8',0)
	,(4,7,N'20-8',0)
	,(5,7,N'20-8',0)
	,(6,7,N'20-8',0)
	,(7,7,N'20-8',0)
) as x([DayOfWeek],[idSmeny],[ShortName],[NeedSmenCount])
Select * from #Result

...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895628
Yaroslav85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Minamoto
aleks222
пропущено...

Лучше путь критерий оптимальности огласит.
Минимальное количество смен при 100%-м перекрытии необходимого количества операторов на каждый час?


Да - в точку, лучше и не придумаю :)
+ к этому - минимальный перелимит операторов в спокойные часы.
т.е.
если есть выбор между 11 сменами когда средний перелимит операторов по спокойным часам будет в 5 человек и
11 смен, когда их будет 8 - то лучше выбрать вариант, когда будет 5.
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895683
Remind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю можно отталкиваться от этого:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT x.[DayOfWeek], x.id, x.[Name], x.ShortName, MAX(OpsReq) as OpsRequired
FROM
(
  SELECT *, CEILING(OpNeed * 1.0 / COUNT(*) OVER (PARTITION BY o.[DayOfWeek], o.[Hour])) as OpsReq
  FROM #OperatorsNeed o
    JOIN #smeny s
      ON (o.[Hour] >= s.hFrom AND o.[Hour] < s.hTo)
        OR (s.hFrom > s.hTo AND (o.[Hour] >= s.hFrom or o.[Hour] < s.hTo))
) x
GROUP BY x.[DayOfWeek], x.id, x.[Name], x.ShortName
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895700
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Minamoto
aleks222
пропущено...

Лучше путь критерий оптимальности огласит.
Минимальное количество смен при 100%-м перекрытии необходимого количества операторов на каждый час?


Минимальное чаво?
Смены или есть, или нет.
Т.е. сколько там страдалец "насчитал" - столько и смен.
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895776
Remind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222
Минимальное чаво?
Смены или есть, или нет.
Т.е. сколько там страдалец "насчитал" - столько и смен.

+1, имхо задачу нужно рассматривать не только в разрезе сколько сотрудников должно быть в каждой смене, но так же как наиболее оптимально составить сами смены.
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895787
Remind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да и решать в SQL подобные задачи - конечно такое себе занятие.
Почему бы просто в лоб не перебрать возможные варианты распределения по сменам, и выбрать то, у которого наименьшее отклонение. 20 строк кода от силы.
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895804
Фотография court
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если "совсем в лоб" :)

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
declare @t table ([DayOfWeek] int, [Hour] int, idSmeny int, flag int) 

declare @DayOfWeek int, @Hour int, @OpNeed int, @CurrOp int, @i int
declare opn cursor local forward_only
for
	select [DayOfWeek],[Hour],[OpNeed] from #OperatorsNeed order by 1, 2

open opn;

fetch next from opn into @DayOfWeek, @Hour, @OpNeed  

while @@FETCH_STATUS = 0 
begin
	--	сколько "на сейчас" в работе
	set @CurrOp = isnull((
		select
			count(*)
		from @t t inner join #Smeny s on t.idSmeny = s.id
		where	(t.[DayOfWeek] = @DayOfWeek and (@Hour between s.hFrom and s.hToCorrect or @Hour between s.hFromCorrect and s.hTo))
			or	(t.[DayOfWeek] = @DayOfWeek+1 and s.id = 7 and (@Hour between s.hFromCorrect and s.hTo))
			), 0);

	--	
	if @CurrOp < @OpNeed
	begin
		;with a as (
				--	самая поздняя смена для @Hour		
				select 7 as id where @Hour>=20 or @Hour<8 
				union all
				select top 1 id from #Smeny where id <> 7 and hFrom<=@Hour order by hFrom desc, hTo),
			b as ( 
				select 1 as n union all select n+1 from b where n < @OpNeed - @CurrOp)

		insert into @t ([DayOfWeek], [Hour], idSmeny, flag)
		select @DayOfWeek, @Hour, a.id, case when a.id = 7 and @Hour<=8 then 0 when a.id = 7 and @Hour>=20 then 2 else 1 end
		from a cross join b

	end

	fetch next from opn into @DayOfWeek, @Hour, @OpNeed
end

select [DayOfWeek], idSmeny, flag, count(*) as NeedSmenCount from @t group by [DayOfWeek], idSmeny, flag order by 1, 3, 2

close opn;  
deallocate opn;


DayOfWeekidSmenyflagNeedSmenCount1702111214141513270321172411525123705311834114351147054117441124513570551175411355126706611664115651166127703711474187511
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895863
Yaroslav85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Remind, спасибо, но не совсем то.
по вашему алгоритму- большой перерасход операторов в час будет.
см. файл
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895870
Yaroslav85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court,

круто :)
почти идеально.
ща проверю на другом дне, но по 1-му - перелимит всего на три больше чем вышло у меня :) .
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895873
Yaroslav85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleks222
Minamoto
пропущено...
Минимальное количество смен при 100%-м перекрытии необходимого количества операторов на каждый час?


Минимальное чаво?
Смены или есть, или нет.
Т.е. сколько там страдалец "насчитал" - столько и смен.

не совсем так.
смены в справочнике есть
а вот сколько на них выводить и выводить ли на них людей - это уже другой вопрос, который и нужно был тут решить.
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895875
Yaroslav85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Remind
Да и решать в SQL подобные задачи - конечно такое себе занятие.
Почему бы просто в лоб не перебрать возможные варианты распределения по сменам, и выбрать то, у которого наименьшее отклонение. 20 строк кода от силы.

в лоб перебор комбинаций я думал делать.
и даже почти сделал.
но для большого к-ва сотрудников выходит большой массив комбинаций.
вот мои потуги:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
DECLARE @startnum INT
DECLARE @endnum INT, @x int, @smCount int
If(OBJECT_ID('tempdb..#n') Is Not Null) Begin  Drop Table #n End
--====================================#rows
set @x = 0
set @startnum =0
set @endnum =  5 -- к-во операторов максимум
set @smCount = 7 -- к-во смен


;
WITH gen AS (
    SELECT @startnum AS num
    UNION ALL
    SELECT num+1 FROM gen 
	WHERE num+1<=@endnum
)
Select  *  into #n from gen option (maxrecursion 50);

Declare @i int
, @str as nvarchar(4000)
, @strCr as nvarchar(4000)
, @TUnp as nvarchar(4000)

If(OBJECT_ID('allComb') Is Not Null) Begin  Drop Table allComb End

set @str =  'insert into allComb SELECT ROW_NUMBER() over(order by #n.num) rNum, *  from #n '
set @strCr =  'Create table allComb (idN int'

set @i = 1

WHILE @i <= @smCount
begin
	set @str =	 @str	+	char(10) + 'cross join #n d' +  left(@i, 2)
	set @strCr = @strCr +   char(10) + ', c' + left(@i, 2) + ' int'
	set @i = @i + 1
end
set @str =	 left(@str, len( @str) - 16)
set @strCr =	 @strCr + ');'
set @TUnp = REPLACE(@TUnp, '(' + char(10) + ',', '(') + ')) AS unpvt;'

print @str
print  @strCr
print  @TUnp

EXEC sp_executesql @strCr;
EXEC sp_executesql @str ;

select * from allComb



и если к-во операторов увеличить хотя-бы до 15 - считает очень долго.
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895881
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А "смены" менять нельзя?
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895884
Yaroslav85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
court, заметил, что в коде есть четкая проверка на 7-ю смену.
а можно как-то сделать проверку динамическую?
а то вдруг добавят другую ночную смену, или эту поменяют
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39895886
Yaroslav85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183
А "смены" менять нельзя?

не совсем понял вопрос.
смены могут появляться и удалятся.
сегодня из 7 - завтра может быть 10.
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39896011
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yaroslav85
982183
А "смены" менять нельзя?

не совсем понял вопрос.
смены могут появляться и удалятся.
сегодня из 7 - завтра может быть 10.

Не думаю, что сами смены оптимальны
Они подобраны под 8-и часовой рабочий день с часовым обеденным перерывом.
Вероятно, если не принимать КЗОТ как догму, возможно подобрать более гибкие, и более эффективные графики.
Задача несомненно имеет массу практических аналогий.
Но имеет ли она при такой постановке практическую ценность?
Болезни, невыходы, просто кадровый дефицит могут сильно подорвать выполнение планов.
А с другой стороны, возможный гибкий график может сильно помочь в выполнении задачи 100процентного перекрытия
Тут нужны некие комплексные методы
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39896014
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.Е. применить реинжиниринг, а не математику.

Например.
Введение смены с7до16 и с6до15 позволит резко снизить "лишних" людей утром.
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39896020
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ в качестве входной информации, наверное, стоит использовать не, рассчитанное ранее, требуемое наличие персонала,
а фактическую нагрузку (например - число звонков/обращений и/или человекочасы консультаций)
Соответственно оценкой результата будет не "100% наличие требуемой нормы", а некая нагрузка на одного оператора в разрезе часа.

Это позволит и более гибко подстраиваться под изменение в периодичности нагрузки.
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39896175
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yaroslav85

...Нужно придумать расчет оптимального к-ва смен.

Если решать именно такую задачу, то ответ налицо: использовать только смены 8-20 и 20-8.
А из-за требования снизить величину "перелимита", т.е. снизить простои, возникает еще ряд вопросов, на которые автор ответов не дал. Например, что лучше: снизить на 1 час простоя в смене 8-17 или в смене 20-8 ?
Что лучше: 2 смены с 5 часами простоя в сумме, или 3 смены с суммарным простоем в 4 часа??

Если четко прописать все соотношения, то получится классическая задача о назначениях.

PS. Что-то мне подсказывает, что есть еще требование - обеспечить людей суммарной загрузкой 40 часов в неделю. А также учесть тех сотрудников, кто работает на "полставки", т.е. 15, 20, 25 часов в неделю. И на это еще наложить различные виды недоступности, т.е. больничные, отпуска, ...
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39896181
Yaroslav85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
982183

Они подобраны под 8-и часовой рабочий день с часовым обеденным перерывом.

это смены заказчика. я могу ему только рекомендовать..., но само администрирование остается за ним.
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39896187
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yaroslav85
это смены заказчика. я могу ему только рекомендовать..., но само администрирование остается за ним.

Вот в этом то и проблема.
К вам обратились, очевидно как программисту, для реализации задачи.
А надо было позвать совсем другого специалиста. В другой области.
...
Рейтинг: 0 / 0
Подбор оптимального количества смен.
    #39896191
Yaroslav85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Александр Спелицин

PS. Что-то мне подсказывает, что есть еще требование - обеспечить людей суммарной загрузкой 40 часов в неделю. А также учесть тех сотрудников, кто работает на "полставки", т.е. 15, 20, 25 часов в неделю. И на это еще наложить различные виды недоступности, т.е. больничные, отпуска, ...

эти задачи, как и договариваться с операторами про перенос смен и т.д. пока будет решать кадровик. :) .
...
Рейтинг: 0 / 0
25 сообщений из 31, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Подбор оптимального количества смен.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]