请教个关于排班的问题,能不能用程序算出最优的方案。

2016-08-23 15:53:15 +08:00
 jiduxiyanghong
有 ABCD4 个人

需求如下:

每天 2 个人上班,做一休一,比如 1 号 A 和 B 上班, 2 号 C 和 D , 3 号又是 A 和 B ,就这么轮换下去。

如何调整让人员能互相搭配上班,例如需要 A 分别和 B 、 C 、 D 都能搭到班。

我目前弄出来的办法是周末其中一天是一个人上班,然后实现 B 、 D 两个人调换,然后在下一周末同样的方式使 A 、 C 互换:

周五 A 、 B
周六 C 、 D
周日 A ( B 休)
周一 C 、 B (D 休)
周二 A 、 D


但是这种方式不管怎么换还是不能让 A 和 C 、 B 和 D 在一个班


如何有更好的方案?周末两天可以一个人的情况下。
1934 次点击
所在节点    问与答
11 条回复
loading
2016-08-23 15:58:04 +08:00
循环嵌套
jiduxiyanghong
2016-08-23 16:01:59 +08:00
@loading 关键是我不会啊。。 我不是干这个的
kindjeff
2016-08-23 16:06:22 +08:00
AB AC AD BC BD CD
tabris17
2016-08-23 16:09:25 +08:00
组合数学的问题,和会不会写程序没什么关系
yjzll
2016-08-23 16:31:16 +08:00
哈哈,其实是数学问题,数学搞清楚了,编程核心内容也就一天
jiduxiyanghong
2016-08-23 17:18:47 +08:00
@kindjeff 这种方式不行, A 上了一天第二天必须休息,忘记说了,休息也不能安排太多的。,除了做一休一之外最多只能一个人另外安排 2 天
prefere
2016-08-23 20:16:56 +08:00
1 ab
2 cd
...
5 ab
6 c
7 d

1 ac
2 db
...
5 ac
6 d
7 b

1 ad
2 bc
...
5 ad
6 b
7 c

1 ab
2 cd
...
Arnie97
2016-08-24 01:15:21 +08:00
我感觉 Prolog 这门语言简直就是专门解决这种问题的
blackboar
2016-08-24 21:27:34 +08:00
@prefere 最多的一个当月会另外休 5 天啊,一个 4 天,两个 3 天
prefere
2016-08-24 23:56:54 +08:00
能不能连着上两天啊,不连着貌似没结果啊。
[['a', 'c'], ['b', 'c'], ['b', 'd'], ['a', 'c'], ['c', 'd'], ['a'], ['c'], ['a', 'b'], ['b', 'd'], ['a', 'c'], ['a', 'd'], ['b', 'c'], ['b'], ['d'], ['a', 'd'], ['a', 'b'], ['b', 'c'], ['a', 'd'], ['b', 'c'], ['a'], ['c'], ['a', 'd'], ['b', 'd'], ['a', 'b'], ['a', 'c'], ['c', 'd'], ['b'], ['d'], ['c', 'd'], ['a', 'b'], ['c', 'd'], ['b', 'd']]
jiduxiyanghong
2016-08-25 09:13:43 +08:00
@prefere 那我在琢磨琢磨吧,其实就是开会下边同事提出来的一个小问题,说是一直这么上班就见不到其他同事,后来想想也有道理的。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/301213

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX