1
# 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、アルゴリズム) についてのアドバイスが必要です。例は非常に高く評価されます。

[編集: 実際の問題に焦点を当てるために、2 番目の例を削除しました。]

4

1 に答える 1

1

1回のレンタルあたりのアイテム交換が少ないアイテムを手に入れたい...レンタルが1つずつ入ってくる。

未来を予測することはできないため、私たちが提供するアルゴリズムは単に統計的であり、アルゴリズムが標準以下の結果をもたらすケースを簡単に見つけることができます.

ユーザーのレンタル パターンや事前にわかっているレンタルについて心配する必要はありません。各アイテムを連続した利用可能な日付範囲 (つまり、一部のアイテムには複数の日付範囲があることを意味します) にマップし、次のように並べ替えます。それらの各範囲の長さ。新しい注文が入ったら、注文を完全に満たす最小の日付範囲を使用します。アイテムが 1 週間前に入手可能であったかどうかは気にしないため、リアルタイムで通過するにつれて日付範囲が小さくなることに注意してください。

アイテムを予約できる場合は、当日までアイテムを割り当ててから、短いものから長いものへと割り当てます。

もちろん、これは 1 つの答えにすぎません。文字通り無限に多くのヒューリスティックを適用できます。

于 2010-01-27T21:33:52.403 に答える