如何针对未知的未来事件优化事件安排?

时间:2019-07-13 07:15:20

标签: algorithm logic maximum-profit-problem

场景:

我需要给用户机会预订不同时间的服务。 请注意,我没有提前预订,但是我需要在预订时填写。

预订可以表示为键值对:

[startTime, duration]

例如,[9,3]表示事件在9点开始,持续时间为3个小时。

规则:

  • 用户一个个出现,从来没有一批用户请求
  • 没有预订可以重叠
  • 24/7全天候提供服务,因此无需担心“工作时间”
  • 用户自行选择duration
  • 很显然,一旦用户选择并确认了自己的预订,我们将无法再对其进行洗牌
  • 我们不希望差距小于一定时间。这是基于未来用户填补空白的可能性。例如,如果durations在用户预订中的分布使得将来的用户填补不足x小时的空缺的概率小于p,则我们希望规则不能缩短比x。 (出于这个问题的目的,我们可以假设x被硬编码了,在这里我仅说明原因)
  • 目标是使服务繁忙时间最大化

到目前为止我的想法...

  1. 我保留了到目前为止的预订清单
  2. 我还跟踪差距(因为它们是新用户预订的潜在位置)
  3. 当新用户来预订[startTime, duration]时,我首先检查gapLength = duration的理想情况。如果没有这样的间隙,我会找到所有满足条件gapLength - duration > minimumGapDuration的插槽(间隙),并以该gapLength - duration值降序对其进行排序
  4. 我将用户分配给第一个缺口,最大值为gapLength - duration,因为这给了我最高的可能性,即预订后剩余的缺口将来也会被填补

问题:

  1. 我的方法是否存在一些我缺少的问题?

  2. 是否有解决此特定问题的算法?

  3. 是否有一些我可以开始使用并在以后进行优化的常规方法(良好的起点)? (我实际上是在尝试获取足够的信息以开始,但没有犯一些严重的错误;可以/应该在以后进行优化)

PS。 从到目前为止的研究看来,约束编程可能就是这种情况。我想避免这种情况,因为我对此一无所知(也许它很简单,我只是不知道),但是如果它能带来真正的改变,我将继续努力并实现它。

我遇到了类似的问题,但是没有发现将来发生未知事件的问题。如果有,并且这是直接重复的,请参考它。

0 个答案:

没有答案