This example shows how to build a simple inventory management system for a retail store. This example includes:
Random customer arrivals to the store with the number of products requested by each customer also randomly distributed
Tracking available inventory at the end of the day
Tracking and disposal of expired products
Placing periodic orders for fresh products
Store profitability analysis
Structure of the Model
The model includes these components:
Warehouse: The warehouse generates and stores products in shelves. The products have limited shelf life and they are dispatched when a product order is received. During the generation process, products are marked with their manufacture day, and they are periodically checked for disposal if their storage duration exceeds the maximum days they are allowed to stay on the shelf. Warehouse component allows you to specify the initial quantity of available products and the maximum number of days they are allowed to remain on the shelf.
Transportation: The Transportation block represents the delay, which is the duration between a product's dispatch from the warehouse and its arrival at the store. The default delay is set to two hours.
Customer Arrival: The arrival of customers at the store is modeled as a Poisson process and you can specify the mean time between arrivals. The number of products required by each customer is also random and it is generated from a discrete uniform distribution. You can specify the upper bound of this uniform distribution.
Store Tag: This area models the part of the retail store that receives products from the warehouse and applies the 'Product' and 'Expiry' tags on them. These tags allow us to search for products later on.
Customers Entry: Represents customers entering the store to pick up products from the shelves and their departure from the store. This is modeled using the 'Entity Find' block, which looks for entities in the system that have the 'Product' tag associated with them.
Store Shelf: This area contains a Queue where the products are stored. Customers pick up products from here. An 'Entity Gate' that is perpetually closed ensures that products don't flow out of the store.
Expired Products Removal: This area models the periodic removal of expired products from the store's shelves. This is modeled using the 'Entity Find' block. The find block is triggered periodically to perform a search for entities that have the 'Product' tag associated with them. It then looks for products that have exceeded the shelf life and discards them.
Accounting: This area models the investigation of profitability of the retail store for the duration between consecutive product ordering points. The profit is calculated as a function of the product procurement price, product holding cost and the product selling price. The profit also plays a role in determining the number of products that the retail store orders. If the store is profitable in the current period, then the new quantity to be ordered is the sum of the previously ordered quantity plus any unfulfilled orders. This is also adjusted for expired and unsold products.
Periodic Order Placement: This area models periodic order placement by the retail store. An order is placed with the Warehouse for supplying a fresh batch of products to the retail store. You can specify the period by setting the value of the reorder point.
The model is simulated for 60 days. One unit of simulation time represents 1 minute of wall clock time. Based on the model parameters set, plots are generated showing the number of products sold, the number of customers who arrived at the store, the product order size, number of expired products in the store and the store's profitability. Observe that for each period, the optimal store order quantity is around 85 for the given customer arrival rate.
Entity Generator | Entity Server | Queue | Resource Pool | Resource Acquirer | Resource Releaser