Efter at have introduceret salabim til simulering af diskret hændelse ( DES ) i Python vil jeg følge op på dens statistikrelaterede funktionalitet. Det gør jeg i dagens blogindlæg: Statistik med salabim !
Simulering af diskret begivenhed, jobshop og Python
Diskret-hændelsessimulering er en af flere simuleringsmetoder, der kan anvendes af SCM-analytikere, produktionsplanlæggere og driftsanalytikere. Nedenstående diagram giver en grov kategorisering af disse simuleringsmetoder .

Simulering af diskret hændelse anvendes hovedsageligt til operative og detaljerede mål, såsom f.eks. produktionsplanlægning, fabriksdesign eller design og forbedring af forretningsprocesser. Det er den passende metode til komplekse systemer beskrevet godt af sekventielle hændelser og køer. Her er nogle eksempler på simuleringsbrug, som du kan læse til en start:
- Link : Simulering af åbne mine for bedre planlægning
- Link : Parkeringssimulator med simre i R
- Link : End-to-end fjerkræforsyningskædesimulering
En jobshop er for eksempel et system, der kan drage fordel af simulering af diskret hændelse til dets design og/eller fortsatte forbedringer.
Jobshop simulering og statistik med salabim
Nedenfor implementerer Python-koden en jobshop- simuleringsmodel i Python ved hjælp af salabim . Jeg har brugt dette simple eksempel i tidligere blogindlæg. I dette tilfælde modellerer vi en forenklet jobshop med 2 maskiner og 100 jobs. Opgaver kan behandles på enhver maskine, men kun af én maskine ad gangen. Maskiner behandler job med en specificeret behandlingstid (varighed). Maskiner har i dette tilfælde en kapacitet på 1. Når en maskine har behandlet et job, er det færdigt. Produktionsplanen er i dette tilfælde forenklet til en vis grad og modelleret af en tilfældig jobgenerator. Jobgeneratoren opretter nye job med tilfældigt fordelte intervaller med en specificeret middeltid mellem job. Koden implementerer animeret statistik udover modelimplementering og simuleringsudførelse.
Den første del importerer salabim og opsætter konstanter samt relevante datatyper (Produktklasse). Produktet udvider salabim -komponentklassen. Den implementerer en procesmetode. Denne metode bruges til at anmode om og opbevare en ressource i en specificeret varighed .
import salabim as sim
SEED = 42
MACHINES = 2 # amount of machines
INTERVAL = 3 # mean time between two jobs
DURATION = 5.0 # mean processing time of a job
JOBS = 100 # number of jobs that have to be completed
class Product(sim.Component):
def process(self):
yield self.request(machines)
print(f"{self.name()} started at time {env.now()}")
yield self.hold(DURATION)
print(f"{self.name()} completed at time {env.now()}")
Den næste del sætter simuleringsmiljøet op og definerer ressourcerne. Delkilden, dvs. komponentgeneratoren, er også defineret i dette afsnit:
env = sim.Environment(random_seed=SEED)
machines = sim.Resource("machines", capacity=MACHINES)
sim.ComponentGenerator(Product, iat=sim.Exponential(INTERVAL), force_at=True, number=JOBS)
Til sidst implementeres simuleringskørsel og animation.
env.animate(True)
env.modelname("jobshop demonstration")
machines.claimers().animate(x=700, y=100, title="work in progress", direction="e")
machines.requesters().animate(x=200, y=100, title="work waiting", direction="e")
machines.claimers().length.animate(x=10, y=300, width=1000, height=100, vertical_scale=15, horizontal_scale=20, title="number of work in prgress")
machines.requesters().length.animate(x=10, y=500, width=1000, height=100, vertical_scale=15, horizontal_scale=20, title="number of work waiting")
env.speed(5)
env.run(100)
Dette resulterer i en animation. Nedenstående billede viser et øjebliksbillede af animationen.

Animationen viser igangværende arbejde og efterslæb / ventende arbejde gennem tiden.
Relateret indhold
Hvis du er interesseret i simulering af diskrete hændelser og dens applikationer eller dens specifikke implementeringer i f.eks. R, AnyLogic, VisualComponents og Python, så tjek følgende SCDA-publikationer:
- Link : Diskrete-event simulation (DES) use cases
- Link : Liste over software til simulering af diskrete begivenheder
- Link : Simuleringsmetoder for SCM-analytikere
- Link : Proceduremodel for diskret hændelsessimulering
- Link : Modtagelsesinspektionssimulering med simre
- Link : Visualisering af SimPy jobshop-simulering
- Link : Simre i R til simulering af diskret hændelse
- Link : Simulering af krangård i AnyLogic
- Link : Transportørsimulering i AnyLogic
- Link : Visual Components finansiel KPI simulering

Industriingeniør som gerne beskæftiger sig med optimering, simulation og matematisk modellering i R, SQL, VBA og Python
Leave a Reply