経済的発注量(EOQ)

learn menu
ジョアネス・ヴェルモレル、2012年1月

EOQ(経済的発注量)は、総在庫コストを最小化するための補充のための発注数量です。発注は、在庫レベルがリオーダーポイントに達した時点でトリガーされます。EOQは、購入コスト(ボリュームディスカウントを含む場合があります)、在庫保有コスト、発注コストなどの組み合わせを最小化するために計算されます。発注数量の最適化は、リオーダーをトリガーするための最適な「しきい値」を見つけることに焦点を当てた安全在庫の最適化と補完的な関係にあります。

2020年7月更新:EOQはかなり時代遅れの視点であり、将来の需要が完全に把握され、一定であるという「静的」な視点に根ざしています。以下に示す数式は「教科書的な」サプライチェーンですが、基本的な視点は設計上の問題があります。在庫の余剰単位ごとの限界経済貢献の評価に関連する確率的な需要予測は、はるかに優れたアプローチです。もはやEOQの概念を使用することはお勧めしません。

モデルと数式

古典的な EOQ数式(以下のウィルソン数式を参照)は、発注コスト(注文ごとの一律の料金と想定される)と在庫保有コストのトレードオフです。この1913年の数式は非常によく知られていますが、現代のサプライチェーン環境では、このような数式を使用することをお勧めしません。この数式の基礎となる数学的な仮定は、現在では単純に間違っています。

歴史的な数式では、発注の行為のコストが主要なビジネスドライバーであると仮定しています。1913年当時、書類を手動で管理するために大勢の事務員が必要であったため、この要素は重要な要素でしたが、在庫管理ソフトウェアや可能な場合はEDIにより、この要素は通常無視できるほど小さくなります。その結果、数式による「最適化」はほとんど意味をなさず、大量注文時に利用できる価格優遇を完全に無視しています。

Excelシートのダウンロード: eoq-calculator.xlsm(計算例)

したがって、ここでは在庫保有コストとボリュームディスカウントのトレードオフを最適化するEOQ数式の変種を提案します。以下の変数を導入しましょう:

  • $${Z}$$:リード需要
  • $${H}$$:リードタイムの間の単位あたりの_保有コスト_
  • $$\delta$$:リオーダーポイントに到達するために必要なデルタ在庫数量(2)
  • $${P}$$:注文数量$$q$$に依存する関数である単位あたりの購入価格

(1) ここで考慮される時間範囲はリードタイムです。したがって、通常よりも一般的な_年間_保有コスト$$H_y$$ではなく、$$H = \frac{d}{365}H_y$$を考慮しています。ここで$$d$$は日数で表されるリードタイムです。

(2) デルタ数量は、手元の在庫$$q_{hand}$$と注文中の在庫$$q_{order}$$の両方を考慮する必要があります。これにより、$$\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)$$

この関数は見た目が複雑に見えるかもしれませんが、ここで提供されているシートによって簡単にMicrosoft Excelで計算することができます。

注文コストについては?

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

コスト関数

ボリュームディスカウントを考慮した注文数量のコスト関数をモデル化するために、リオーダーポイント$${R}$$を導入しましょう。在庫コストは、在庫_保有_コストと_購入コスト_の合計です。

$$C(q)=\left(R+\frac{q-\delta-1}{2}\right)H+Z\mathcal{P}(q)$$

実際には、リード需要$${Z}$$がリードタイムの期間にわたって分散していると仮定すると、注文する総数量は$${Z}$$になります。

そのため、在庫レベルは常に変動していますが、厳密な最小リオーダー(つまり$${q=δ+1}$$)を考慮すると、時間の経過に伴う平均在庫レベルはリオーダーポイント$${R}$$と等しくなります。したがって、$${δ+1}$$よりも大きな注文数量を正確に考慮しているため、これらの余分な注文数量は平均在庫レベルを上方にシフトさせ(次のリオーダーポイントが到達する時間も遅らせる)、在庫レベルを上げています。

$${(q−δ−1)/2}$$は、リオーダーによって引き起こされる在庫のシフトを表しています。リード需要がリードタイムの期間に均等に分散されると仮定しています。係数$${1/2}$$は、注文数量が$${N}$$増加すると、平均在庫レベルが$${N/2}$$増加するためです。

コスト関数の最小化

$${C(q)}$$を最小化するためには、$${q}$$に依存しない部分を分離することから始めることができます:

$$C(q)=\left(R+\frac{q-\delta-1}{2}\right)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}$$の値の広い範囲で関数を計算することです。実際、ほとんどのビジネスでは、1,000,000ユニットを超える注文数量は必要ありませんし、$${q=1..1,000,000}$$のすべてのコスト値を計算しても、Excelを使用した通常のデスクトップコンピュータ上で1秒未満で処理できます。

ただし、実際のところ、この計算は、$$\mathcal{P}(q)$$が厳密に減少する関数であると仮定すると、大幅に高速化することができます。つまり、注文数量が増加すると、単位当たりの価格が厳密に減少するということです。実際、$$\mathcal{P}(q)$$が減少する場合、$${q=δ+1}$$から値の探索を開始し、反復し、最終的に$${C^∗(q+1)>C^∗(q)}$$の状況が発生した場合に停止することができます。

実際のところ、単価は数量とともに上昇することはほとんどありませんが、パレットやその他の特定のパッケージサイズを優先するコンテナが最適化されている場合には、曲線にいくつかの局所的な「バンプ」が観察される場合があります。

上記のExcelシートでは、単価が数量とともに厳密に減少すると仮定しています。もし単価が減少しない場合は、マクロ*EoqVD()*を編集して、単純な範囲探索に戻すことができます。

ウィルソンの公式

最もよく知られたEOQ公式は、1913年に開発されたウィルソンの公式です。この公式は以下の仮定に基づいています:

  • 発注コストは一定です。
  • 需要率は既知で、年間を通じて均等に分散されています。
  • リードタイムは固定されています。
  • 購入単価は一定であり、割引はありません。

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

  • $${D_y}$$: 年間需要量
  • $${S}$$: 注文ごとの固定のコスト(単位ごとのコストではなく、注文と出荷の操作に関連するコスト)
  • $${H_y}$$: 年間保有コスト

これらの仮定の下で、ウィルソンの最適EOQは次のようになります:

$$Q=\sqrt{\frac{2D_yS}{H_y}}$$

実際には、リードタイムの期間中の予測需要率(リード需要$${Z}$$をリードタイムで割ったもの)で$${D_y}$$を置き換え、リードタイムの期間中の保有コスト$${H_y}$$で$${H}$$を置き換えた、より局所的に調整されたバリアントの使用をお勧めします。

2つのEOQ公式の比較

小売業や卸売業の場合、このページの上部に示されている独自のEOQ公式は、ボリューム割引を重視しているため、ウィルソンの公式よりも適しており、より利益が出ると考えています。製造業の場合は、状況によります。特に、注文が新たな生産を引き起こす場合、注文コスト(生産設定)がかなり高く、その後の限界単位コストの利益がほとんどない場合があります。そのような状況では、ウィルソンの公式が適しています。