如果我有 5days*(8hourWorkday-2hoursForUnexpectedWork) = 每周 30 小时的使用时间,我如何以编程方式安排任务来填补这 30 小时?
例如,我有 5 个任务,我估计每个任务将花费以下时间:
#1: 2h
#2: 4h
#3: 6h
#4: 8h
#5: 10h
我该如何分类说:
M: #1 @ 2h + #2 @ 4h
T: #3 @ 6h
W: #4 @ 6h
H: #4 @ 2h + #5 @ 4h
F: #5 @ 6h
换句话说,如何解释“迭代和容器溢出”?
最终,我还需要能够考虑超出一周的任务,例如,如果前面的示例我有一个任务#6: 40h
(本身比一周多 10 小时,并且将每周总和额外增加 40 小时,这将需要溢出前两周)。
编辑:
第二个更复杂的例子,同样有 5 个任务,这次有(可选的)星期几要求:
#1: 2h, W[0][M]
#2: 4h, W[0][T]
#3: 6h, W[0][M]
#4: 8h, W[0][F]
#5: 40h, W[0][F]
我该如何排序,比如说,
W[-1][M]: #5 @ 6h
W[-1][T]: #5 @ 6h
W[-1][W]: #5 @ 6h
W[-1][H]: #5 @ 6h
W[-1][F]: #3 @ 2h + #5 @ 4h
W[ 0][M]: #1 @ 2h + #3 @ 4h
W[ 0][T]: #2 @ 4h + #5 @ 2h
W[ 0][W]: #5 @ 6h
W[ 0][H]: #4 @ 2h + #5 @ 4h
W[ 0][F]: #4 @ 6h
最好的情况实际上是 #3 将 #1 推后一天,如下所示:
进一步澄清:
- 对于一周中的每个指定日期 (MTWHF),最多填写 6 个小时的时间。
- 如果有溢出,溢出到前一天。
- 理想情况下,这种溢出将以背包或类似优化的方式发生,这样 6 小时将尽可能完全地被整个/不间断的任务填满。
- 同样,对于溢出的日子,他们也应该将溢出调整为不破坏整个任务。