Showing results for 
Search instead for 
Did you mean: 

Simulating a small retail supply chain - problem with (R,S)-policy and assembler




As part of my master thesis I simulated a small supply chain in several discrete event simulation softwares. Plant Simulation was one of them, but I ran into two things that I could not fix


As model I simulated a small retail shop that sells two products, product A and B. Customers have a first preference for product A or B, but if this product is out of stock, they can choose to buy the other product as substitute or not. If both products are out of stock, they do not buy anything. To simulate this process, I used an assembler. I used three sources - one for the customers, one for product A, and one for product B. Between each source and the assembler, a queue was inserted as place to wait. Within the queue of the customers, I added a code that would change the quantities within the assembler - 1 or 0 of product A and 1 or 0 of product B. Furthermore, a schedule was added to simulate that the shop opens each day at 8:00 and closes each day at 20:00. The products were ordered each day at 8:00, and were delivered the next day at 8:00.


The first problem was that I was not able to design a (R,S)-policy, in which after each replenishment cycle R an order is placed with order size Q equal to the order up to level S minus the inventory level I. The most easy way to do this is to refer to variable S minus the inventory level of a queue. However, in Plant Simulation it seems that there is no option to make a reference in the box 'Amount' in the source, nor in the table in which you can specify at which time unit the products should be made. How can such a (R,S)-policy be simulated in Plant Simulation?


The second problem was with regard to the assembler. Because some customers need product A and others need product B, the quantity of products required by the assembler changes for each customer. I simulated this by a code given in the Plant Simulation help file, that overwrites the assembly table for each customer. This works perfectly, but it involves some code and I was wondering whether there is a solution that is easier. In other programmes a reference is simply made to the quantity of a certain channel (without writing a table) or a fixed table is made in which you refer to different columns to get the right combination of customers and products. Is there a better option than overwriting the table for each customer? (I am asking this question because the purpose is to use the software for students that do not know or have experience with any programming language.)


Thanks for reading this message, I look forward to hear some of your ideas!


Kind regards,




Re: Simulating a small retail supply chain - problem with (R,S)-policy and assembler

Gears Esteemed Contributor Gears Esteemed Contributor
Gears Esteemed Contributor

(r,s) policy:


you can model this using a generator (calls a method in a fixed interval) and a source (setting Time of creation: Number Adjustable - initial value for amount = 0)

you can reset and set the source with source.number


--reset the source


--set the required quantity


--- the source will create the set number of parts

--very easy


you can use a wait statement to model a delivery time


for the second poin I dont know a solution without programming; in version 14 you can set a assembly list depend on the main MU; if you have fixed amounts of parts for different customers, you can define it directly in the AssemblyStation 

Steffen Bangsow
freelance simulation specialist  

Re: Simulating a small retail supply chain - problem with (R,S)-policy and assembler


Dear Steffen,


Thank you for your answer! That was probably the object I could not find, it works okay right now.