Calculateur EOQ
Avec une demande de 1000 unités par an, 10 par commande et 0,5 par unité et par an de possession, la quantité économique de commande est de 200 unités : cinq commandes par an et 50 pour chaque coût. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Demande annuelle
- 1 000
- Coût de commande
- 10
- Coût de possession du stock
- 0,5
- Eoq
- 200
- Commandes par an
- 5
- Coût annuel de commande
- 50
- Coût annuel de possession du stock
- 50
La quantité économique de commande, ou EOQ, est la taille de lot qui minimise la somme du coût de passation et du coût de possession des stocks lorsque la demande annuelle est stable. Les équipes achats et opérations utilisent encore l'identité à racine carrée de Harris–Wilson, car il ne faut que trois chiffres que vous avez déjà : la demande annuelle en unités, le coût de lancer une commande et le coût de détenir une unité pendant un an. Ce calculateur EOQ accepte ces trois grandeurs finies et renvoie la taille de commande optimale, plus le nombre implicite de commandes par an et les deux jambes de coût qui se rejoignent au minimum.
Ce qu'est la quantité économique de commande et d'où vient la racine carrée
La quantité économique de commande est la taille d'ordre Q qui minimise la somme de deux coûts de stock opposés lorsque la demande est régulière et le réapprovisionnement instantané. Le coût annuel de passation baisse lorsque Q croît, car vous lancez moins de réapprovisionnements dans l'année. Le coût annuel de possession monte lorsque Q croît, car le stock moyen en main dans le classique en dents de scie vaut Q divisé par deux.
La formule de Harris–Wilson trouve l'unique Q positif où ces deux jambes de coût sont égales : EOQ est la racine carrée de deux fois la demande annuelle fois le coût de passation par commande, divisée par le coût de possession par unité et par an. La demande annuelle est le nombre d'unités que vous prévoyez d'utiliser ou de vendre en un an.
Le coût de passation est le coût fixe de lancer un achat ou un ordre de fabrication — paperasse, réception ou réglage machine — et non le prix d'achat des marchandises. Le coût de possession est celui de porter une unité pendant un an, couvrant capital, entrepôt, assurance et obsolescence, et il doit être strictement positif.
Lorsque le coût de possession est zéro, l'identité à racine carrée est indéfinie : il n'y aurait aucune pénalité pour un stock infini, donc le modèle ne s'applique pas et ce point d'accès refuse la requête. La capacité renvoie cette quantité-racine comme eoq et, lorsque la quantité est positive, les commandes par an comme demande annuelle divisée par eoq, avec les deux jambes de coût annuel qui se rejoignent au minimum.
Elle n'applique ni remises sur quantité, ni réapprovisionnement fini (modèle de quantité de production), ni stock de sécurité ; ce sont d'autres modèles avec des paramètres en plus.
Où un calculateur EOQ justifie sa place
Acheteurs et planificateurs de stocks utilisent un calculateur de quantité économique de commande lorsqu'une SKU a une demande annuelle raisonnablement stable et qu'ils veulent une taille de lot qui ne surcommande pas l'entrepôt ni ne sous-commande jusqu'à une tempête de tickets de réglage. Les superviseurs de production utilisent les trois mêmes chiffres comme contrôle du coût de réglage face au coût de possession avant de changer la longueur d'une série.
Les salles de recherche opérationnelle et de chaîne logistique ont besoin d'un oracle déterministe de la formule de Wilson pour que devoirs, greffons LMS et générateurs d'examens notent la même racine qu'un étudiant calculerait à la main, y compris l'échec franc lorsque le coût de possession n'est pas positif. Une validation en échec ne consomme pas de solde.
Cas d’usage
Taille de lot d'achat pour une SKU stable
Transformez la demande annuelle, le coût de passation par commande et le coût de possession par unité et par an en lot de cycle qu'un acheteur peut poser à côté des quantités de conditionnement actuelles.
Contrôles de cours et d'examen de la formule de Wilson
Notez les devoirs EOQ et les items d'examen générés avec un oracle déterministe à racine carrée qui refuse un coût de possession non positif au lieu d'inventer l'infini.
Revues de réapprovisionnement et de longueur de série
Versez les trois mêmes chiffres de politique dans une revue de production ou de stocks afin que le coût de réglage et le coût de possession se rencontrent sur une taille de lot documentée.
Questions fréquentes
Que se passe-t-il si le coût de possession est zéro ou négatif ?
Le coût de possession par unité et par an doit être un nombre fini supérieur à zéro ; une charge nulle ou négative rend l'identité à racine carrée EOQ indéfinie et n'est pas facturée.
Faut-il arrondir l'EOQ à un nombre entier d'unités ?
Le point d'accès renvoie la quantité réelle de Harris–Wilson arrondie half-up à six décimales. Si votre SKU ne se fractionne pas, arrondissez ce chiffre à une taille de conditionnement réalisable dans votre propre politique ; le modèle n'impose pas de lots entiers.
L'EOQ inclut-il le stock de sécurité ou les remises sur quantité ?
Non. Ce calculateur est le modèle EOQ de base avec réapprovisionnement instantané et sans remises. Stock de sécurité, point de commande, cadences de production finies (EPQ) et tableaux de seuils de prix sont des modèles distincts avec des entrées supplémentaires.
Quelle est la formule de la quantité économique de commande ?
C'est la racine carrée de deux fois la demande annuelle multipliée par le coût d'une commande, divisée par le coût de possession par unité et par an. Avec 1000 unités, 10 par commande et 0,5 de possession, on obtient 200 unités.
Que faut-il mettre dans le coût de commande et dans le coût de possession ?
Le coût de commande est la dépense fixe pour passer une commande : formalités, réception ou réglage de machine, pas le prix des marchandises. Le coût de possession est ce que coûte le stockage d'une unité pendant un an : capital, entrepôt, assurance et obsolescence.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/fin/eoq \
-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/fin/eoq", {
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/fin/eoq",
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/fin/eoq", 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/fin/eoq", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"annual_demand": 1000,
"ordering_cost": 10,
"holding_cost": 0.5
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.eoq",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Le coût de possession doit être strictement positif ; une charge de stockage nulle ou négative diviserait par zéro et est rejetée avec invalid_input plutôt qu'une quantité creuse d'infini.
Contrat d'entrée, forme de la réponse et comportement d'erreur
En cas de succès, le corps répète les trois entrées puis indique eoq. Exemple : mille unités de demande annuelle, dix de coût de passation par commande et un demi de coût de possession par unité et par an produisent une quantité économique de deux cents unités, cinq commandes par an et cinquante de chaque jambe de coût. Envoyez par POST un corps JSON avec trois nombres finis obligatoires. annual_demand est le nombre d'unités par an ; les alias demand et yearly_demand pointent vers le même champ. ordering_cost est le coût fixe de lancer une commande ; les alias order_cost et setup_cost sont acceptés pour que le livre d'achats conserve le nom de ses colonnes. holding_cost est la charge de possession par unité et par an ; les alias carrying_cost et holding_cost_per_unit sont acceptés. Chaque champ numérique peut arriver comme nombre JSON ou chaîne numérique. Les champs absents, les chaînes vides et les valeurs non finies échouent avec invalid_input en nommant le champ. Si holding_cost est zéro ou négatif, le gestionnaire refuse la requête avec un message indiquant que le coût de possession par unité et par an doit être positif, car l'identité EOQ diviserait par zéro. Si annual_demand ou ordering_cost est négatif, la requête échoue. Ces échecs ne sont pas facturés. Lorsque eoq est positif, le corps inclut aussi orders_per_year, annual_ordering_cost, annual_holding_cost et total_relevant_cost ; ces jambes facultatives sont omises, jamais null, lorsque eoq vaut zéro. Associez le JSON à votre propre tampon de délai si vous avez besoin d'un point de commande ; ce point d'accès renvoie seulement la taille de lot de cycle, pas un calendrier de stock de sécurité.
Où un calculateur EOQ justifie sa place
Comme l'implémentation est du parse pur de niveau A, chaque appel réussi coûte le prix de base publié $0.002 sans jetons de modèle ni réseau sortant. Gardez holding_cost strictement positif, annual_demand et ordering_cost non négatifs, figez dans les tests la taille de lot arrondie, et vous obtenez une quantité économique de commande reproductible pour listes d'achats, salles de classe et workers de périphérie sans dresser un moteur MRP à vous.
Questions techniques
Comment calcule-t-on la quantité économique de commande ?
EOQ = sqrt(2 × annual_demand × ordering_cost / holding_cost). Lorsque cette taille de lot est positive, l'API renvoie aussi les commandes par an (annual_demand / EOQ) et les deux jambes de coût annuel égales au minimum.
Combien coûte le calculateur EOQ ?
L'outil du navigateur est gratuit. Les requêtes API utilisent le solde prépayé KIT à $0.002 par appel réussi ; une entrée invalide n'est pas facturée.