Supply Chain/ Inventory Modelling Simulation – Modelling ordering in the supply chain

766 views
Skip to first unread message

John Bradon

unread,
Nov 17, 2015, 5:19:29 AM11/17/15
to Jaamsim Users Discussion Group
I’m a new user of JaamSim and am very pleased with both its functionality and the facility to add new objects. I think it’s an excellent product.

I’ve been modelling the interaction when one SKU (Stock Keeping Unit – stock of one part in one location) orders from another. I’ve been able to model a SKU as:
a Server which has attributes of stock, backorders and a quantity on order, min and max. There is a Queue for backorders.
4 Assign Objects which update the Server’s attributes when both orders and material come in and go out.
2 ExpressionThresholds which keep track of when stock is available to supply a demand and also when a replenishment order is required. (When the server stock falls to the min, stock is ordered up to the Max.)

This means there are 10 objects comprising a SKU. I’m very interested in two items on Harry’s outstanding features list which would make it easier for me to build the whole supply chain: 
Multiple selection of entities. Select multiple entities and move them as a group.
Sub-models. Define a group of entities as a sub-model and then make multiple copies.

At the moment I’m using the simulation to demonstrate to a client that the logic is right in the Inventory Management system which Unipart supplies them. Specifically, I’m showing them that that we can calculate statistically what availability will be achieved with a given level of stock.

They are happy to see the results with randomly generated Poisson demand but really want to see the results with actual demand. I’ll do another post on how I’m doing that.

The simulation is attached for interest.
stock9z.cfg

Harry King

unread,
Nov 18, 2015, 12:16:19 AM11/18/15
to Jaamsim Users Discussion Group
John,

It's good to hear that your simulation model is being received well by your client.

We are still thinking about how best to do sub-models. Necessary features are that a submodel can be copied and that the copies update when the original is changed. This means that the copied submodels have to build their components when the configuration file is loaded. I've looked at various other types of modelling software to see how they do it, but have not found an example that I like yet. Any suggestions would be welcome!

The new EventSchedule object that was added in release 2015-45 is exactly what you need to model your historical demand data. I suggest that you build the list of demand times for the TimeList keyword in a text file and use an Include statement to reference it in your configuration file. Your text file will look something like the following:

EventSchedule1  TimeList {
'0000-01-01 01:23:00'
'0000-01-01 05:04:00'
'0000-01-02 08:14:00'
   .
   .
   .
'0000-12-31 023:05:00'
}

Each date/time entry is the time at which a demand was received. It's okay to have thousands of entries. The last step is to replace your DemandDistr object with the EventSchedule.

Harry


John Bradon

unread,
Nov 18, 2015, 9:18:31 AM11/18/15
to Jaamsim Users Discussion Group
Thanks Harry,

I'm looking at EventSchedule and also ValueSequence both of which look very helpful.

By the way, before you had added these in release 45, I needed to read in a lot of demand events at actual times, each having both an associated quantity and a location. I've managed to write a new object which reads these in from a file and sets the attributes of the prototype entities it creates. I found it quite easy to add the new object and must say that I think the quality of your code is terrific. 


As for the question of creating groups - here is one suggestion which I hope will be helpful. I'd like like the copying to be like in Word/Powerpoint with a clever object renaming rule. Specifically, I'd like:

 - the ability to select more than one object by holding down Shift and clicking several objects (This would be like Word or Powerpoint so would be familiar to many users). 
 - the ability to group objects again like Word/Powerpoint. Right clicking and selecting 'Group' would associate the items(somehow) so that later clicking on one would select the group. Ungrouping should be an option too.
 - it would be nice to be able to press CTRL and move the Selected group (as you can for one object in Jaamsim now).
 - It would also be good to extend to a group the existing function in Jaamsim when a user can select a single item, right click and duplicate the object.
 - I'd like Group renaming of duplicated items.Now, when  single item is duplicated, the new name assigns adds '_copyn',( so 'Assign1' gets renamed to 'Assign1_copy1' then to 'Assign1_copy_2). I'd prefer it if all names encountered in the duplicated objects which end in a numeric were incremented by 1. (Assign1 would go to Assign2 in all new references)


This last step is what I'm just doing to copy my 12 object SKU group. I've started renaming each object so its name ends 00 (e.g SKUServer00). I'm editing the .cfg config file, copying each item and then renaming all the references to the new objects (e.g. replacing SKUServer00 with SKUServer01 in all objects of the new SKU group). This renaming seems to be the key step in making the new grouped object consistent. 

John

Harry King

unread,
Nov 30, 2015, 5:54:51 PM11/30/15
to Jaamsim Users Discussion Group
John,

It's good to hear that you've found it simple to add new objects. Not many users seem to have tried this yet.

Your ideas on selecting, grouping, ungrouping, and moving objects are more or less what we have in mind. There are a few tricky aspects to accomplishing this which is why it hasn't been done already. Copying a group of objects is also an interesting idea.

Your SKU object is a good example of why JaamSim needs the ability to create sub-models. Getting the right design for this feature is hard, and we are still thinking about it. In the meantime, you can use the same approach that we use on our large models. Edit the configuration file and write a block of inputs that creates and connects all the objects in your SKU. Next, copy the block N times and rename the objects in each block. Finally, place the RecordEdits command AFTER the SKU code so that JaamSim retains your formatting when the configuration file is edited and saved. Any inputs prior to the RecordEdits command can only be edited in a text editor.

Hope that helps you with your model.

Harry


sivab...@gmail.com

unread,
Oct 19, 2016, 8:37:34 AM10/19/16
to Jaamsim Users Discussion Group
Sir,
I am new to JAAMSIM. My primary research area is queueing inventory system.
I would like to know the initial values of stock values in your program. That I would like to know how to assign the initial values such as stock in the program.

Thank you

Sincerely
Sivakumar

Harry King

unread,
Oct 19, 2016, 1:25:21 PM10/19/16
to Jaamsim Users Discussion Group, sivab...@gmail.com
Sivakumar,

Most inventory models use the Queue object to store inventory. You can provide an initial inventory level using a separate EntityGenerator that creates a specific number of entities at time zero and directs them to the Queue. Making these initial entities work correctly with the logic in a model can often be quite difficult. In many cases, it is better to simply let the model build its own inventory level over a warm up period using the InitializationDuration keyword.

Harry
Reply all
Reply to author
Forward
0 new messages