Laboratoire de simulation commerciale · V1

MIRROR

MIRROR

Un double numérique d'une petite boutique en ligne, pour tester des politiques de réapprovisionnement avant de les appliquer.

Protocole · fig. 1

Ne jamais confondre ce qu'on sait et ce qu'on suppose.

i.

Observé

Trois CSV : produits, ventes (avec stock de fin de journée), commandes fournisseur. Stockés tels quels.

table datasets
ii.

Hypothèses

Demande, délais, coûts estimés ; politique actuelle supposée ; scénarios. Modifiables, sérialisés en JSON avec chaque expérience.

ExperimentConfig
iii.

Simulé

Une ligne par scénario × politique × monde. Toujours étiqueté comme simulé dans l'interface.

table results

Résultats simulés à partir d'hypothèses et de données fictives. Pas des gains réels garantis.

Expérience · à vous

Combien de stock de sécurité ?

—profit moyen, z choisi
—profit moyen, sans stock de sécurité
—écart apparié moyen
—taux de service, z choisi

Modèle jouet écrit pour cette présentation (1 produit, 90 jours, mêmes nombres aléatoires pour les deux politiques). Le vrai MIRROR utilise SimPy, 3 produits et 11 politiques.

sans stock de sécurité (z = 0)z choisiaxe : profit simulé sur 90 jours (€)
Résultat · jeu fictif · 1 000 mondes
+ €

d'écart apparié pour sQ z=2.0 face à la politique actuelle supposée, sur 90 jours. Meilleure dans 100 % des mondes.

IC95 [+497 ; +530]
actuelle
26 876 €
sQ z=2.0
27 390 €

« z = 1,5 ; 2,0 ; 2,5 et sS z=2,0 sont indiscernables : la conclusion robuste est “stock de sécurité z ≥ 1,5 et lots EOQ”, pas le choix précis de z. »

Stress tests · fig. 4

Et si tout tournait mal ?

Effondrement de la demande

Pic de demande

Délais fournisseur ×2

Rupture fournisseur

Coûts d'achat +25 %

Combiné

Taux de service quand les délais doublent

actuelle · 86,0 %
sQ z=2.0 · 94,6 %

Regret maximal de sQ z=2.0 sur les 6 scénarios : 38 €. Mesures : IC95, P5/P95, CVaR 5 %, sensibilité un-facteur-à-la-fois.

Contrôles · relevés le 2026-10-22

Un simulateur se vérifie avant de se croire.

tests pytest réussis, dont l'interface Streamlit en headless

17/17

contrôles sur cas à résultat connu, dont une implémentation de référence indépendante

simulations dans l'expérience nº 1, rejouées à l'identique

≈ 1 ms

par simulation (3 produits × 90 jours)

Demande de SAC-TOILE (24 jours de rupture) : corriger la censure change l'estimation

naïve (tous les jours)
3,88/j
corrigée (sans rupture)
4,02/j
vraie valeur
4,0/j

Reproduction : l'expérience nº 1, rejouée depuis sa seule configuration, redonne la même empreinte a86ff7be310693a7.

Python · SimPy · Streamlit · SQLite

Simulé, pas promis.

MIRROR tourne en local, n'exécute aucune commande, aucune transaction, et ne se connecte à aucun compte réel.