Dette blogindlæg beskriver en simpel krangårdssimulering i AnyLogic . Jeg udviklede denne model i AnyLogic til demonstrationsformål. Jeg har allerede udgivet en række blogindlæg om simuleringsmodellering i AnyLogic. Nedenfor er en liste over nogle af dem.
Dette indlæg betragter en lagerplads til opbevaring af forarbejdede dele. Jeg vil ikke overveje fyldningshastigheden af selve bufferen. Jeg vil heller ikke modellere sporing af individuelle dele. Det vil sige, at lagerkapacitet er en blackbox, og fokus er på at vurdere gårdkranens gennemløbskapacitet. Dette forudsætter en specificeret materialestrømsmatrix, der beskriver ind- og udgangshastigheder til og fra bufferen.
Oversigt over krangårdssimuleringsmodellen
Nedenstående skærmbillede viser hovedkomponenterne i AnyLogic krangårdssimuleringsmodellen . Lagergården har to indløbstransportører og tre udløbstransportører. Den betjenes af en enkelt vandret gårdkran.
Det er en simpel model, der kan konstrueres på 1 time. Som nævnt i introduktionen af denne artikel er sporing af individuelle dele ikke en del af modellen. Det betyder, at en del bliver lagt væk i bufferen, hvorefter den bliver ødelagt. Dette er produktion – put-away- processen i ovenstående logikbloksektion. Hentninger fra værftet gennemføres som en separat proces, der anvender den samme værftskran. Dette er genfinding – afsendt proces i ovenstående logik blok sektion. Beboelsen af dele i gården er ikke modelleret. Opfyldningssatser tages ikke i betragtning. Fokus er på at vurdere maksimalt mulig gennemløb af gårdkranen.
Implementering af lagerplads- og transportbåndsallokeringer
I denne krangårdssimuleringsmodel skal der træffes to allokeringsbeslutninger:
- For en del, der kommer på en af indløbstransportørerne, skal det besluttes, hvor i gården delen skal opbevares
- For en del, der skal leveres til en nedstrøms proces, dvs. som skal hentes, skal det besluttes, hvilken transportør delen skal placeres på
Tildeling af dele til et opbevaringssted til bortskaffelse
Startende med produktion – putaway- processen: Dette implementeres i nedenstående rækkefølge af logiske blokke.
En del oprettes af kilden (agent for brugerdefineret klassedel ). Denne nye del er placeret på en af indløbstransportørerne ved hjælp af logikblokkene convey_a og convey_b . Sandsynligheden for hver indløbstransportør er 50%.
Dernæst kaldes en lille brugerdefineret funktion ( allocation_01 / allocation_02 ). Denne funktion bestemmer ganske enkelt, hvilken node (1 til 7), refereret til som “bay”, delen skal gemmes i. Den gør det ved at indstille variablerne targetbay_01 / targetbay_02 . AnyLogic griber derefter kranen og udfører transporten til en tilfældig attraktor inden for den specificerede node.
Hentning af dele fra gården og tildeling af dem til en transportør
Til modellering af delhentning fra lagerpladsen skal der specificeres en sourcebay (kildeknude), hvorfra en del skal hentes, og en targetconveyor , som delen skal placeres på. For at gøre dette nemmere placerede jeg disse to variabler i den brugerdefinerede delagentklasse .
sourcebay og targetconveyor er også variable i selve hovedmodellen. De bruges dog kun som midlertidig hukommelse. Ved ankomsten af en ny agent i genfindingskilden kaldes select()- funktionen.
Valgfunktionen indstiller de midlertidige kildeplads- og targetconveyor- pladsholdere. Værdierne af disse variable skrives derefter til . sourcebay og . targetconveyor- attributter for den nyligt ankomne delagent (objektforekomst). Nedenstående skærmbillede viser valgfunktionen .
Som du kan se fra ovenstående skærmbillede af valgfunktionskoden, er genfindingssteder fuldstændig tilfældige. Måltransportøren er da altid den transportør, der er nærmest kranen.
Kørsel af krangårdssimulering i AnyLogic
AnyLogic visualiserer sin markering i 2D og 3D. Nedenstående skærmbillede viser et 2D-snapshot af simuleringsmodellen under kørsel.
Efter en times simulering er 9 dele blevet afsendt (hentet og leveret for enden af en af udgangstransportørerne), og 9 dele er blevet sat væk. Nedenfor er et skærmbillede af relevante blokke efter en times simulering.
Hvis jeg vil prioritere putaways frem for hentning eller implementere en anden logik relateret til opgaveprioritering, kunne jeg også gøre det med JAVA-funktioner.
Afsluttende bemærkninger og relateret indhold
Jeg præsenterede en simpel krangårdssimuleringsmodel uden sporing af individuelle dele. En model af denne art er velegnet til fx at vurdere udstyrsgennemstrømning. I dette tilfælde var fokus på gennemløbskapaciteten af den horisontale gårdskran.
Industriingeniør som gerne beskæftiger sig med optimering, simulation og matematisk modellering i R, SQL, VBA og Python
Leave a Reply