Simulation af fjerkræforsyningskæde

Det er mere end fem år siden, at jeg dimitterede fra universitetet og kom ind i erhvervslivet. Siden da har jeg dedikeret det meste af min tid til produktions- og forsyningskædeplanlægning. Udover ERP-baserede modelimplementeringer, såsom fx partistørrelsesoptimering eller produktionsnivellering i SAP, har jeg altid været stærkt involveret i simuleringsmodellering af diskrete hændelser. Jeg har arbejdet med flere værktøjer, og i denne artikel vil jeg opsummere et ende-til-ende-simuleringsbaseret analyseværktøj for fjerkræforsyningskæden , som jeg implementerede i Python.

Simulering fremmer bedre forståelse af kontrollogikker

Simuleringsværktøjet beskrevet af mig i denne artikel hjalp brugeren på flere måder:

  • Bedre forståelse af eksisterende processer og afhængigheder i hele forsyningskæden
  • Fælles reference til diskussion mellem de forskellige interne interessentgrupper
  • Forudsige virkningen af ​​visse politik- og kontrolflowjusteringer
  • End-to-end forsyningskædens omkostninger gennemsigtighed
  • Værktøj til uddannelse af nye supply chain managers

Værktøjet optimerede en vertikalt integreret fjerkrækødforarbejdningsvirksomhed i Middelhavsregionen. De lovgivningsmæssige rammer for fjerkrækødavl er omfattende, og selvom de regulerende myndigheder ikke var involveret i udviklingen og implementeringen af ​​dette simuleringsværktøj, kunne det meget vel tjene de regulerende myndigheder på lignende måder. Regulatoriske begrænsninger, såsom f.eks. All-In All-Out-regler (også kendt i f.eks. svineproduktion), blev dog naturligvis taget i betragtning af modellen og implementeret i overensstemmelse hermed.

Beskrivelse af konceptuel fjerkræforsyningskædemodel

Fjerkræforsyningskæden omfatter mange faser. Nedenstående figur giver et overblik.

fjerkræforsyningskædesimuleringskoncept

De relevante enheder, som jeg gerne vil fremhæve for et konceptuelt overblik, er følgende:

  • Æggebonde. Producerer og leverer æg til rugeriet.
  • Klækkeri. Udklækker æg i en række processer, nemlig inkubation, rugning og rugning.
  • Landmand. Modtager kyllingerne fra rugeren og dyrker dem i bondegårde.
  • Slagteanlæg. Modtager eller afhenter kyllinger fra bondegårdene, når de har nået slagteklar vægt.
  • Kødprocessor. Trækker efterspørgsel efter slagtekroppe til kødforarbejdning fra slagteriets færdigvarelager.
  • Distributør. Afgiver ordrer på færdigvarer hos kødforarbejderen, opbevarer midlertidigt og videredistribuerer forarbejdet kød til markeder.
  • Marked. Afgiver bestillinger hos distributøren og sælger forarbejdet kød på markedet til slutforbrugeren.

Nedenstående konceptuelle modeltegning giver et andet overblik over de processer, der tages i betragtning af fjerkræforsyningskædesimuleringsværktøjet.

Fjerkræforsyningskæden er en stærkt reguleret forsyningskæde. Som nævnt er regulatoriske begrænsninger en del af modellen. Sådanne regler har f.eks. til formål at reducere risikoen for sygdomsspredning, og de er fælles for kødproduktion ud over fjerkrækødproduktion (f.eks. svineproduktion).

Styrelogikker, reguleringer og informationsflowmodeller

Simuleringsmodellen omfatter en bred vifte af kontrollogikker, regler og ordrerelaterede informationsstrømme. Nedenstående tabel giver et overblik.

