我正在研究一个应用程序,我需要按照轮流计划自动为成员安排作业。我不是很擅长解释规则,所以这里有一些数据可以帮助您:作业调度问题
职位:职位名称,每周一星期三和星期三。
类别:一组职位
分组:另一组职位。
成员:在指定日期分配给职位的用户。
对于本月中的每个日期,成员被分配到职位(均按升序排列)。如果一个成员被分配到一个类别中的一个位置,下一次出现同一类别中的一个位置时,下一个成员按字母顺序(或列表的开始)被赋值,例如。
成员:M1,M2,M3,M4
位置在C1类:P1,P2,P3
成员的位置P1:M1,M2,M3,M4
成员的位置P2:M1,M2, M3
位置P2中的成员:M1,M3,M4
如果M1分配给P1,如果P2接下来,M2将被分配。另外一层复杂性被引入,如果P3接下来,M3会被分配。系统必须跟踪M2被“跳过”的事实,并且如果可用则指定M2,然后指派M4,或者等到它到达M2可用的位置(当跳过许多跳过时,这变得更复杂'成员)。
如果他表示他在该日期不能使用,则会员将被跳过。系统需要优先考虑跳过的成员,当他们出现时以某种方式识别他们,然后跳到列表中的下一个逻辑人员。由于日期冲突,跳过也适用于群组。
我已经有一个临时的[和凌乱]的解决方案,我不再理解,即使我有很多意见,在解释每一步。它的弱点在于处理跳过的成员。
如果你打算编码,你会怎么做?我在PHP中实现这一点,但伪代码也可以。
有没有需要考虑职位的时间?当你说同一组中的职位不能在同一天进行分配时,你的意思是他们不能被分配给任何人(即在一天中只有一个职位可以被填补)或被分配到一个职位的人在一个组中不能被分配给任何其他? – outis 2009-12-19 22:29:26
我的意思是有人可以在同一天填补两个职位,除非他们碰巧落在同一个团队中。 – Zahymaka 2009-12-20 20:39:51