Injection production process modelling

189 views
Skip to first unread message

Claudio

unread,
Jan 2, 2023, 5:42:36 AM1/2/23
to JaamSim Users Discussion Group
Hello,

I am pretty new in JaamSim. 
Sometimes I make some simple DES models using vba, in order to show the dynamics of some phenomenons in production environment or supply chain context.
The JaamSim looks very powerful and with high external potential integration. So, I would like just some suggestions about how to address my efforts in developing model in the subject.
A short description of target model: there are some machines (injection presses) which can process jobs depending on item's job features. So, for each item there is the list of potential machines which could process it.
A job is identified by unique number, the item code, the quantity of items which is required, the available date for shipping, time cycle required for processing (injection), color of item, indication of labour required for process (expressed in % of process time).
Each item could be processed by a cluster of machines (rules could be object of models benchmark: such as first machine avaialble, machine with shorter queue, etc.).
The total production time if: setup time for changing mould equiptment (which depends on item), cleaning time (which depends on color of item processed before in the same machine and color of item to be processed; so a table with cleaning times for each couple of colors is required as input).
There are also other details, and some stocastic logic about availability of machines and people would be appliced to enrich model, but I think could be bring back to same logic expressed above.
Could you help me to pick up from JaamSime the objects which I mainly need to study in order to develop similar model?

Thanks in advance.
Claudio





Claudio

unread,
Jan 5, 2023, 12:23:52 PM1/5/23
to JaamSim Users Discussion Group
Hi,

In the meantime I have tried to move some steps forward. Here attached a prototype where I modelled the arrival of jobs (read from file JobsList.txt), a couple of machines (injection presses). Jobs (entities) are processed by first machine available which match the attribute of tonnelage (Tons). I read the range (min/max) of tonnelage from file ItemsList.txt which contains also unit process time, setup time and workers required to perform setup for each item.
(the Process Cycle is not yet complete/correct becase I have to use also job quantity, I will fix it later).
Now I need to model setup operation. The setup activity is done before injection process and workers involved are not the same which will take care of injection. So I would you model a different process (Server) just before injection. One for each machine. I would use Resource to model the pool of workers skilled for setup and Seize to assign number of workers (read from ItemsFile.txt). Release object to release workers after setup actitivity. 
Please, let me know:
1) is it correct the model which I'd use for modelling setup? other approach could be better?
2) in case of items to be processed is the same (same ItemID) processed just before then setup is not required (setup would be skip). How could I create a variable which record previous item processed as I can set a rule which check item before setup?
3) is there a way to read the number of jobs (lines) in JobsList.txt as I can set the max number of entities in EntityGenerator dinamically and not put the number manually?
(After fixing this step about setup I will move to manage color change; at the end I will add )

Thanks in advance
JobsList.txt
ItemsList.txt
InjectionJobShop.cfg

Harry King

unread,
Jan 5, 2023, 1:32:20 PM1/5/23
to JaamSim Users Discussion Group
Hi Claudio,

You have made some good progress with your model.

1) is it correct the model which I'd use for modelling setup? other approach could be better?
Yes, it would be best to model the set-up with a separate process, however, after seizing the resources for setup use an EntityDelay to carry out the setup process instead of a Server and its Queue.
 
2) in case of items to be processed is the same (same ItemID) processed just before then setup is not required (setup would be skip). How could I create a variable which record previous item processed as I can set a rule which check item before setup?
Use an Assign object after the Seize object to set a suitable attribute to 'this.obj'. This will save a identity of the last entity that seized the resources for setup. 
 
3) is there a way to read the number of jobs (lines) in JobsList.txt as I can set the max number of entities in EntityGenerator dinamically and not put the number manually?
The expression 'size([FileToMatrix1].Value)' returns the number of rows in the the JobList.txt file.

Also, you do need to calculate the 'Number' attribute for Assign1. The output 'NumberAdded' provides this count automatically for you.

Harry
 

Claudio

unread,
Jan 5, 2023, 6:31:54 PM1/5/23
to JaamSim Users Discussion Group
Hi Harry,

