免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2525 | 回复: 5
打印 上一主题 下一主题

[数值计算] 问一个排班脚本 [复制链接]

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:39
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2018-11-13 13:33 |只看该作者 |倒序浏览
想用脚本实现一个自动排班的功能。

要解决的问题:
一个公司,有8个岗位每天都要有人值守,每个值守人员,每周都是作五歇二(连休制),需要多少人才能满足要求?班次如何安排?


有啥好方法或思路么?

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
2 [报告]
发表于 2018-11-25 03:00 |只看该作者
回复 1# mfksn

8个岗位是7天x24小时有人值守,还是5天x8小时有人值守,还是7天x8小时有人值守?
每个值守人员每周做五天休两天,工作的一天是8小时吗?

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:39
3 [报告]
发表于 2018-11-26 14:18 |只看该作者
回复 2# bikkuri


不需要 7x24 在岗,正常的8小时作息时间。
不过目前这个脚本完全不考虑当日时间分配的问题,想实现的是自动安排某个人当日是上班还是休息,而且每天都至少有8个人上班,每个人都是作五歇二,脚本最终执行输出要给出一个班次表,以及满足以上条件到底需要多少人。

论坛徽章:
25
程序设计版块每日发帖之星
日期:2016-05-03 06:20:0015-16赛季CBA联赛之八一
日期:2018-07-05 10:34:09黑曼巴
日期:2018-07-06 15:19:5015-16赛季CBA联赛之佛山
日期:2018-08-03 13:19:3315-16赛季CBA联赛之山西
日期:2018-08-07 19:46:2315-16赛季CBA联赛之广夏
日期:2018-08-08 19:31:5015-16赛季CBA联赛之青岛
日期:2018-11-26 15:21:5015-16赛季CBA联赛之上海
日期:2018-12-11 09:45:3219周年集字徽章-年
日期:2020-04-18 23:54:5215-16赛季CBA联赛之深圳
日期:2020-04-19 21:40:19黑曼巴
日期:2022-04-03 17:55:1315-16赛季CBA联赛之八一
日期:2018-07-03 16:56:46
4 [报告]
发表于 2018-11-26 19:41 |只看该作者
本帖最后由 wh7211 于 2018-12-04 11:19 编辑

回复 1# mfksn


  1. #变量a:岗位数
  2. #变量b:每星期的工作天数
  3. awk -va=8 -vb=5 'BEGIN{n=a+1;c1=a*(7-b)/b;c2=int(c1);c=c1>c2?c2+1:c1;printf("%s个岗位共需要%s位员工\n",a,a+c);for(i=1;i<=a;i++){for(j=1;j<=7-b;j++){k++;k=k==8?1:k;m++;if(m==b+1){m=1;n++};p="岗位"i":星期"(k==7?"日":k);r[n]=r[n]?r[n]","p:p};q1="星期"(k+1>7?k+1-7:(k+1==7?"日":k+1));q2="星期"(k+b>7?k+b-7:(k+b==7?"日":k+b));r[i]="岗位"i":"q1"->"q2};for(i in r){print "员工"i,r[i]}}'
  4. 8个岗位共需要12位员工
  5. 员工1 岗位1:星期3->星期日
  6. 员工2 岗位2:星期5->星期2
  7. 员工3 岗位3:星期日->星期4
  8. 员工4 岗位4:星期2->星期6
  9. 员工5 岗位5:星期4->星期1
  10. 员工6 岗位6:星期6->星期3
  11. 员工7 岗位7:星期1->星期5
  12. 员工8 岗位8:星期3->星期日
  13. 员工9 岗位1:星期1,岗位1:星期2,岗位2:星期3,岗位2:星期4,岗位3:星期5
  14. 员工10 岗位3:星期6,岗位4:星期日,岗位4:星期1,岗位5:星期2,岗位5:星期3
  15. 员工11 岗位6:星期4,岗位6:星期5,岗位7:星期6,岗位7:星期日,岗位8:星期1
  16. 员工12 岗位8:星期2
复制代码

论坛徽章:
3
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:39
5 [报告]
发表于 2018-11-27 17:25 |只看该作者
回复 4# wh7211

非常感谢。

论坛徽章:
1
15-16赛季CBA联赛之同曦
日期:2017-03-19 09:57:50
6 [报告]
发表于 2018-11-28 11:43 |只看该作者

能解释下这个算法吗?没看明白
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP