Simulation dun système dinventaire. Simulation d'un système d'inventaire2 Énoncé du problème L'entreprise vend un seul produit. Elle veut déterminer combien.

Slides:



Advertisements
Présentations similaires
Chaîne de traitement Notion de plot
Advertisements

Introduction au Langage C,C++
Outils de Planification des Approvisionnements
ETUDE DU NEWS BOY PROBLEM
Après réception du remboursement FEDER le chef de file doit entrer sur Présage pour y saisir la date de réception du remboursement. Pour cela cliquez sur.
Algorithmes et structures de données avancés
1 - Finalités et Objectifs
1 Définitions et particularités Dans la gestion de projet nous pouvons distinguer deux notions : Le projet et la gestion Le projet consiste en un engagement.
REPUBLIQUE ALGERIENNE DEMOCRATIQUE ET POPULAIRE AGENCE NATIONALE DE SOUTIEN A L EMPLOI DES JEUNES Séminaire de formation des promoteurs, Tizi-Ouzou, Pépinière.
Atelier sur l'électrification Rurale avril 2007 Yaoundé, Cameroun Session 5 Opération et Maintenance Obstacles potentiels et leur mitigation Pape,
M. BENJELLOUN : Info II Mohammed BENJELLOUN Service dInformatique Faculté Polytechnique de Mons
Les pointeurs Manipulation d'adresses et de ce qui est contenu dans ces adresses Très important, fondamental même en C mauvaise réputation : 'dur à comprendre',
Tableaux Certains problèmes nécessitent beaucoup de variables du même type. Exemple : relevé de températures matin et soir dans 10 villes pour 10 jours.
IAS 23 « Coûts d'emprunt ».
Section VI Structures répétitives (suite)
RENCONTRE ANNUELLE 2009 Le catalogue et le processus dapprovisionnement Présenté par : Hugues Larivière.
Rappel probabilité : Définition classique
Prévisions des ventes :
Les bases de l’Algorithmique
Prévision de la Demande
Les Systèmes Multi-Agents pour la Gestion de Production
APPLICATION METHODE MARGE PAR UNITE DE PRODUCTION.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que lon veut allouer. Le premier exemple: #include void main()
Le cas de la demande déterministe non stationnaire
Par : Patrice Fournier, MSc.fin. CGA
Leçon 2 : Surcharge des opérateurs IUP 2 Génie Informatique Méthode et Outils pour la Programmation Françoise Greffier Université de Franche-Comté.
Dewey Broche M. Legros Mélissa Fontaine,
Gestion de l’inventaire
Cours schématique: Semaine #7
Des épreuves pratiques aux TP Des exemples en probabilités
Stock disponible Stock physique Stock réservé Stock théorique.
C++ : variables Déclaration de variables
Demande stochastique stationnaire
Chapitre 5 Prévisions.
Types de données fondamentaux
L’essentiel du langage C
Gestion au point de commande – établir les paramètres
Présentation par Christine Tonui Responsable des subventions, Bureau des recherches et projets parrainés MUCHS/MTRH-Kenya.
La fonction alloue un bloc de taille size. Il faut indiquer la taille du bloc que l’on veut allouer. Le premier exemple: #include void main()
STATISTIQUES – PROBABILITÉS
Jeu de Simulation d’entreprise
Les processus métiers : concepts, modèles et systèmes Claude Godart Université de lorraine. Esstin
DOSSIER G04 – Produire puis vendre des biens et des services
Gestion des stocks multi-échelon « Beer Game »
Chapitre 3: Variables aléatoires réelles continues
Conception de Programmes - IUT de Paris - 1ère année – Cours 8 – Les entrées/sorties Comment fonctionnent les opérateurs > pour les types élémentaires.
Se former : pourquoi et pour qui ?
Un programme Algorithme permettant au processeur de s'alimenter:
Présentation de Yellow Box 2.0
CREATION D’ENTREPRISE
Simulateur de Diffusion DVB-H
Introduction – Rôle et fonction des stocks
Structures de données avancées : LH* D. E ZEGOUR Institut National d ’Informatique.
8PRO107 Éléments de programmation Les adresses et les pointeurs.
Présentation de Yellow Box 2.0. Gestion des ventes Module de gestion des ventes Commandes de vente Livraisons Facturation Historique des ventes Étapes.
8PRO107 Éléments de programmation Les tableaux. Étude de cas 1 Description du problème : Lire une liste d’entiers et l’afficher d’abord dans le même ordre.
Limites des fonctions de référence
La gestion des stocks (Modèle de Wilson).
Structures de données IFT-2000 Abder Alikacem Laboratoire #1 Département d’informatique et de génie logiciel Édition Septembre 2009.
Définition Hr. = Heure Nbr. = Nombre Arr. = Arrivée Est. = Estimé Nouv. = Nouvelle Voici quelques définitions qui vous seront utiles tout au long de la.
Jeu O.G.P. Organisation et gestion de la production
Département Génie Thermique et Energie
TD 2: La gestion des stocks avec le logiciel Odyssée
1 Tableau de bord – Suivi de projet: XXXX Réalisations depuis le (Préciser la date du dernier coproj) Suivi des activités Suivi des charges Synthèse «
La gestion des stocks.
Gestion des stocks: Demande indépendante
Tous droits réservés © Promaintech Novaxa Analyse des tailles de lots Formation Green Belt Lean Six Sigma.
© Fujitsu Canada D MAIC Analyse du rendement qualité Formation Black Belt Lean Six Sigma.
Formation Green Belt Lean Six Sigma Analyse des tailles de lots
M. BENJELLOUN : 2005 Le but final est de programmer un jeu où l'ordinateur choisira un nombre aléatoire entre 0 et 100 que vous devez deviner.
Transcription de la présentation:

