Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Подбор оптимального количества смен.  [new]
Yaroslav85
Member

Откуда:
Сообщений: 36
Всем привет.
Подскажите, может кто сталкивался.
Нужно придумать расчет оптимального к-ва смен.

Итак что есть:
1. посчитанное к-во необходимого к-ва операторов на каждый час:
+
DayOfWeek Hour OpNeed
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

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

7-я смена переходит на следующий день
Что в идеале получить:
+
DayOfWeekidSmenyShortNameNeedSmenCount
118-170
218-170
318-170
418-170
518-170
618-170
718-170
1216-220
2216-220
3216-220
4216-220
5216-220
6216-220
7216-220
138-200
238-200
338-200
438-200
538-200
638-200
738-200
149-210
249-210
349-210
449-210
549-210
649-210
749-210
1510-220
2510-220
3510-220
4510-220
5510-220
6510-220
7510-220
1611-230
2611-230
3611-230
4611-230
5611-230
6611-230
7611-230
1720-80
2720-80
3720-80
4720-80
5720-80
6720-80
7720-80

где вместо 0 - оптимальное к-во смен в день
28 ноя 19, 12:40    [22027511]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Remind
Member

Откуда: UK
Сообщений: 523
Добавили бы хотябы скрипты с тестовыми данными.
28 ноя 19, 13:22    [22027577]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
aleks222
Member

Откуда:
Сообщений: 956
Remind
Добавили бы хотябы скрипты с тестовыми данными.

Лучше путь критерий оптимальности огласит.
28 ноя 19, 13:48    [22027629]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
aleks222
Remind
Добавили бы хотябы скрипты с тестовыми данными.

Лучше путь критерий оптимальности огласит.
Минимальное количество смен при 100%-м перекрытии необходимого количества операторов на каждый час?
28 ноя 19, 14:01    [22027661]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Yaroslav85
Member

Откуда:
Сообщений: 36
Remind
Добавили бы хотябы скрипты с тестовыми данными.

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

+

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
28 ноя 19, 14:10    [22027678]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Yaroslav85
Member

Откуда:
Сообщений: 36
Minamoto
aleks222
пропущено...

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


Да - в точку, лучше и не придумаю :)
+ к этому - минимальный перелимит операторов в спокойные часы.
т.е.
если есть выбор между 11 сменами когда средний перелимит операторов по спокойным часам будет в 5 человек и
11 смен, когда их будет 8 - то лучше выбрать вариант, когда будет 5.
28 ноя 19, 14:19    [22027685]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Remind
Member

Откуда: UK
Сообщений: 523
Думаю можно отталкиваться от этого:

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
28 ноя 19, 14:59    [22027770]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
aleks222
Member

Откуда:
Сообщений: 956
Minamoto
aleks222
пропущено...

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


Минимальное чаво?
Смены или есть, или нет.
Т.е. сколько там страдалец "насчитал" - столько и смен.
28 ноя 19, 15:15    [22027799]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Remind
Member

Откуда: UK
Сообщений: 523
aleks222
Минимальное чаво?
Смены или есть, или нет.
Т.е. сколько там страдалец "насчитал" - столько и смен.

+1, имхо задачу нужно рассматривать не только в разрезе сколько сотрудников должно быть в каждой смене, но так же как наиболее оптимально составить сами смены.
28 ноя 19, 16:18    [22027930]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Remind
Member

Откуда: UK
Сообщений: 523
Да и решать в SQL подобные задачи - конечно такое себе занятие.
Почему бы просто в лоб не перебрать возможные варианты распределения по сменам, и выбрать то, у которого наименьшее отклонение. 20 строк кода от силы.
28 ноя 19, 16:35    [22027949]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
court
Member

Откуда:
Сообщений: 2016
если "совсем в лоб" :)

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;

DayOfWeekidSmenyflagNeedSmenCount
1702
1112
1414
1513
2703
2117
24115
2512
3705
3118
34114
3511
4705
4117
44112
4513
5705
5117
54113
5512
6706
6116
64115
6511
6612
7703
7114
7418
7511
28 ноя 19, 16:59    [22027974]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Yaroslav85
Member

Откуда:
Сообщений: 36
Remind, спасибо, но не совсем то.
по вашему алгоритму- большой перерасход операторов в час будет.
см. файл

К сообщению приложен файл (Подбор смен 1.xlsx - 15Kb) cкачать
28 ноя 19, 18:27    [22028063]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Yaroslav85
Member

Откуда:
Сообщений: 36
court,

круто :)
почти идеально.
ща проверю на другом дне, но по 1-му - перелимит всего на три больше чем вышло у меня :) .
28 ноя 19, 18:39    [22028076]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Yaroslav85
Member