Thanks for reply and suggestions. I tried to use all of them and attached model improved. I just preferred to use Assign object after Server (Press1 and Press2) instead of after Seize objects for tracing last item processed. At the moment I have not yet used such variable in the model to set a condition.
Setup can be performed only when presses are not processing any item (could start only if press finished previous item). So I need to add this condition. In Seize objects I have already used a conditon which check the "right" tonnelage of press in order to address items on suitable servers. I tried to add to current condition a further condition: && [Press1].Idle but it does not work as Seize starts anyway and when previous and curent items are identical then model stucks on.
Could you see any evident mistake?

Thanks, Claudio

InjectionJobShop v1.cfg

Claudio

unread,
Jan 6, 2023, 6:14:46 PM1/6/23
to JaamSim Users Discussion Group
Hello :-) I tried to fix problems I faced. Now model developed up to now looks running correctly. But it looks quite complex for just modelling a simple process. Maybe it could be made easier.
Anyway, in order to avoid Setup of next job to start before Server finishing I added a variable "Busy" to Server. It's similar to Idle but it engages Server immediately when Setup starts. Besides I limited queue in front of Setup at 0 zero jobs and added an EntityGate which checks if Server is available (Busy = 0) and if Server has right Tons to process job. Finally I modified EntityDelay time calculation as if incoming item is the same of previous one then Setup time is zero.
Is my way to model this situation too complex? 
After consolidating this scenario I will add a cleaning time which considers color of incoming item compared to previous item's color. 
Attached updated model. Thanks in advance for any suggestion.
InjectionJobShop v1.1.cfg

Claudio

unread,
Jan 18, 2023, 2:12:32 AM1/18/23
to JaamSim Users Discussion Group
Hello. I have updated model including colors cleaning operation. Here attached :-)
Now I have a problem: I need to model a pool of people who take care of machines. People are not dedicated and are only partially present during cycle time. I know that in Jaamsim is possible to assign only integer number of resources. So, how can I model a situation where same resouce attends 2 or more machines sharing in loop an interval of his time among machines?

Thanks

InjectionJobShop v1.2.cfg

Claudio

unread,
Jan 19, 2023, 2:20:00 AM1/19/23
to JaamSim Users Discussion Group
Here attached model updated, including external information files for tests.
Regarding shared workers I tried to do that in a simple way (maybe not elegant). I created a global variable and assign it the number of workers available. During simulation, before injection servers, the variable is simply decreased of fraction of workers absorbed by injection. I added an entity gate before each injection server and entity (job) passes only if there are enough workers available. After injection quote of workers is re-added to variable and so on.
I will try to create sub-model of each injection press block (mould setup | cleaning | injection) and add statistics (completation time, level of saturation of resources).
There are several things which could be added: working calendar, maintenance for broken parts, raw material availability, absenteeism, etc. But it's my first model in Jaamsim and I need time to undestand.
One "stupid" question: how can I stop simulation when all jobs are processed?

Thanks, Claudio

InjectionJobShop v1.3.cfg
ItemsList.txt
ColorsSetup.txt
JobsList.txt

Claudio

unread,
Jan 23, 2023, 3:57:40 AM1/23/23
to JaamSim Users Discussion Group
Hello :-) Attached model updated with sub-models (InjectionJobShop v1.4.cfg). External files are the same I already posted.
Model does not work after I added global variable "CaricoTeamPresse". There is a job which does not proceed and stuck on queue WQ in submodel. So I tried to simplify model (attached "InjectionJobShop v1.4 simple.cfg") to understand cause, but not yet.
EntityGeneratort1_2 passes EntityGate2 iand enters into submodel cloned InjPress1 but it stops at queue WQ. I do understand, the conditions to go on seem ok.
Could you help me? 
Thanks in advance
InjectionJobShop v1.4.cfg
InjectionJobShop v1.4 simple.cfg

Claudio

unread,
Jan 24, 2023, 6:59:00 AM1/24/23
to JaamSim Users Discussion Group
Hi. I found solution. Simply I did not set WatchList in EntityGate. For this reason after evaluating condition first time the object does not evaluate continuosly. So, if condition is False the gate stops entity forever. After listing some critical objects in the WathList I have fixed problem. Attached last version.
I am going to develop statistics.
This model has not any commercial purpose. I would like to prepare and publish an article about DES applied in concrete manufacturing situation.
InjectionJobShop v1.5.cfg
Reply all
Reply to author
Forward
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
Message has been deleted
0 new messages