【发布时间】:2020-01-14 17:11:41
【问题描述】:
在可能的日子里找到最合适的团队组成。一组 n 个参与者,k 天,一个团队有 m 插槽。参与者指定他想参加多少天以及他有空的日子。
结果约束:
- 参与者参加的天数不得超过他们想要的时间
- 不得将参与者安排在他们不在的日子里。
- 算法应尽最大努力包含尽可能多的独特参与者。
- 如果当天可用的参与者少于 m 个,则不会安排一天。
我发现自己每周在工作中为我的足球队调度手动解决这个问题,我确信有一种智能的程序化方法可以解决这个问题。目前,我们考虑每周只有 2 天,同事写下他们想参加的那一天的姓名,最终每天都有大量的清单,不可能取悦所有人。
我考虑了一种新方法,每个同事写下他的名字、每周希望玩的时间以及他有空的日子,示例如下:
Kane 3 1 2 3 4 5
上面的线表示凯恩这周想打 3 次,他周一到周五都有空。第一个数字代表可以玩的天数,接下来的数字代表可用天数(1 到 7,周一到周日)。
参与者少于 m(在我的情况下,m = 12)的日子不会预定。解决这个问题的最佳方法是什么,才能找到一个解决方案,尽最大努力让每个参与者至少参与一次,并考虑他们的愿望(什么时候玩,玩多少)。
我会编程,我只需要知道要实现什么样的算法,并且可能对选择有一个简短的逻辑解释。
结果约束:
- 参与者不得超出自己的意愿玩游戏
- 不得将参与者安排在他们不想参加比赛的日子里
- 算法应尽最大努力包含尽可能多的参与者。
- 如果当天可用的参与者少于 m 个,则不会安排一天。
【问题讨论】:
-
可以在同一天安排15个(超过m)吗?
-
您已经描述了集合覆盖问题的多维版本。我看到了对此的各种直接攻击——我希望看到的不是对算法的请求,而是有问题结果的部分解决方案。
-
暴力破解可用的法律选择应该仍然足够快,可以为您提供人类方面的快速解决方案。您在参与者数量和游戏天数之间做出了怎样的权衡?一天最多可以安排多少玩家?
-
在我的真实案例中,我想在一天内寻找 12 名参与者,但当天仍然可以安排只有 10 人。超过 12 人意味着有人坐在板凳上。
-
再一次,在我的例子中,我们使用了全部 7 天,并且有大约 40 个可能的参与者。大多数人避开周末,我们最终在前 5 天吵架。最大玩家数量仍然是m。
标签: algorithm heuristics