最も効率的な方法で最も利益と密度の高い組み合わせを計算するにはどうすればよいですか?

Korgan Rivera

私は私を悩ませている組み合わせの問題を抱えています。誰かに彼らの考えを教えてもらい、私が見落としているかもしれない明らかな解決策が欠けているかどうかを指摘してもらいたい。

1つのサプライヤからすべての供給品を購入するショップがあるとします。サプライヤーは販売アイテムのリストを持っています。各アイテムには次の属性があります。

size, cost, quantity, m, b

mおよびbは、次の式の定数です。

sales = m * (price) + b

この線は下向きに傾斜しています。この方程式は、特定の価格を請求した場合に販売できるアイテムの数を示しています。各アイテムには、独自のm値とb値があります。

その店の保管スペースと資金が限られているとしましょう。このショップは、倉庫を可能な限り最も収益性の高いアイテムで埋めたいと考えています。

(ちなみに、利益密度=利益/サイズ。利益密度はアイテムのサイズのみであると定義しています。サイズコストの密度で作業できますが、そのためには必要があります。倉庫スペースのコストを知っています。それは私が現在知っている数ではないので、サイズを使用するだけです。)

アイテムの利益密度は、購入するほど低下します(以下を参照)。

一次方程式を反転すると、特定の期間に特定の量のアイテムを販売するために請求する必要のある価格がわかります。

price = (sales-b)/m

したがって、n個のアイテムを購入し、それらすべてを販売したい場合は、課金する必要があります。

price = (n-b)/m

これからの収入は

price*n = n*(n-b)/m

利益は

price*n-n*cost = n*(n-b)/m - n*cost

そして利益密度は

(n*(n-b)/m - n*cost)/(n*size)

または、同等に

((n-b)/m - cost)/size

したがって、利用可能なすべてのアイテムと、各アイテムの利益密度を含むテーブルがあるとします。

問題は、ショップが稼ぐ金額を最大化するために、各アイテムをいくつ購入するかということです。

1つの可能性は、コストとスペースの範囲内でアイテムの可能なすべての組み合わせを生成し、最も収益性の高いコンボを選択することです。1000アイテムのリストでは、これには時間がかかりすぎます。(私はこれを試しましたが、1000のリストには17秒かかりました。恐ろしいです。)

私が(紙の上で)試したもう1つのオプションは、リストの上位2つの最も収益性の高いアイテムを選択することでした。最も収益性の高いアイテムA、2番目に収益性の高いアイテムB、3番目に収益性の高いアイテムCと呼びましょう。アイテムBよりも収益性が低くなるまで、できるだけ多くのアイテムAを購入します。次に、Bを使用してこのプロセスを繰り返します。およびC、リスト内のすべてのアイテム。

ただし、アイテムBを購入した後、アイテムAがCよりも最も収益性の高いアイテムである場合があります。したがって、リソースが使い果たされるまで、現在の最も収益性の高いアイテムから次のアイテムに移動する必要があります。私はこれを行うことができましたが、それを行うには醜い方法のようです。

動的計画法を考えましたが、購入量によって商品の利益密度が変化するため、解決策が思いつきませんでした。

私は多重線形回帰を検討しましたが、「検討する」とは、「多重線形回帰はオプションですか?」と自分に言い聞かせたことを意味します。そしてそれで何もしませんでした。

私のスパイダーマンは、私を正面から見つめるはるかに明白な方法があることを私に教えてくれますが、私はそれを見ていません。私が自分自身とfacepalmを同時に蹴るのを手伝ってください。

mcdowella

これを動的計画法の演習として扱い、限られたリソースを最大限に活用することができます。

簡単な例として、スペースの制約を満たし、コストの制約を無視することを検討してください。次に、利用可能なスペースで最大の利益を生み出すアイテムを見つけたいと思います。使用されるスペースを整数として表現することが合理的であるように単位を選択し、次に、i = 1からアイテムの数まで、制限までのスペースの整数値ごとに、最初のiアイテムの選択を計算します。ほとんどの場合、その量のスペースが返されます。いつものように、iの回答からi + 1の回答を計算できます。0からスペースの制限までの各値について、そのスペースの量までのi +1番目のアイテムのすべての可能な数量を考慮して作業します。その量のアイテムを使用し、最初のiアイテムについてすでに計算した回答に従って、残りのスペースを使用することによる合計収益を計算します。

スペースとコストの両方に制約がある場合、動的プログラムの状態は単一の変数(スペース)ではなく、変数のペア(スペース、コスト)になりますが、作業量は増えますが、それでも解決できます。(0、0)から実際の制約までの(スペース、コスト)のすべての可能な値を考慮してください-0から最大スペースまでの単一の値のセットの代わりに、計算するリターンの2次元テーブルがあります。ただし、i = 1からNまで作業して、(スペース、コスト)の各制限について最初のiアイテムの可能な限り高いリターンを計算し、iの回答を使用してi +1の回答を計算することができます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

2つの形のない関数(replaceAtとat)を最も簡単な方法で組み合わせるにはどうすればよいですか?

分類Dev

テトリススタックの高さプロファイルを最も効率的に計算するにはどうすればよいですか?

分類Dev

テトリススタックの高さプロファイルを最も効率的に計算するにはどうすればよいですか?

分類Dev

多数のパラメーターの組み合わせで関数を計算する最も効率的な方法

分類Dev

リスト内で最も頻繁に使用される数字の組み合わせを見つけるにはどうすればよいですか?

分類Dev

JavaでUDPとRPCを組み合わせる最も簡単で効率的な方法は何ですか?

分類Dev

最も近いポイントのクエリがすばやく計算されるように、ポイントのセット(埋め込み)を格納する最も効率的な方法は何ですか?

分類Dev

