倉庫(4,1,2,10,9)のIDを顧客にどれくらい近づけるかを返すスクリプトがあります。PHPを使用した複数の倉庫における不均一な商品配分のアルゴリズム
$warehouse_rank = array('0'=>4,'1'=>1, '2'=>2, '3'=>10, '4'=>9);
Iデータベースから製品を検索する場合、私は、倉庫在庫および量でそれを持っているの内訳を返します。そうのような:
foreach ($warehouse_rank as $key => $warehouse_id){
if($product_breakdown['storage'][$product_id['output']]['breakdown'][$warehouse_id] >= $posted->order->quantity) {
}
}
問題は、これが唯一検出しているが:
$product_breakdown = array(
'storage'=>array(
'10001'=>array(
'total_stock'=>89,
'breakdown'=>array(
'4'=>0,
'1'=>89,
'2'=>0,
'10'=>0,
'9'=>0
)
)
)
);
10001 is the product ID in this case.
私は私はそれを注文することができ、所望の量を持っている倉庫を決定するためにこのループを作っ要求された数量が倉庫で全体として使用可能な場合。
要求された数量が複数の倉庫に分散している場合、どうすればいいのか、私は頭を悩ますことができません。例えば
は:
彼らは、20個を要求します。
そして、配布は以下の通りです。'4'=>5pc, '1'=>5pc, '2'=>1pc, '10'=>8pc, '9'=>10pc
。
だから、理想的に倉庫が割り当てられます何か:WID:4=5pc, WID:1=5pc, WID:9=10pc.
二つの要因がありますが、どれだけ近い倉庫があります。可能な限り最小限の倉庫での配賦を達成するために必要です。
これにアプローチする方法はありますか。
倉庫の数は動的です。多かれ少なかれ倉庫が存在する可能性があります。最も近い倉庫からできるだけ多くの量を取り出したいと思います。それは私が$warehouse_rank
を持っている理由です。
PS。私は実際の注文をする方法の助けを求めていません。倉庫ごとの数量割り当てだけ。
2番目の例のように、顧客は4つの別々のパッケージを合計20個受け取る必要がありますか? – Andreas
これは卸売り顧客向けです。いくつかのケースでは、彼らは部品で注文を受け取り、他の商品では他の商品と組み合わされます。しかし、現時点では必要ではないので、複数の倉庫ごとに特定の数量をどのように配分するのか分かりません。それで、彼らはそれらに割り当てられた量を準備することができます。理想的には、WID:4 = 5、WID:1 = 5、WID:9 = 10 @Andreas – Borsn
のようなものを理想的に得るために、この種の「ベストフィット」アルゴリズムはPHPとは無関係で、 SOにはあまり適していません。 https://softwareengineering.stackexchange.com/ – Sammitch