We had a student project in which several automation students tried to assist a logistics student with her bachelor’s thesis. The thesis focused on a company’s assembly and shipping department, specifically the worker/forklift/pallet jack traffic involved in gathering parts for assembly and shipping finished products. The goal was to generate data and statistics on different logistical solutions—based on the logistics student’s ideas—and to provide a practical simulation example for the company. Unfortunately, the project became too complex, and the students could not find a suitable way to build the simulation.
My colleague and I have recently attempted to create a sample simulation for teaching purposes. However, we feel that our approach might be heading in the wrong direction and becoming overly complex. Is there a simpler way to address this problem from the start? I might be overthinking it or focusing too heavily on coding. Below is the case description:
Current Assembly/Shipping Layout
-
Workers and Workstations
-
6–8 workers, each assigned to a workstation.
-
Each worker gathers parts for their assigned assemblies from multiple shelf locations.
-
Assembly Needs
-
Workers use order information to determine which assemblies need to be produced and in what quantities.
-
Some assemblies require only 1–3 units per day, while others can require 50–300.
-
Equipment
-
1 forklift and 1 pallet jack.
-
Finished products are packed at each station and moved to the shipping area using the forklift or pallet jack.
-
Some parts are on high shelves or are heavy, so a forklift/pallet jack is needed to retrieve them.
-
Assemblies
-
Each assembly can require 8–30 different parts, sometimes in multiples (e.g., nuts, screws).
-
There can be 5–40 different assembly types needed per day.
-
Logic
-
Each station (worker) starts with assigned assemblies. Multiple stations can work on the same assembly type.
-
The station worker gathers enough parts to begin assembly.
-
The worker assembles the product, packs it in boxes, and transports the boxes (or pallets) to the shipping area.
-
If a station finishes its assigned assemblies, it moves on to help produce the highest-priority assemblies (typically those with the largest demand).
Our “Solution” So Far
We initially tried to simulate the entire assembly process, but quickly switched focus to the traffic flow instead. We struggled to manage the number of assemblies and the concept of collecting multiple parts in one trip. Instead, we modeled the retrieval of each part from each shelf location as if “one part” covered all the required quantities for that trip.
In our simulation software:
-
PM Stations represent the task flow.
-
Feeders provide parts at different locations.
-
Processes represent assembly stations and the shipping area.
-
A master controller (written in Python) reads assembly types and quantities from a list (CSV in the future).
-
Each station script asks the master controller which assembly it should work on next. The station script has a local list of required parts for that assembly and creates transport-in statements for part retrieval.
-
After the parts are gathered, the simulation deletes those statements and generates new ones to represent assembly time (with a delay).
-
Once assembly finishes, more statements simulate the creation of the shipping box and a transport-out step.
-
The master controller and station scripts communicate to track how many assemblies have been completed, and the master controller reassigns stations when their main assemblies are done.
Although the basic functions are working, the next stages are becoming very complex:
-
Assembly Counts and Part Pooling
-
Determining when more parts need to be retrieved and how many assemblies can be completed with the current station inventory is difficult.
-
Forklift/Pallet Jack etc. Traffic
-
Visualizing forklift/pallet jack movement
-
Path visualization is “just” straight lines → more area based could be better
-
Including path avoidance can cause frequent deadlocks in the simulation.
-
Future Changes
-
The logistics student wants two dedicated workers to gather parts and move finished boxes, requiring new logic for part gathering, station fulfillment, and timing so workers do not sit idle.
-
Other modifications to make this simulation work as practice for layout testing, worker task changing → part gathering, shipping, etc.
Given these issues, we suspect we may be overcomplicating the problem. Is there a more straightforward method or alternative approach for creating an effective teaching simulation of this logistics scenario without getting stuck in excessive detail (and complex code)?
Traffic_Testing_Version_1.vcmx (9.5 MB)