Откуда:
Сообщений: 36
aleks222
Minamoto
пропущено...
Минимальное количество смен при 100%-м перекрытии необходимого количества операторов на каждый час?


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

не совсем так.
смены в справочнике есть
а вот сколько на них выводить и выводить ли на них людей - это уже другой вопрос, который и нужно был тут решить.
28 ноя 19, 18:41    [22028079]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Yaroslav85
Member

Откуда:
Сообщений: 36
Remind
Да и решать в SQL подобные задачи - конечно такое себе занятие.
Почему бы просто в лоб не перебрать возможные варианты распределения по сменам, и выбрать то, у которого наименьшее отклонение. 20 строк кода от силы.

в лоб перебор комбинаций я думал делать.
и даже почти сделал.
но для большого к-ва сотрудников выходит большой массив комбинаций.
вот мои потуги:
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 - считает очень долго.
28 ноя 19, 18:49    [22028089]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
982183
Member

Откуда: VL
Сообщений: 3352
А "смены" менять нельзя?
28 ноя 19, 18:56    [22028101]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Yaroslav85
Member

Откуда:
Сообщений: 36
court, заметил, что в коде есть четкая проверка на 7-ю смену.
а можно как-то сделать проверку динамическую?
а то вдруг добавят другую ночную смену, или эту поменяют
28 ноя 19, 19:00    [22028105]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Yaroslav85
Member

Откуда:
Сообщений: 36
982183
А "смены" менять нельзя?

не совсем понял вопрос.
смены могут появляться и удалятся.
сегодня из 7 - завтра может быть 10.
28 ноя 19, 19:02    [22028108]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
982183
Member

Откуда: VL
Сообщений: 3352
Yaroslav85
982183
А "смены" менять нельзя?

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

Не думаю, что сами смены оптимальны
Они подобраны под 8-и часовой рабочий день с часовым обеденным перерывом.
Вероятно, если не принимать КЗОТ как догму, возможно подобрать более гибкие, и более эффективные графики.
Задача несомненно имеет массу практических аналогий.
Но имеет ли она при такой постановке практическую ценность?
Болезни, невыходы, просто кадровый дефицит могут сильно подорвать выполнение планов.
А с другой стороны, возможный гибкий график может сильно помочь в выполнении задачи 100процентного перекрытия
Тут нужны некие комплексные методы
29 ноя 19, 02:15    [22028307]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
982183
Member

Откуда: VL
Сообщений: 3352
Т.Е. применить реинжиниринг, а не математику.

Например.
Введение смены с7до16 и с6до15 позволит резко снизить "лишних" людей утром.
29 ноя 19, 03:35    [22028310]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
982183
Member

Откуда: VL
Сообщений: 3352
+ в качестве входной информации, наверное, стоит использовать не, рассчитанное ранее, требуемое наличие персонала,
а фактическую нагрузку (например - число звонков/обращений и/или человекочасы консультаций)
Соответственно оценкой результата будет не "100% наличие требуемой нормы", а некая нагрузка на одного оператора в разрезе часа.

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

Сообщение было отредактировано: 29 ноя 19, 05:33
29 ноя 19, 05:28    [22028318]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Александр Спелицин
Member

Откуда: Из ближайшего подмосковья.
Сообщений: 2496
Yaroslav85

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

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

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

PS. Что-то мне подсказывает, что есть еще требование - обеспечить людей суммарной загрузкой 40 часов в неделю. А также учесть тех сотрудников, кто работает на "полставки", т.е. 15, 20, 25 часов в неделю. И на это еще наложить различные виды недоступности, т.е. больничные, отпуска, ...
29 ноя 19, 11:11    [22028546]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Yaroslav85
Member

Откуда:
Сообщений: 36
982183

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

это смены заказчика. я могу ему только рекомендовать..., но само администрирование остается за ним.
29 ноя 19, 11:14    [22028554]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
982183
Member

Откуда: VL
Сообщений: 3352
Yaroslav85
это смены заказчика. я могу ему только рекомендовать..., но само администрирование остается за ним.

Вот в этом то и проблема.
К вам обратились, очевидно как программисту, для реализации задачи.
А надо было позвать совсем другого специалиста. В другой области.
29 ноя 19, 11:17    [22028561]     Ответить | Цитировать Сообщить модератору
 Re: Подбор оптимального количества смен.  [new]
Yaroslav85
Member

Откуда:
Сообщений: 36
Александр Спелицин

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

эти задачи, как и договариваться с операторами про перенос смен и т.д. пока будет решать кадровик. :) .
29 ноя 19, 11:19    [22028565]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить