Showing results for 
Search instead for 
Do you mean 
Solved! Go to solution

Workload Control Simulation

Hi together,

iam having big problems programming a simulation for a workload control concept. Iam a totally neewbie in plant simulation but I did the tutorials and have the book about plant simulation, written by S. Bangsow, in my hands.


I just want to know, if it is possible for me to create a simulation model for the following concept during the next 7 days. And if it is possible i would be glad about some hints or examples. It's for my bachelor thesis and iam running out of time ;-).


Basically the concept works like the corrected aggregate load approach. Iam having a shop floor with 3 to 5 workcenters, which are linked with a sorter in front of them.

The Jobs are created randomly and stored in the job pool (a list of jobs). The List contians the following informations of the jobs:

  • routing of the jobs
  • the process time of each job on each Station
  • (EDD &DD)
Next jobs are released periodically on the shop floor until the workload norm of each station is exceeded. The processing time (load) of each job is booked into the workload account of each station (so the direct and indirect load; all jobs directly queueing at the station and the ones upstream are reviewed).
In the next step the worker decides in which order he wants to treat the jobs. For each job he has a specific slot (calculated through the EDD & DD) in which he can start the job.
The workload is booked out of the account when the job is treated at the station.
The core part of the concept is the decission of the worker about the order (the sorting rule). So maybe the workload norm can be skipped. But never the less I would need to write a method which calculates the slot times (which are depended of the due date, the earliest due date, the processing times, the number of stations and the number of the current station). And on top of that the worker have to decide randomly about the order, regarding the restriction by the slot time.
I would be very happy if you could give me your estimation, if the case i described is even able to programm in plant simulation. In my opinion it is not, or at least it is too much work for the evaluation part of a bachelor thesis.
Thx for reading! Best regards,

Re: Workload Control Simulation

"But never the less I would need to write a method which calculates the slot times (which are depended of the due date, the earliest due date, the processing times, the number of stations and the number of the current station). And on top of that the worker have to decide randomly about the order, regarding the restriction by the slot time"


Do you have a mathematical equation for calculation the slot-times?


I guess the sorter is not the right element for randomly select a part. You could try a combination of store and buffer. The store repesent the queue, the buffer contains only one part for transport by the worker.

For realize the randomly selection you could run through the queue, list all parts inside the timeslot into a list and dice one entry (e.g. z_uniform). The selected part you move to the buffer, where the worker transports it to the next machine.

Steffen Bangsow
freelance simulation specialist  

Re: Workload Control Simulation

Hi Steffen,

danke für deine Antwort! Und danke auf für dein Buch, das hat mir schon bei den ein oder anderen Sachen geholfen. ;-) Der Einfachheit halber schreibe ich mal auf deutsch weiter.


Ich versuche mal das Slotverfahren knapp darzustellen und dabei die wichtigsten Punkte zu nennen.


Bekannt sind für jeden Auftrag folgende Attribute:

  • EDD
  • DD
  • Bearbeitungszeiten p an jeder Station
  • Reihenfolge in der der Auftrag die Stationen durchläuft
Die Berechnung findet wir folgt statt:
  • Der gesamte Puffer P = DD - EDD
  • DIe Slotzeit S je Station: S = P / n    (n ist die Anzahl der Stationen die der Auftrag durchläuft)
  • frühest möglicher Starttermin für einen Auftrag FT1 = EDD - Summe(p)
  • spätest möglicher Starttermin für einen Auftrag ST1 = DD - Summe (p)
  • Slotzeitraum für die erste Station ergibt sich mit [FT1 ; ST1]
  • Für alle weiteren Stationen:
  • FT(i+1) = STi + pi
  • STi = FTi + S
Das ist im wesentlichen die ganze Berechnung dahinter. Das Ganze ließe sich auch rückwärts vom EDD und DD aus rechnen, dann bräuchte man die Berechnung von FT1 und ST1 nicht. (und natürlich ist das Ganze sehr abstrakt betrachtet ;-)).


Für jede weitere Hilfe wäre ich sehr dankbar! Ich schaue mal ob ich etwas mit dem Lager zustande bekomme, danke für den Tipp!


Schönes Wochenende,


Re: Workload Control Simulation

[ Edited ]



ich habe mal noch eine Frage zur Freigabe der Aufträge mittels Belastungsabgleich. Dafür habe ich mein Modell mal angehängt.


Ich will nun mittels der Methode "Freigabesteuerung" überprüfen, ob die Bestandsgrenze nach Freigabe des Auftrags überschritten wäre. Ist dies der Fall, wird der Auftrag nicht freigegeben, ansonsten wird die (gewichtete) Bearbeitungszeit den Bestandskonten der Stationen hinzugefügt.

Dies habe ich auch soweit hinbekommen. Allerdings würde ich ich nun gerne noch eine zeitliche Abfolge mit reinbringen.

Sprich die Quelle produziert fleißig Aufträge, welche z.B. in einen gehen. Der Puffer bekommt die Freigabesteuerung zugewiesen. Sobald keine Aufträge mehr freigegeben werden können soll eine Freigabe bis zur nächsten Periode (8Std.) blockiert werden.


