1

我代表我的一个朋友经营一个网球网站,因为她对技术和计算机并不是那么热情。

当我们创建锦标赛订阅页面时,用户和业余网球运动员填写表格以订阅该锦标赛。

表单中有一个字段,用户可以根据需要描述他们的可用性。

基本上,用户会写他们什么时候可以参加比赛,而且大多数时候他们是时间约束,例如:

“晚上9点以后我可以玩所有晚上”,“只能在工作日”,“因为工作,我只能在周末玩”,“总是,除了不能每天晚上10点之后,因为我要早起”。

我称它们为时间约束。

昨天我发现了一个新的约束,它是这样的:

“我(用户A)和我的朋友(用户B)为了参加比赛将共享汽车,因为我们住的地方离你很远,而且我们要长途跋涉,我们想聚在一起以节省燃料。只要我的朋友在比赛中没有被淘汰,我宁愿和我的朋友(userB)在相似的时间玩。如果我的朋友被淘汰了,我每次都可以玩”

我现在的问题是,是否有一种算法可以满足所有这些约束,或者我的朋友即使不是技术人员或极客也可以使用的预先准备好的解决方案。

我知道这个算法应该在每天之后运行,因为当然比赛获胜者事先并不知道,因此用户时间成本限制会有所不同。我也明白这是一个运筹学问题,但我没有经验,也不是专业的程序员。

请留下您对特定文献或软件的任何指示。谢谢

4

1 回答 1

0

AFAIK 没有针对此类问题的预先解决方案。必须有人为此建立一个模型和一个应用程序。

正如所建议的,约束编程是一种解决此类问题并提出满足所有给定约束的解决方案的技术。Choco是一个非常方便的开源工具。

但是,您可能希望将其表述为优化问题。您希望算法在安排下一轮时将每对 UserA/UserB 放置在同一天/同一时间段中。这样的对有多少?如果不可能放置所有这些对怎么办?使用MILP可以获得最大数量的对。也许考虑历史并平均每对在一起的次数?这样的模型肯定更复杂……

于 2020-07-30T10:04:24.530 回答