Examples
All of the examples are part of the open source repository on GitHub: examples/
Once you have the source code downloaded and the SimPROCESD package installed you can run examples like so:
# Navigate to the root folder of SimPROCESD source code and run the following command:
python examples/SingleProcessor.py
List of examples with notes on what each one shows:
Basic setup: Source -> PartProcessor -> Sink
Using a Buffer.
Modeling a multi-stage production line with multiple processors in each stage.
Configuring PartProcessors to change part quality of processed parts.
Using
random.seed(n)
to ensure same results every time the simulation is ran.
Using DecisionGates to manage where parts go based on part quality.
Modeling a system with 2 parallel production paths that both share one of the processors.
Visual representation of the setup (see below):
Top diagram: the design being modeled with M3 machine as part of 2 production paths.
Bottom diagram: the actual model layout with a single M3 machine followed by 2 filters (DecisionGates) that control part flow.
Extending Part and PartGenerator classes in order to add a new weight property.
Using the new classes.
Using ActionScheduler to control when a machine can produce parts.
Generating and processing of part Batches.
Using PartBatcher to batch and un-batch parts.
Configuring pools of limited resources.
Setting up PartProcessors that have to reserve limited resources in order to process parts.
Using Group class to have the same PartProcessor in 2 different stages of production.
Using an extended PartProcessor (MachineWithFaults) class to model periodic faults.
Configuring fault rate and maintenance times to be based on a geometric distribution.
Requesting maintenance when the custom machine has a fault.
Using an extended PartProcessor (MachineWithDamage) class to model accumulating wear and tear on a device.
Using sensors to periodically measure accumulated damage and to request maintenance if damage is over threshold.
Running multiple simulations of the model using multiple CPU cores.
Using
random.seed(n)
to ensure same results every time the simulation is ran.
Setup: 5 parallel processors that accrue damage which negatively impacts part quality.
Simulating the model with different damage thresholds needed to trigger maintenance.
Running multiple simulations of each configuration using multiple CPU cores.
Showing summary graphs of the simulation data.
Setup:
5 parallel processors that accumulate damage over time at different rates.
Quality of parts is reduced based on processor’s accrued damage since last maintenance.
Processors are maintained only when they experience a hard failure.
Using a sensor to periodically measure Buffer level (how many parts the Buffer has).
Using built-in graphing functions to show data:
Cumulative average throughput over time.
Machine damage over time.
Cumulative costs/values associated with sourcing parts and final part products.
Buffer level over time.
Saving the System object to a file and loading it back from the file. System stores the current of the model and all of the recorded datapoints.
PaperMillCmsEvaluation.py[Experiemental]
Simulating a manufacturing system with and without a Condition Monitoring System (CMS).
Simulating CMS that tracks processor status through a sensor of part quality; the CMS has a configurable false alert and missed alert rates.
Track spending and earning with the value property.
SharedResourcesComplex.py[Experiemental]
Using ActionSchedulers, limited shared resources, and a Group in one model.
Configuring a limited resource whose quantity varies with time.
Setup:
2 parallel production paths that share one processor.
PartProcessors are each set to one of 3 schedules: morning, evening, both.
MachineFaultDetection.py[Experiemental]
Determining faulty machine by inspecting final part quality and part routing history.