このコレクションを組み合わせる最も効率的な方法は何ですか?

分類Dev

複数のy = mx + b方程式を組み合わせる最も効率的な方法は何ですか?

分類Dev

pytablesでread_sortedとExprを組み合わせる最もメモリ効率の良い方法は何ですか?

分類Dev

赤と青の符号なしバイトを組み合わせてブレンドを最適化するにはどうすればよいですか?

分類Dev

最も効率的な方法でneo4jグラフに1対多の関係を作成するにはどうすればよいですか?

分類Dev

最適な時間計算量で効率的な方法でこれを解決するにはどうすればよいですか?

分類Dev

最も効率的な方法で複数のcamera2プレビューを作成するにはどうすればよいですか?

分類Dev

data.frame内で、他の列によって集約された複数の列の最も一般的な組み合わせを取得するにはどうすればよいですか?

分類Dev

JuliaでQR分解を最も効率的に使用するにはどうすればよいですか?

分類Dev

LabVIEWで最も単純なもの(組み込み関数のみを使用するもの)から最も複雑なものの順にVIをリストするにはどうすればよいですか?

分類Dev

他のテーブルから合計を選択して、最も高い3つの出力を選択するにはどうすればよいですか?

分類Dev

R / G / B値を最も効率的に変更するにはどうすればよいですか?

分類Dev

宝くじのすべての組み合わせを印刷する代わりに計算するにはどうすればよいですか?(C#)

分類Dev

2つのファイルの行の違いを計算する最も効率的な方法は何ですか?

分類Dev

最も効率的な方法でコンソールを更新するにはどうすればよいですか?(ヘビゲームc ++)

分類Dev

最も効率的な実行時間で指定された値に等しい、並べ替えられた配列内の連続する要素の算術平均があるかどうかを確認するにはどうすればよいですか?

分類Dev

RのID /行による組み合わせから計算された共起行列を作成するにはどうすればよいですか?

分類Dev

この組み合わせアルゴリズムをより効率的に作成するにはどうすればよいですか?

分類Dev

ページ付け(PHP、MySQL)を使用する場合、現在の合計/残高を計算する最も効率的な方法は何ですか?

分類Dev

特定の制約のある多数の組み合わせのリストを生成するための計算効率の高い方法は何ですか?

分類Dev

DataTable 列の合計数を計算する最も効率的な方法は何ですか

分類Dev

最も価値の高いタイトルを選択するにはどうすればよいですか?

Related 関連記事

  1. 1

    2つの形のない関数(replaceAtとat)を最も簡単な方法で組み合わせるにはどうすればよいですか?

  2. 2

    テトリススタックの高さプロファイルを最も効率的に計算するにはどうすればよいですか?

  3. 3

    テトリススタックの高さプロファイルを最も効率的に計算するにはどうすればよいですか?

  4. 4

    多数のパラメーターの組み合わせで関数を計算する最も効率的な方法

  5. 5

    リスト内で最も頻繁に使用される数字の組み合わせを見つけるにはどうすればよいですか?

  6. 6

    JavaでUDPとRPCを組み合わせる最も簡単で効率的な方法は何ですか?

  7. 7

    最も近いポイントのクエリがすばやく計算されるように、ポイントのセット(埋め込み)を格納する最も効率的な方法は何ですか?

  8. 8

    このコレクションを組み合わせる最も効率的な方法は何ですか?

  9. 9

    複数のy = mx + b方程式を組み合わせる最も効率的な方法は何ですか?

  10. 10

    pytablesでread_sortedとExprを組み合わせる最もメモリ効率の良い方法は何ですか?

  11. 11

    赤と青の符号なしバイトを組み合わせてブレンドを最適化するにはどうすればよいですか?

  12. 12

    最も効率的な方法でneo4jグラフに1対多の関係を作成するにはどうすればよいですか?

  13. 13

    最適な時間計算量で効率的な方法でこれを解決するにはどうすればよいですか?

  14. 14

    最も効率的な方法で複数のcamera2プレビューを作成するにはどうすればよいですか?

  15. 15

    data.frame内で、他の列によって集約された複数の列の最も一般的な組み合わせを取得するにはどうすればよいですか?

  16. 16

    JuliaでQR分解を最も効率的に使用するにはどうすればよいですか?

  17. 17

    LabVIEWで最も単純なもの(組み込み関数のみを使用するもの)から最も複雑なものの順にVIをリストするにはどうすればよいですか?

  18. 18

    他のテーブルから合計を選択して、最も高い3つの出力を選択するにはどうすればよいですか?

  19. 19

    R / G / B値を最も効率的に変更するにはどうすればよいですか?

  20. 20

    宝くじのすべての組み合わせを印刷する代わりに計算するにはどうすればよいですか?(C#)

  21. 21

    2つのファイルの行の違いを計算する最も効率的な方法は何ですか?

  22. 22

    最も効率的な方法でコンソールを更新するにはどうすればよいですか?(ヘビゲームc ++)

  23. 23

    最も効率的な実行時間で指定された値に等しい、並べ替えられた配列内の連続する要素の算術平均があるかどうかを確認するにはどうすればよいですか?

  24. 24

    RのID /行による組み合わせから計算された共起行列を作成するにはどうすればよいですか?

  25. 25

    この組み合わせアルゴリズムをより効率的に作成するにはどうすればよいですか?

  26. 26

    ページ付け(PHP、MySQL)を使用する場合、現在の合計/残高を計算する最も効率的な方法は何ですか?

  27. 27

    特定の制約のある多数の組み合わせのリストを生成するための計算効率の高い方法は何ですか?

  28. 28

    DataTable 列の合計数を計算する最も効率的な方法は何ですか

  29. 29

    最も価値の高いタイトルを選択するにはどうすればよいですか?

ホットタグ

アーカイブ