2017-10-28 5 views
-1

私は注文管理のためのアプリケーションに取り組んでいます。 1つの注文に複数の製品が含まれており、各製品が倉庫にあるため、出荷数量に基づいてパッケージに入れる注文数を分割する最良の組み合わせを見つけなければなりません。C#注文数量は倉庫ごとに分割されます

たとえば、私は2つの倉庫W1、W2を持っています。顧客は数量9の2つの製品P1と数量1の製品P2を発注します。状況P2は倉庫W1にのみ存在し、製品P1は両方の倉庫に存在します。今私は最も安いコストを見つけるために、この順序を2つのパッケージに分割するためのすべての可能な組み合わせを見つけたいと思います。数量が5以下(梱包限度額は5)の倉庫は、それぞれ定額($ 5)の料金がかかり、量が5を超えるものは定額+追加料金がかかります。 W1の追加費用は1ドル、W2は2ドルです。

Product W1 W2 P1 9 P2 1 N/A

Product W1 W2 P1 8 1 P2 1 N/A

Product W1 W2 P1 7 2 P2 1 N/A . . .

Product W1 W2 P1 1 8 P2 1 N/A

Product W1 W2 P1 9 P2 1 N/A

私は紙の上で、このようなリストを作成することができていますし、コストと私が発見された最良の組み合わせを計算し、定額W1は1パckage $ 5とW2は別のパッケージ$ 5を送っているので、総コストは$ 10です。パッケージ内の数量が5を超えないため、追加コストはかかりませんでした。これまでのところ、このコンビネーションを進めることはできず、何か助けが必要です。 linqが助けることができるものですか?

Product W1 W2 P1 4 5 P2 1 N/A

答えて

0

それは非常に簡単です、あなたは全体の順列上を通過する必要はありません。私はLINQも使用しません。ただ、簡単な、のようなアルゴリズムを使用して、注文プランナーのサービスを記述します。注文数が5以下であれば、すべての製品については

  • を、まず、W2からそれらのすべてを使用しよう。 W2の容量が不足している場合は、可能な限りW2から使用し、残りのカウントをW1から使用してください。
  • 注文数が5を超える場合は、まずW2の5つを使用してください。 W2の容量が不足している場合は、できるだけ多くのものをW2から使用し、残りのW1のカウントを使用してください。

このアルゴリズムを適用すると、期待どおりの結果が得られます。

+0

情報をありがとう、それを実装しようとします。 – Pramod

+0

お手伝いがあれば、受け入れられた回答としてマークしてください。実装に関する他の質問があれば、あなたも聞くことができます。 – balayoglu

関連する問題