Ich bin mir jetzt nur nicht ganz sicher, wie ich alle 8Std. den Puffer auslösen und seine Freigabe bei verletzten der Bestandskonten für den Rest der Periode wieder pausieren kann.


Jemand eine Idee? ;-)


Schönen Sonntagabend allen,


PS: DIe aktuellste Version, in der die Bauteile in das Lager einsortiert werden.

Re: Workload Control Simulation

Hi Janis (sorry, no time to answer in German),


To me it seems like you want to model two kinds of release systems: a) one for the admission of jobs from a job pool to the shop floor and b) one for the individual workstations.


Concerning a): you can use a Generator (InformationFlow) to periodically trigger a method. Specify the interval time (Times tab) and the method that should be triggered (Controls tab). The Source object maximally contains one MU at a time, so you need to place a buffer after it (you might use a Store, Buffer or ParallelProc). In your Freigabe-method you scan the objects in the buffer and decide which ones you send to the workstations. If the release order of MUs remains fixed, then just use a plain Buffer.


Concerning b): how to model this depends again on if you allow overtaking and what criteria it depends on. If there is no overtaking allowed, just use a normal Buffer. If the overtaking depends on a single MU-attribute: use the Sorter. If you need more advanced selection capabilities: use a ParallelProc and a PullControl for the station itself.


The role of the slots is not yet completely clear to me. E.g. if a job arrives too early at a workstation, do you keep it there until its calculated slot has come by?


Good luck!


Gert Nomden
Senior Consultant | Tecnomatix Product Manager

Re: Workload Control Simulation

Hi Nomden,

thank you very much for your reply.
to a) Thanks, i will try it with a Generator. Iam not totally sure if i will get it to work corretly, but i will try it.

to b) You are right, i want the Jobs to be stored in a Buffer and it should be released during the slottime. It should not be possible to release it earlier to the Workstation because the decision of the worker, in which order he wants to process the Jobs, is taken periodically.

So he gets for each Job at the beginning of the period a specific Slot time and then does his decision. He can't Change it afterwards. But for the model it is okay if he decides randomly out of the pool of Jobs which are within the slottime.
So I think a store with a method is definatlly needed, right?!


Re: Workload Control Simulation

Hi Janis,


I attached a small model that simulates the buffering logic. Basically, any MU that enters the Store will only exit when its EDD has been reached.


Other than that, jobs are treated FIFO by the SingleProc. If you need a more advanced admission strategy, you should extend the SingleProc with Pull-control.



Gert Nomden
Senior Consultant | Tecnomatix Product Manager

Re: Workload Control Simulation

[ Edited ]

Hey Nomden,


many many thanks! It worked and I think that should be okay for the buffering.


Iam now only have the problem with the release by the source left. The Time of the EventController beginns to run, when the source stops releasing Jobs to the shop floor.

I now need to do the same thing two more times each 8 hours past the last time.

The time should stop and should start running again when all workload norms ("Bestandskonten") are again exceeded.


I attached my model. Maybe you have a another great hint for me.


Oh well I just forgot something. Iam having a problem to write the Name, EDD and the time the Job arives at the drain into a list.

The method i wrote for it looks like:

	Tabelle1 : table;
	Delivery : time;
	Prod : string;
	early : time;
	Delivery := Ereignisverwalter.simtime;
	Prod := @.Produkt;
	early := @.EDD;




Re: Workload Control Simulation

[ Edited ]



Regarding the method for the Drain: you have a local variable called Tabelle1 and at the same time there is an object Tabelle1. If your remove the line that declares the local variable (Tabelle1 : table; ) then it works well. BTW, in your reset method you should also clear the results of Tabelle1 (Tabelle1.delete).


The EventController runs as long as "things are happening" in the model. With your settings, the Source produces 50 items at time 0. After that the stations start to work, so the clock is ticking.


I guess that you need some random interval for the Source. If you want to restrict the creation times to a certain part of the day, use a ShiftCalendar and set the Source object Blocking to false.


Besides that, you probably need a buffer right after Warenannahme, so that you have a real order backlog to work with.


Finally, you have a Generator, but it does nothing. In your set-up, the Freigabesteurung is only triggered once for an MU. If you do not release the job, it will just stop there (only 12 jobs are released). So, please read the earlier comments regarding the release mechanism. You need the Generator to trigger the Freigabesteurung every 8 hours. The method should loop through all the objects in the job pool and release them when they still fit the workload norms.


Gert Nomden
Senior Consultant | Tecnomatix Product Manager

Re: Workload Control Simulation

Hi together,


thank you very much for your help it finally works! Smiley Happy


But I have one big problem, the Counter of the Workload at each Station (BestandskontenStation) are not working correctly. That's really confusing because I couldn't find any colliding objects in my simulation. The remaining times are weird, too. The times itself are similar to my process times but some of them are negative and some are positiv so it doesnt really match. Anyways the Ausbuchen and the Freigabesteuerung Method are both using the same code, there is just a difference if iam adding or subtracting the process times.


Maybe someone else has an idea what the reason could be? I attached the model.


Many Thanks!