Simulation dun système dinventaire

Simulation d'un système d'inventaire2 Énoncé du problème L'entreprise vend un seul produit. Elle veut déterminer combien d'items, elle doit avoir en inventaire à chaque mois. Période : n mois. Délai entre chaque demande: v. a. exponentielle I.I.D. avec = 10/mois Une demande correspond à D unités: d1234 P(D=d)1/61/31/31/6 Au début de chaque mois, l'entreprise fait l'inventaire.

3 Énoncé du problème (suite) Elle commande Z items à un coût de K + CZ,(Z > 0). On reçoit la commande après U[0.5,1] mois. Politique de l'entreprise (s,S): Si l'inventaire est égale à I au début du mois, Z =S - Isi I < s 0sinon. Lorsqu'une demande arrive, si elle peut être satisfaite en entier, elle l'est immédiatement. Si la demande ne peut être satisfaite en entier, alors les items disponibles sont remis; les items manquants sont remis à la réception de nouveaux items; le niveau d'inventaire sera négatif.

Simulation d'un système d'inventaire4 Énoncé du problème (suite) I(t) = niveau d'inventaire au temps t. I + (t) = max {I(t), 0}= # items réellement en inventaire. I - (t) = max {-I(t), 0}= # items en arrérage. c h = coût de stockage par unité de temps (inventaire > 0) c a = coût d'arrérage par unité de temps (inventaire < 0) Nombre moyen d'items en inventaire par mois pour une période de n moi I + =

Simulation d'un système d'inventaire5 Énoncé du problème (suite) Nombre moyen d'items en arrérage par mois pour une période de n mois: I - = But: estimer le coût moyen par mois pour une politique (s, S) donnée:

Simulation d'un système d'inventaire6 Gestion des événements DÉBUT DUN MOIS (DÉCISION DUNE COMMANDE OU NON) Si I < s,PLACER UNE COMMANDE PRÉVOIR SA RÉCEPTION PRÉVOIR LE PROCHAIN DÉBUT DE MOIS; RÉCEPTION DUNE COMMANDE METTRE À JOUR LES COÛTS CUMULÉS; METTRE À JOUR LINVENTAIRE; PRÉVOIR LA PROCHAINE RÉCEPTION À ARRIVÉE DUNE DEMANDE METTRE À JOUR LES COÛTS CUMULÉS; GÉNÉRER LA TAILLE DE LA DEMANDE; DÉCRÉMENTER LE NIVEAU DINVENTAIRE; PRÉVOIR LA PROCHAINE DEMANDE.

Simulation d'un système d'inventaire7 Construction du simulateur /***************************************************************************** Simulation d'un système d'inventaire à un seul produit.On peut référer à Law et Kelton pour plus de détails. Le temps est mesuré en mois. Afin de raccourcir le dialogue lors de la lecture des données, plusieurs paramètres sont initialisés directement dans la procédure Lire_Donnees(). *****************************************************************************/ #include const double Maximum_des_reels = 3.4E38; long souche; enum Evenement{Debut_du_mois, Reception_commande, Demande_client, Fin_de_simulation};

Simulation d'un système d'inventaire8 Construction du simulateur float Temps;// Instant courant de la simulation float Duree_de_la_simulation;// Durée de la simulation en mois enum Evenement Evenement_courant;// Événement que nous sommes en train de traiter float Instant_Prochain_Evenement[3];// Instant d'occurrence du prochain événement prévu de // chaque type float Duree_moyenne_entre_2demandes;// Durée moyenne entre les demandes int Taille_demande[4];// F_rep_Demande[i] est la probabilité que la taille dune float F_rep_Demande[4];// demande soit <= à Taille_demande[i]. float Cout_fixe_par_commande;// Coût fixe pour chaque commande float Cout_additionnel_par_item;// Coût additionnel par item commandé float Cout_de_stockage_par_mois;// Coût de stockage par mois. float Cout_de_penurie_par_mois;// Coût par mois pour la pénurie floatDelai_livraison_min,// Bornes sur le délai de réception Delai_livraison_max;// d'une commande intPetit_s, Grand_S;// Seuils définissant la politique (s, S)

Simulation d'un système d'inventaire9 Construction du simulateur int Inventaire_initial;// Niveau initial de l'inventaire int Inventaire;// Niveau courant de l'inventaire int Items_en_attente_de_livraison;// Nombre d'items en attente de livraison float Cout_total_des_commandes;// Coût total pour les commandes à date float Integrale_inventaire;// Intégrale du nombre d'items en inventaire depuis 0 // jusqu'à l'instant courant float Integrale_arrerage;// Intégrale du nombre d'items en arrérage depuis 0 // jusqu'à l'instant courant float Temps_precedent;// Instant de la dernière mise à jour des intégrales ci-dessus void main() { float Duree_entre_deux_ventes();float Delai_livraison(); int Taille_de_la_demande(); void Lire_Donnees();void Initialisation_Simulation(); void Debut_mois();void Reception(); void Demande();void Rapport();

