経済的発注量(EOQ):定義および数式


著者Joannes Vermorel、2012年1月推敲



EOQとは補充する際の、全体の在庫費用を最小化する発注量のことです。受注は在庫レベルが再注文点に達したときに行われます。EOQは、購買コスト(大口注文割引を含む)、在庫維持コスト、発注コストなどのトータル・コストを最小化するために計算されます。注文量最適化は安全在庫最適化に補完する形となり、再注文を決定する際の最適な「値」を見つけることに焦点を当てています。

モデルと数式

伝統的なEOQ数式(下記のWilson Formulaの項をご覧ください)は、本来、注文ごとに一定の料金として想定される発注コストと在庫維持コストのトレードオフです。1913年に誕生したこの数式は非常に有名ですが、基本的には現代のサプライチェーンには適合しないと考えられます。まず第一に、電子注文(よく利用されているのが 電子交換EDIです)が、大々的に注文コストを下げているからです。第二に、注文の微調整を主に行っているのは値崩れ(つまり数量割引)であり、こちらは考慮されていないという理由からです。

エクセルシートをダウンロードする: eoq-calculator.xlsm (計算例)

したがって、ここで運営コスト対数量割引の相殺を最適化するEOQ公式の変形を提案します:
  • $Z$ はリード需要。
  • $H$ はリードタイムにおける単位当たりの「維持コスト」(1)。
  • $\delta$ は再注文ポイントに達するために必要な超過在庫量(2)。
  • $\mathcal{P}$ は単位当たりの購買価格、注文量 $q$ にかかる関数。

(1)ここでの時間範囲はリードタイムです。したがってより一般的な「年間」維持コスト $H_y$ を考える代わりに、$d$ を日数で表したリードタイムと仮定し、$H = \frac{d}{365}H_y$ を考えます。

(2)超過量は手元在庫$q_{hand}$ と仕入れ注文 $q_{order}$ の両方を考慮する必要があります。$R$ は再注文ポイントで、$\delta = R - q_{hand} - q_{order}$ となります。直感的に、$\delta+1$ は望ましいサービスレベルを維持するための注文最小量ということが分かるでしょう。

そして、最適注文量はこのようになります(詳しい理由は下記をご覧ください): $$Q = \underset{q=\delta+1..\infty}{\operatorname{argmin}}\left(\frac{1}{2}(q-\delta-1)H+Z\mathcal{P}(q)\right)$$ 一見複雑そうに見えますが、この関数は上記で提供しているシートで示されているように、マイクロソフト・エクセルで簡単に計算できます。

注文コストについては?

一見しただけでは、注文コストは0と仮定したように見えますが、そうではありません。実際、ここで紹介しているフレームワークは比較的フレキシブルで、発注コストは(あるとすれば)価格関数$\mathcal{P}$ に組み込むことができます。

費用関数

数量割引を考慮に入れた注文量についての費用関数をモデル化するために、再注文ポイント$R$ を導入しましょう。在庫コストは在庫「維持コスト」プラス「購入コスト」の合計なので、以下のようになります: $$C(q)=\left(R+\frac{q-\delta-1}{2}\right)H+Z\mathcal{P}(q)$$ 確かに、償却の観点をリードタイム期間に考慮すると注文合計量はリード需要$Z$ となります。

次に、在庫レベルは常に変化しているのですが、厳密な最小再注文(つまり $q=\delta+1$) を考慮すると、期間の平均ストックレベルは再注文ポイント$R$ と等しくなります。それから、正確に注文量を$\delta+1$ 以上と考えているため、これらの超過注文量は平均在庫レベルを上げます(そして次の再注文ポイントに達する時期が後ろにずれ込みます)。

$(q-\delta-1)/2$ は、リード需要がリードタイム期間に公平に配分された最注文によるものだと仮定し、在庫シフトを表します。因数1/2は、増加注文量Nが平均在庫レベルN/2を増加させるだけなので、正しいといえます。

費用関数の最小化

$C(q)$ を最小化するために、$q$ に依存しない部分を切り離すことから着手します: $$C(q)=RH+\frac{1}{2}(q-\delta-1)H+Z\mathcal{P}(q)$$ $RH$ は$q$ に依存しないので、$C(q)$ の最適化は$C^*(q)$ の最適化と同様になり、以下のようになります: $$C^*(q)=\frac{1}{2}(q-\delta-1)H+Z\mathcal{P}(q)$$ それからの、この文脈では、数量割引関数$\mathcal{P}$ が任意関数であるため、この式を最小化する直接の代数的解決法はないと言えます。しかし、この最小化が困難な問題であるということではありません。

$C^*(q)$ の単純な最小化は(単純な)膨大な数的調査を行うことになり、これは$q$ 値の大規模な範囲に亘って式を計算することになります。確かに、バーチャルでは百万単位以上の注文量が必要なビジネスはありませんし、コンピュータに $q=1..1,000,000$ のすべてのコストを計算させても1秒以下で計算が可能です。それは通常のデスクトップコンピュータのエクセルで行っても同様です。

しかし、実際には、$\mathcal{P}(q)$ が正確に減少している関数と仮定するならば、この計算は非常に加速されます。言い換えれば、注文量が増加するにつれて「単位当たり」の価格は正確に減少しているということです。確かに、$\mathcal{P}(q)$ が減少すれば、$q=\delta+1$ で数値調査を開始でき、それを繰り返して最終的に$C^*(q+1)>C^*(q)$ になる時点で終了します。

実際には、単位価格は量の増加とともに上昇することはまれですが、輸送をパレット、またはその他の輸送コンテナ内で最適化する際に曲線上で個々に凹凸が見られることもあります。

上記に添付しているエクセルの中では、単位価格が量に応じて正確に減少していると仮定しています。万が一そういうケースでない場合は、マクロ「EoqVD()」をエディットし、単純範囲調査に戻ってください。

経済発注量(Wilson Formula)

最も有名なEOQ公式は、1913年に開発された 経済発注量(Wilson Formula) です。この公式は以下の仮定に基づいています:

  • 発注コストが一定である。
  • 需要率が分かっていて、年間を通して平均的に分散している。
  • リードタイムが固定されている。
  • 購入単価価格が一定(つまり割引はない)。

以下の変数を導入しましょう:

  • $D_y$ は年間の需要量。
  • $S$ は固定された注文ごとの「一定」コスト(「単位あたり」コストではないが、注文と輸送オペレーションに関係するコスト)。
  • $H_y$ は「年間」維持コスト。

これらの仮定の下、ウィルソン式最適EOQは以下のようになります: $$Q=\sqrt{\frac{2D_yS}{H_y}}$$ 具体的には、この式は、より現場に適合した変数(時間的観点から)を使うようお勧めします。そこでは、$D_y$ をリードタイム期間の予測需要率$D$ に代え(別名、リードタイムで割られるリード需要$Z$)、$H_y$ をリードタイム期間の維持コスト$H$ に代えて使います。

二つのEOQ公式の比較

小売業、卸売業にとって、この項で上述した弊社の「アドホック的」EOQ式は、数量割引に重点をおいているため、ウィルソン公式よりも適しており、収益が高くなります。製造業についてはケースバイケースとなります。特に新製品の注文については、膨大な発注コストが発生し(製品設定)、その後の限界単位費用における利益はほとんどないかゼロに等しくなるかもしれません。そのような状況においては、ウィルソン公式はより適切と言えるでしょう。

弊社のウェブアプリSalescasで販売予測の最適化を図ってください。Lokadは需要予測を通した在庫最適化を専門としています。補充の最適化、といった様々な機能がSalescas本来の特徴です。