これはスケジュールの問題だと思いますが、それについてはよくわかりません。私が望んでいるのは、それらの価値と将来どのような機会が生まれるかを完全に理解しているときに、重複しない購入決定の最適な順序を見つけることです。
自分の店で買いたい商品を販売している問屋を想像してみてください。いつでも、複数の特別オファーを実行している可能性があります。私は定価で販売するので、彼らの割引は私の利益です。
利益を最大化したいのですが、一度に買えるのは1つだけで、クレジットなどはなく、さらに悪いことに納期が遅れるのが難点です。良いニュースは、商品が配達されたらすぐに販売し、それからまたお金を使うことができるということです。したがって、すべての選択肢の1つの方法は、月曜日に100kgのリンゴを購入し、火曜日に配達されるということです。それから私は日曜日に配達された20の修道女の衣装を購入します。水曜日にフェラーリが大幅に割引されることを知っているので、私は数日スキップします。だから私はそれらの1つを購入します、それは次の火曜日に配達されます。等々。
複利かどうかを検討できます。アルゴリズムは、今日の特別オファーの1つを選択するか、明日より良いものが来るので1日待つか、各段階での決定に帰着します。
それを少し抽象化しましょう。購入と配達はエポックから数日となります。利益は、売り価格を買い価格で割ったものとして書かれます。つまり、1.00は損益分岐点を意味し、1.10は10%の利益を意味し、2.0はお金を2倍にしたことを意味します。
buy delivery profit
1 2 1.10 Apples
1 3 1.15 Viagra
2 3 1.15 Notebooks
3 7 1.30 Nun costumes
4 7 1.28 Priest costumes
6 7 1.09 Oranges
6 8 1.11 Pears
7 9 1.16 Yellow shoes
8 10 1.15 Red shoes
10 15 1.50 Red Ferrari
11 15 1.40 Yellow Ferrari
13 16 1.25 Organic grapes
14 19 1.30 Organic wine
注:機会は購入日にのみ存在し(たとえば、有機ブドウは誰も購入しないとワインになります!)、配達と同じ日に販売されますが、次のアイテムは翌日まで購入できません。そのため、t = 7で修道女の衣装を販売して、t=7ですぐに黄色い靴を購入することはできません。
既知の最良のアルゴリズムが存在し、そのためのRモジュールがすでに存在することを望んでいましたが、他の言語の他の言語と同様に、アルゴリズムや学術文献も優れています。速度は重要ですが、主にデータが大きくなるときなので、O(n 2)かどうか知りたいです。
ちなみに、配信遅延が最大になる可能性がある場合、最良のアルゴリズムは変更されますか?例:delivery - buy <= 7
上記のデータをCSVとして次に示します。
buy,delivery,profit,item
1,2,1.10,Apples
1,3,1.15,Viagra
2,3,1.15,Notebooks
3,7,1.30,Nun costumes
4,7,1.28,Priest costumes
6,7,1.09,Oranges
6,8,1.11,Pears
7,9,1.16,Yellow shoes
8,10,1.15,Red shoes
10,15,1.50,Red Ferrari
11,15,1.40,Yellow Ferrari
13,16,1.25,Organic grapes
14,19,1.30,Organic wine
またはJSONとして:
{"headers":["buy","delivery","profit","item"],"data":[[1,2,1.1,"Apples"],[1,3,1.15,"Viagra"],[2,3,1.15,"Notebooks"],[3,7,1.3,"Nun costumes"],[4,7,1.28,"Priest costumes"],[6,7,1.09,"Oranges"],[6,8,1.11,"Pears"],[7,9,1.16,"Yellow shoes"],[8,10,1.15,"Red shoes"],[10,15,1.5,"Red Ferrari"],[11,15,1.4,"Yellow Ferrari"],[13,16,1.25,"Organic grapes"],[14,19,1.3,"Organic wine"]]}
またはRデータフレームとして:
structure(list(buy = c(1L, 1L, 2L, 3L, 4L, 6L, 6L, 7L, 8L, 10L,
11L, 13L, 14L), delivery = c(2L, 3L, 3L, 7L, 7L, 7L, 8L, 9L,
10L, 15L, 15L, 16L, 19L), profit = c(1.1, 1.15, 1.15, 1.3, 1.28,
1.09, 1.11, 1.16, 1.15, 1.5, 1.4, 1.25, 1.3), item = c("Apples",
"Viagra", "Notebooks", "Nun costumes", "Priest costumes", "Oranges",
"Pears", "Yellow shoes", "Red shoes", "Red Ferrari", "Yellow Ferrari",
"Organic grapes", "Organic wine")), .Names = c("buy", "delivery",
"profit", "item"), row.names = c(NA, -13L), class = "data.frame")
リンク
グラフ用のRパッケージ(最短経路など)はありますか? (igraphはshortest.paths関数を提供し、Cライブラリに加えて、RパッケージとPythonインターフェイスを備えています)