STAGE, KATEGORIBESKRIVELSEIMPLEMENTERING
Ægleverandør, kundeordrelogikÆgleverandør afsender baseret på ordrelogMed et specificeret interval tjekker ægleverandøren ordrebogen og sender den ønskede mængde
Ægleverandør, ordreforsendelseslogikFuld ordremængde afsendtFuld mængde afsendes samme dag, men ankommer efter en specificeret transporttid
Udklækkeri, lagerstyringslogikInventar for indkommende æg forud for rugemaskinenOrdrepunktspolitikker styrer ægbeholdningen. Når efterspørgslen falder under et specificeret niveau, afgives en ordre hos ægleverandøren, der er målrettet mod et fast højere lagerniveau
Ruge-, inkubations- og rugeprocesInkubations- og udklækningsprocesser i sort boksInkubation og udrugning har en specificeret varighed og en specificeret produktionskapacitet. Der er også et specificeret udrugningssuccesforhold og en specificeret dødelighed
Rugleri, ruger ved rugerBrooder proces følger inkubation og vellykket udrugningInden unger sendes til en bondegård, bliver de ved yngelen i en bestemt varighed. Dødelighedsrater er også defineret for denne proces
Klækkeri, flok tildeling til rugerierEfter at ungerne har opholdt sig i ruger i et minimumsbestemt tidsrum, sendes de til en bondegårdGården skal være klar til en ny flok, og tom og høns kan ikke blandes. Bondegårde har forskellig kapacitet, da de er placeret på forskellige gårde. Kyllinger bør placeres i stalde med mindst overskydende kapacitet
Farm coops, kylling vækstKyllingevækst i gården adskiller sig fra kyllingearter og kønKyllinger, afhængigt af deres køn og art, opholder sig i gården i et bestemt tidsrum. Denne varighedsperiode modellerer kyllingens vækst indtil slagteklar vægt
Farm coops, sender kylling kalkun til slagtningKyllinger sendes til slagteri, når de er modneNår kyllingerne har nået slagteklar vægt, sendes de videre, hvis slagteriet har kapacitet. Ellers venter de i bondegården. Herefter bliver gården renset. På dette stadium er relevante regulatoriske regler overvejet og indlejret i simuleringsmodellen
Slagteri, slagteprocesDaglig slagteprocesSlagteriet slagter kylling op til en specificeret maksimal daglig produktionskapacitet
Slagteri, slagtekropopgørelseProduktion på lager, men efterspørgselsdrevet varelagerKødforarbejderen trækker sin efterspørgsel efter slagtekroppe fra slagteriets beholdning
Slagteri, ordrebeholdningKødforarbejdningsvirksomheden placerer efterslæb på slagteriet, hvis slagtekropbeholdningen ikke er tilstrækkeligEfterslæbet er opfyldt i den kommende produktionscyklus, og slagtekroppen produceres kun på lager, hvis der ikke er åbne ordrer
Slagteri, eksternt kyllingekøbEkstern kylling købes, hvis slagteriets beholdning og den nuværende slagteprocesvolumen er for lavHvis efterspørgslen efter fjerkrækroppe er højere end slagtekroppen, og slagtekroppen i øjeblikket i produktion, indkøbes og slagtes eksternt fjerkræ, hvilket optager produktionskapaciteten i overensstemmelse hermed. Eksternt indkøbt fjerkræ slagtes altid først
Kødprocessor, efterspørgsel efter slagtekropFordeling af efterspørgsel efter slagtekroppe, der skal trækkes fra slagteriets lagerbeholdningForskellige efterspørgselsmodeller kan implementeres. For eksempel kan en deterministisk eller stokastisk efterspørgselsplan implementeres med specificeret efterspørgsel efter periode

Hele logikken opsummeret i ovenstående tabel blev parametriseret. Relaterede værdier kan justeres i en konfigurationsfil. Dette giver brugerne mulighed for at køre forskellige scenarier og derved opnå en bedre forståelse af forsyningskæden.

Simulationsmodelimplementering i Python ved hjælp af SimPy

Gennem de seneste 5 års modeludvikling har jeg arbejdet med forskellige værktøjer og software til simuleringsmodellering af diskrete hændelser. Nogle populære værktøjer er FlexSim, simio, AnyLogic, SIEMENS Plant Simulation, VisualComponents, Simul8 og mange flere. Der findes mange kommercielle simuleringsværktøjer , og alle de netop nævnte er kommerciel software. Denne model udviklede jeg imidlertid i SimPy , en simuleringsramme for diskret hændelse i Python. Denne ramme er gratis – men det var ikke grunden til, at jeg valgte den.