Simulation d'un système d'inventaire10 Construction du simulateur Lire_Donnees(); Initialisation_Simulation(); do { Evenement_courant = Debut_du_mois; if(Instant_Prochain_Evenement[Reception_commande] <= Instant_Prochain_Evenement[Evenement_courant]) Evenement_courant = Reception_commande; if(Instant_Prochain_Evenement[Demande_client] <= Instant_Prochain_Evenement[Evenement_courant]) Evenement_courant = Demande_client; Temps = Instant_Prochain_Evenement[Evenement_courant]; if((Evenement_courant == Debut_du_mois) && (Temps >= Duree_de_la_simulation)) Evenement_courant = Fin_de_simulation;

Simulation d'un système d'inventaire11 Construction du simulateur switch (Evenement_courant) { case Debut_du_mois :Debut_mois(); break; case Reception_commande:Reception(); break; case Demande_client :Demande(); break; case Fin_de_simulation :Rapport(); break; }; } while (Evenement_courant != Fin_de_simulation); float Duree_entre_deux_ventes() { // Génère la durée entre deux ventes successives. return (float) (-log(1.0 - (float)((rand() % 10000) / )) * Duree_moyenne_entre_2demandes); } }

Simulation d'un système d'inventaire12 Construction du simulateur float Delai_livraison() { // Génère une durée entre une commande et sa livraison. return Delai_livraison_min + (Delai_livraison_max - Delai_livraison_min) * (float)((rand() % 10000) / ); } int Taille_de_la_demande() { // Génère la taille d'une demande. float U; int i = 0; U = (float)((rand() % 10000) / ); while (U > F_rep_Demande[i]) i = i+1; return Taille_demande[i]; }

Simulation d'un système d'inventaire13 Construction du simulateur void Lire_Donnees() { /*Lecture de la durée de la simulation, de l'invention initial et des valeurs de seuil et initialisation des paramètres du modèle de simulation.*/ printf(" Veuillez fournir les renseignements suivants : \n\n"); printf(" Duree de la simulation (mois) = "); scanf("%f", &Duree_de_la_simulation); printf(" Inventaire initial = "); scanf("%d", &Inventaire_initial); printf(" Valeur du seuil minimal s = "); scanf("%d", &Petit_s); printf(" Valeur du seuil maximal S = "); scanf("%d", &Grand_S);

Simulation d'un système d'inventaire14 Construction du simulateur Duree_moyenne_entre_2demandes = 0.1f; Taille_demande[0] = 1;F_rep_Demande[0] = 1.0f / 6.0f; Taille_demande[1] = 2;F_rep_Demande[1] = 3.0f / 6.0f; Taille_demande[2] = 3;F_rep_Demande[2] = 5.0f / 6.0f; Taille_demande[3] = 4;F_rep_Demande[3] = 1.0f; Cout_fixe_par_commande = 32.0f; Cout_additionnel_par_item = 3.0f; Cout_de_stockage_par_mois = 1.0f; Cout_de_penurie_par_mois = 5.0f; Delai_livraison_min = 0.5f; Delai_livraison_max = 1.0f; }

Simulation d'un système d'inventaire15 Construction du simulateur void Initialisation_Simulation() { /*Initialise le système à vide, initialise l'horloge et tous les compteurs à 0. On prévoit le premier début de mois et la première vente (demande).*/ Temps = 0.0f;Temps_precedent = 0.0f; souche = time(NULL);srand((int)souche); Integrale_inventaire = 0.0f;Integrale_arrerage = 0.0f; Cout_total_des_commandes = 0.0f; Inventaire = Inventaire_initial; Instant_Prochain_Evenement[Debut_du_mois] = 0.0f; Instant_Prochain_Evenement[Demande_client] = Duree_entre_deux_ventes(); Instant_Prochain_Evenement[Reception_commande] = (float) Maximum_des_reels; }

Simulation d'un système d'inventaire16 Construction du simulateur void Debut_mois() { if(Inventaire < Petit_s) { Items_en_attente_de_livraison = Grand_S - Inventaire; Cout_total_des_commandes += Cout_fixe_par_commande + Items_en_attente_de_livraison * Cout_additionnel_par_item; Instant_Prochain_Evenement[Reception_commande] = Temps + Delai_livraison(); }; Instant_Prochain_Evenement[Debut_du_mois] = Temps + 1.0f; }

Simulation d'un système d'inventaire17 Construction du simulateur void Reception() { if(Inventaire > 0) Integrale_inventaire += Inventaire * (Temps - Temps_precedent); else Integrale_arrerage += Inventaire * (Temps_precedent - Temps); Temps_precedent = Temps; Inventaire += Items_en_attente_de_livraison; Instant_Prochain_Evenement[Reception_commande] = (float) Maximum_des_reels; }

Simulation d'un système d'inventaire18 Construction du simulateur void Demande() { if(Inventaire > 0) Integrale_inventaire += Inventaire * (Temps - Temps_precedent); else Integrale_arrerage += Inventaire * (Temps_precedent - Temps); Temps_precedent = Temps; Inventaire = Inventaire - Taille_de_la_demande(); Instant_Prochain_Evenement[Demande_client] = Temps + Duree_entre_deux_ventes(); }

Simulation d'un système d'inventaire19 Construction du simulateur void Rapport() { //Imprime les résultats. printf("Resultats de la simulation dun modele dinventaire : \n\n"); printf("Politique : (%d, %d)", Petit_s, Grand_S); printf("\nDuree de la simulation : %f", Duree_de_la_simulation); printf("\nCommandes : %f", Cout_total_des_commandes / Duree_de_la_simulation); printf("\nStockage : %f", Cout_de_stockage_par_mois * Integrale_inventaire / Duree_de_la_simulation); printf("\nPenurie : %f", Cout_de_penurie_par_mois * Integrale_arrerage / Duree_de_la_simulation); printf("\nTotal : %f", (Cout_total_des_commandes + (Cout_de_stockage_par_mois * Integrale_inventaire) + (Cout_de_penurie_par_mois * Integrale_arrerage)) / Duree_de_la_simulation); }

Simulation d'un système d'inventaire20 Résultats obtenus de la simulation dun modèle dinventaire PolitiqueCoûts moyens par mois pour les: CommandesStockagePénurieTotal Inventaire initial = 60Durée de la simulation = 120 mois (20, 40) (20, 60) (20, 80) (20, 100) (40, 60) (40, 80) (40, 100) (60, 80) (60, 100)