【问题标题】:Finding ideal utilization of rentable items in ruby在 ruby​​ 中找到可出租项目的理想利用
【发布时间】:2010-01-27 20:21:17
【问题描述】:
# Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
rentable_items = [ 
  %w(x x x - - - x x x - - -), # item1
  %w(- - - - - - - - - - - -), # item2
  %w(x x x x x x x - - - - -), # item3
  %w(x x x - - - - x x x x x) ]# item4

好的,鉴于数据结构(表示项目月份的租金槽),其中“x”代表不可出租,“-”代表可出租,我有以下问题。

当我收到从 4 月到 6 月期间的请求时,我希望按以下优先顺序获得结果:

items = rentable_items.ideal_utilization_for("2010/03/01", "2010/06/30")
items # [item1, item2, item4] #where item4 is the worst

这背后的想法是首先填补一个项目的空白,并尝试产生尽可能少的新空白。

我不需要完整的解决方案,但需要哪些工具(库、gem、算法)可用于解决此类问题的建议。示例将不胜感激。

[编辑:删除了第二个例子,专注于真正的问题。]

【问题讨论】:

  • 如果您已经愿意在请求期间换出物品,那么您给他们提供的物品真的很重要吗?
  • 为什么在那个时期item1比item4“更好”?为什么将租金分成两件而不是一件?
  • 不,这并不重要,只要给定的项目不会产生新的差距。嗯,考虑到这一点,我知道,我必须编辑示例:)
  • @BlueRaja:item1 比 item4 好,因为 item4 在期末会产生 1 个月的差距。
  • @Sebastian:但是 item2 会产生 6 个月的间隔......另外,如果您不担心在租赁中途更换物品,那么间隔并不重要,因为在一个月内X 您将始终有 Y 人想要物品和 Z 物品可用。在这种情况下,最好的算法就是抓住第一个可用的算法。在现实生活中您可能需要考虑的其他事项:物品的使用频率、所处的状况、保修期何时结束等。

标签: ruby algorithm utilization


【解决方案1】:

我想以最少的 item-swaps-per-rental 获得物品...租金是一个接一个的。

那么由于我们无法预测未来,所以我们提供给您的任何算法都只是统计性的,并且很容易找到该算法给您的结果低于标准的情况。

无需担心用户的租借模式或我们提前知道的租借情况,我只需将每个项目映射到其连续的可用日期范围(这意味着某些项目将有多个日期范围),然后按每个范围的长度排序。当有新订单进来时,使用完全填写订单的最小日期范围。请记住,当我们实时通过它时,日期范围应该变小,因为我们不关心该项目是否在一周前可用。

如果人们能够预订物品,请等到当天分配物品给他们,然后从最短到最长进行分配。

这当然只是一个答案;实际上,您可以应用无限多的启发式方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2015-07-24
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    相关资源
    最近更新 更多