SimPy er ren kode. Den har ikke en grafisk brugergrænseflade (GUI). Dvs. modeludvikleren kan ikke bruge en GUI til modelimplementering. Desuden har SimPy ikke nogen indbygget modelvisualisering. Med andre ord er det meget abstrakt at bygge og verificere en model i SimPy – men da det er ren Python-kode, er det også meget fleksibelt. Til forsyningskædemodellering med mange forskellige entiteter og en bred vifte af mulige kontrollogikker gør dette SimPy til et godt valg. I kombination med objektorienteret programmering, dvs. Objektorienteret programmering er et krav i dette tilfælde, da det giver mulighed for udvikling af rammer og passende strukturering af den meget komplekse opgave at modellere en forsyningskæde med alle dens processer og enheder. Brugere af modellen skal dog have en vis forståelse af Python.

Eksemplarisk model output og resultater

I dette afsnit viser jeg nogle eksemplariske modeloutput, der blev udsendt af fjerkræforsyningskædesimulatoren. Data indsamles og vises i kyllingenheder, dvs. enhedsneutral. Dette giver et solidt grundlag for beregning af relevante KPI’er oven i købet. Relevante KPI’er kunne være omkostninger og vægte (f.eks. af kylling eller slagtekrop). Sådanne KPI’er kan implementeres for brugere efter behov ved at tilføje nogle få linjer kode til forsyningskædesimulatoren – eller ved at justere (dvs. udskifte) nogle eksisterende kodelinjer.

Nedenstående skema viser lagerudviklingen på slagteriet, dvs. slagtebeholdningen. Et for stort lager ville resultere i høje driftsomkostninger, og i sidste ende ville det betyde, at slagtekroppen skulle bortskaffes på grund af udløbsdatoer og relaterede politikker.

Slagtekroppe i henhold til fjerkræforsyningskædesimulator

Ovenstående diagram viser lagerudviklingen på slagteriet gennem et simuleret år med 52 uger (simuleringsperioder). I denne kørsel var hver uge en iteration af simuleringskørslen. Lagerudvikling på slagteriet er direkte forbundet med efterslæbsudvikling. Denne udvikling kan ses i nedenstående graf.

Efterslæb i slagtekrop ifølge fjerkræproduktionssimulator

Som det fremgår af ovenstående skema, er der ikke opbygget noget slagtekroplager på slagteriet. Dette skyldes, at slagteriet altid løb bagefter kødforarbejdningsefterspørgslen, hvilket resulterede i et betydeligt efterslæb.

På grund af de eksisterende ordrebeholdningsrelaterede ordrepolitikker på slagteriet, udløser høje ordrer store indkøbsordrer hos eksterne fjerkræbedrifter. Da eksternt indkøbt fjerkræ altid slagtes først, resulterer dette i et betydeligt lager hos yngleren. Rudderen venter på, at gårdens coops skal rydde og har i denne simuleringskørsel ingen kapacitetsbegrænsninger i den forbindelse.

Bredere kyllingepopulationsstørrelse som følge af simulering af fjerkræforsyningskæden

Da rugeren selv ikke har nogen kapacitetsbegrænsning, blev rugeriet således ikke påvirket af produktionsflaskehalsen nedstrøms. Dette bliver tydeligt fra nedenstående graf, der visualiserer ægbeholdningen på rugeriet.

Lagerudvikling i fjerkræforsyningskædesimulering

Udviklingen af ​​ægbeholdningen på rugeriet var stabil under hele simuleringen.

Afsluttende bemærkninger om simulering af fjerkræforsyningskæden

I denne artikel demonstrerede jeg, hvordan simulering af diskrete hændelser er et effektivt værktøj til modellering og analyse af fjerkræforsyningskæder. Fordelene ved at implementere en forsyningskædesimulator er mangfoldige, hvor alle fordele i sidste ende sigter mod omkostningsreduktion i forsyningskæden og forbedring af tilgængelighed (dvs. kundetilfredshed). Dette er især vigtigt i en fjerkræforsyningskæde, da høje lagerbeholdninger resulterer i f.eks. udløb og bortskaffelse af slagtekroppen. Implementering af en forsyningskædesimulator hjalp mine brugere med at få en bedre forståelse af eksisterende logikker og politikker for forsyningskædekontrol og udstyrede forsyningskædens ledelsesteam med et effektivt kommunikations-, trænings- og analyseværktøj.

Hvis du er interesseret i simulering af diskret hændelse, er du muligvis også interesseret i nogle af følgende relaterede publikationer:

You May Also Like

Leave a Reply

Leave a Reply

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

This site uses Akismet to reduce spam. Learn how your comment data is processed.