経済的発注量 EOQ 計算ツール
年間需要1,000個、発注費用10、単位あたりの年間保管費用0.5なら、最適な発注量は200個です。年5回の発注で在庫費用は合計100となり、発注費と保管費がちょうど半分ずつです。ブラウザで無料で使えます。
- 無料
- ブラウザで動作
- 登録不要
- データは端末の外に出ません
無料で実行
計算例
- 年間需要
- 1,000
- 発注費用
- 10
- 在庫保管費用
- 0.5
- Eoq
- 200
- 年間発注回数
- 5
- 年間発注費用
- 50
- 年間在庫保管費用
- 50
経済的発注量(EOQ)とは、需要が安定し補充が即時であるとき、発注コストと在庫保管コストの合計を最小にする発注ロットです。計画担当者、購買担当者、オペレーション分析者は、リードタイム、数量割引、多段階制約を加える前の透明な基準が必要なとき、今でも Harris–Wilson の平方根式に頼ります。
EOQ の意味と平方根公式の仕組み
在庫管理者は古典的なトレードオフに直面します。発注が多すぎると固定の発注・段取り費用が積み上がり、一度に多すぎると平均在庫とともに資本・保管・保険・陳腐化コストが上がります。標準の仮定(年間需要一定、発注あたり固定費、平均在庫に比例する保管費、即時補充)の下では、関連する年間総コストは発注費用×発注回数に、保管費用×発注量の半分を加えたものです。
発注量 Q で微分し導関数をゼロにすると、よく知られた経済的発注量 EOQ は、2×年間需要 D×発注費用 S を単位あたり年あたり保管費用 H で割ったものの平方根になります。最適点では年間発注費用と年間保管費用が等しくなり、表計算を監査するときの健全性チェックになります。
EOQ を (2×D×S÷H) の平方根として計算し、年間発注回数を D÷EOQ、年間発注費用をその頻度×S、年間保管費用を EOQ の半分×H、年間在庫総コストを両者の和として導きます。需要を決定的かつ連続とみなすときの、それらの拡張が依拠する透明な基準です。
入力契約・応答形状・エラー時の挙動
保管費用は厳密に正でなければなりません。H がゼロまたは負だと EOQ 式は未定義または無意味になるため、無限大や空のゼロを返すのではなくタスクが失敗します。教科書の検算例では、年間需要 1000、発注費用 10、保管費用 0.5 のとき EOQ は 200、年間 5 回の発注、年間発注・保管コストは各 50、総年間コスト 100 になります。
単位は一貫させてください。需要が年あたりケースなら、保管費用もケースあたり年あたりであり、ピース単位ではありません。本計算は連続最適のみを返し、発注書や ERP 仕訳は出力しません。
活用例
調達ロットのサイジング
年間需要、固定の発注費用、単位あたり年間保管費用から、ERP や購買チェックリスト向けの透明な EOQ 基準が必要なときに、繰り返し購買発注のロットを決めます。
教室・LMS の採点
非正の保管費用を拒否し、D・S・H について安定した丸め済みの根を返す決定的 EOQ オラクルで、在庫管理の宿題を採点します。
S&OP・コンサルモデル
計画ノート内で連続 EOQ とコスト内訳を生成し、梱包倍数・割引・多段階制約は別途適用する前の基準にします。
よくある質問
経済的発注量の公式は何ですか?
EOQ = sqrt(2 × 年間需要 D × 発注費用 S ÷ 保管費用 H) です。
保管費用がゼロまたは負のときはどうなりますか?
保管費用は厳密に正でなければなりません。そうでなければ EOQ 式は未定義または無意味であり、呼び出しは課金されません。
需要と費用にはどの単位を使うべきですか?
単位を一貫させてください。年間需要は年あたり単位、発注費用は 1 回あたり通貨、保管費用は単位あたり年あたり通貨です。本計算は通貨換算や単位変換を行いません。
EOQ に安全在庫やリードタイムは含まれますか?
いいえ。 古典的 EOQ は需要が安定し補充が即時のときの発注量を最適化します。安全在庫と発注点は、ロット決定のあとに行う別計算です。
EOQでは発注費用と保管費用がなぜ同じになるのですか?
経済的発注量は、その2つの費用がちょうど釣り合う点だからです。年間1,000個、発注費用10、保管費用0.5の例ではどちらも50になり、合計100が最も低い費用になります。
関連ツール
開発者向け — APIアクセス
このページの機能はすべてAPIからも利用できます。自社システムに組み込みたいチーム向けのセクションです。それ以外の方は上のツールをそのままお使いください。
エンドポイント
Bearerトークンで認証し、POST1回でタスクをキューに登録します。結果はWebhookまたは署名付きリンクで受け取れます。
お使いのスタックから呼び出す
curl -X POST https://api.kit.forhosting.com/biz/eoq-calculate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"annual_demand":1000,"ordering_cost":10,"holding_cost":0.5}'const res = await fetch("https://api.kit.forhosting.com/biz/eoq-calculate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"annual_demand": 1000,
"ordering_cost": 10,
"holding_cost": 0.5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/biz/eoq-calculate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"annual_demand": 1000,
"ordering_cost": 10,
"holding_cost": 0.5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/biz/eoq-calculate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"annual_demand":1000,"ordering_cost":10,"holding_cost":0.5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"annual_demand":1000,"ordering_cost":10,"holding_cost":0.5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/biz/eoq-calculate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)リクエスト例
{
"annual_demand": 1000,
"ordering_cost": 10,
"holding_cost": 0.5
}レスポンス例
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "biz.eoq_calculate",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}非同期APIです。task_idは即時に返ります。ポーリングは1秒あたり1リクエストまでです。
料金
単価はすべて公開しています。トークン換算や独自クレジットはありません。失敗したタスクは課金されません。
エラー
| HTTP | コード | 意味 |
|---|---|---|
401 | unauthorized | APIキーが無効か、指定されていません。Authorizationヘッダーを確認してください。 |
402 | insufficient_balance | 残高が不足しています。チャージ後に再度お試しください。 |
404 | unknown_type | 指定されたタスクタイプは存在しません。タイプ名を確認してください。 |
429 | rate_limited | リクエストが多すぎます。しばらく待ってから再度お試しください。 |
技術的な注記
本 EOQ 計算ツールは年間需要 D、1 回あたりの発注費用 S、単位あたり年あたり保管費用 H を受け取り、最適ロット EOQ と年間発注回数、そのロットでの年間発注・保管コストを返し、保管費用(または他の入力)が厳密に正でない場合は invalid_input で失敗します。
EOQ の意味と平方根公式の仕組み
本エンドポイントはその閉形式をそのまま実装します。
入力契約・応答形状・エラー時の挙動
POST で JSON 本文に、必須の正の有限数 3 つを送ってください。annual_demand(D、年あたり単位)、ordering_cost(S、1 回あたり通貨)、holding_cost(H、単位あたり年あたり通貨)です。各フィールドは JSON 数値でも数値文字列でも構いません。欠落、空文字、非有限値、ゼロ、負値はフィールド名付きの invalid_input で失敗します。成功時は 3 つの入力をエコーし、eoq、orders_per_year、annual_ordering_cost、annual_holding_cost、total_annual_cost、および EOQ が (2×D×S÷H) の平方根である旨の短い formula 文字列を返します。数値結果は、梱包倍数への丸め、最小発注量、トラック積載段差などの自社ロット方針と本エンドポイント外で組み合わせてください。
EOQ 計算ツールが役立つ場面
調達・在庫チームは、ERP や前年実績から年間使用量とコストパラメータが分かるとき、繰り返し購買発注のロットを決めるために経済的発注量計算ツールを使います。財務・オペレーションの授業では、非正の保管費用を拒否する決定的オラクルが必要で、サイレントに NaN を出して誤った採点器が成功と扱う事態を避けられます。検証失敗は残高を消費しません。コンサルモデルや S&OP ワークブックは、数量割引・共同補充・複数倉庫配分を重ねる前に透明な基準ロットが必要になることが多く、小さな parse API を呼べば、セル書式を変えただけでずれる壊れやすい表計算の平方根を埋め込まずに済みます。実装は純 parse の tier A のため、成功した呼び出しはモデルトークンも外向きネットワークもなく、公開の基本料金 $0.002 です。リクエストを小さく保ち、丸めた EOQ とコスト項目をテストで固定すれば、自前で完全な在庫最適化スタックを立てなくても、研修・LMS プラグイン・エッジワーカー向けに再現可能なロットサイズが得られます。
技術的な質問
経済的発注量計算ツールの料金はいくらですか?
ブラウザ版は無料です。API リクエストは前払い KIT 残高を成功 1 回あたり $0.002 で使用し、無効な入力は課金されません。