
Simulation model of a logistics center
I bring to the attention of users of a small article that describes the practical side of the application of such an area as simulation.
According to the supply calendar agreed with the supplier, a certain quantity of goods of one type arrives at the logistics center. If the warehouse is full, the application for the supply of goods is deliberately canceled. The goods are received, stored and transferred to the retail point of sale in packages of 8 pcs. Upon arrival, the car is met by an employee of the center (storekeeper), checks for the necessary supporting documentation, certificates of conformity / quality, primary accounting documentation and accompanies the car to the unloading area.
In the unloading zone, the storekeeper, in the presence of the forwarder and with the help of loading equipment (electric forklift), carries out the reception and visual inspection of the goods. Then it moves it to the input control zone. The quality specialist (controller) conducts incoming inspection of the goods. Upon admission, the goods, with the help of a quality specialist, are moved to the waiting area for further placement on the shelves of the storage area. If a product is found that does not match the input parameters, it moves it to the defect isolator for further return to the supplier.
Pickers using loading equipment (electric forklift) complete the delivery to the retail point of sale in the shipping area. The picking is carried out when the balance of the goods at the retail point of sale of the replenishment point (reorder point) is reached.
After completing the standard shipment lot, the goods are transferred to the retail point of sale for sale.
It is necessary to develop a model of the presented process for further optimization experiments (for example, determining the reorder point in the absence of a zero balance at the retail point of sale).
Implementation AnyLogic
software product (v.7.0.2) was selected as a development tool .
Using a discrete event modeling diagram, a model for the functioning of a logistics center has been developed

The input stream “SourceBox” is controlled by a schedule generated from an external source:

In a similar way, using the “downtime” schedule, you can set a schedule for resource outages. The visual representation is formed using the space markup tool:

After the sink object passes through the Box type application, the application is destroyed, and in the active LogisticsMap class, the sourceLorry object generates the Agent type request. The application moves along hidden lines of the space marking to the only resource "Shop_1" (Fig. 4) reflecting the point of retail sales.

Upon reaching the resource, an agent type order is destroyed by the sink object, and the current balance of the retail point of sale is increased by a specified amount.
At the presentation there is a chart reflecting the current balance of the goods at the retail point of sale.
When the zero balance is reached, sales at the retail outlet are suspended until the next delivery. The functionality provides the "sale" event that is fired with a frequency of 1 hour.
The event transfers control to the action diagram:

The chart, when an event occurs, analyzes the current balance (currentStock variable) relative to the reorder point (recorderPoint parameter). If the current balance exceeds the reorder point, the variable storing the current demand level (the “currentStock” variable) is assigned the value> 0 and the product is sold by reducing the current balance by the current demand level (currentStock-currentStock). Otherwise, the chart moves to the next decision block, which compares the current balance and the level of current demand. If the current balance exceeds the current demand level, a variable storing the current demand level is assigned a value> 0 and the goods are sold by reducing the current balance by the current demand level. Otherwise, a variable,
At the current stage of construction, the model is quite general, but it fully reflects the process of passing the goods: from the arrival of the goods and their placement on the shelves of the storage area to its transfer to a retail point of sale with subsequent sale. Already at this stage of model development, experiments can be performed optimizing the reorder point in order to stabilize the supply chain.
Problem statement (process description)
According to the supply calendar agreed with the supplier, a certain quantity of goods of one type arrives at the logistics center. If the warehouse is full, the application for the supply of goods is deliberately canceled. The goods are received, stored and transferred to the retail point of sale in packages of 8 pcs. Upon arrival, the car is met by an employee of the center (storekeeper), checks for the necessary supporting documentation, certificates of conformity / quality, primary accounting documentation and accompanies the car to the unloading area.
In the unloading zone, the storekeeper, in the presence of the forwarder and with the help of loading equipment (electric forklift), carries out the reception and visual inspection of the goods. Then it moves it to the input control zone. The quality specialist (controller) conducts incoming inspection of the goods. Upon admission, the goods, with the help of a quality specialist, are moved to the waiting area for further placement on the shelves of the storage area. If a product is found that does not match the input parameters, it moves it to the defect isolator for further return to the supplier.
Pickers using loading equipment (electric forklift) complete the delivery to the retail point of sale in the shipping area. The picking is carried out when the balance of the goods at the retail point of sale of the replenishment point (reorder point) is reached.
After completing the standard shipment lot, the goods are transferred to the retail point of sale for sale.
It is necessary to develop a model of the presented process for further optimization experiments (for example, determining the reorder point in the absence of a zero balance at the retail point of sale).
Initial data
Logistics Center Resources
No. | Resource | number | EI | Shift |
---|---|---|---|---|
1 | Storekeeper | 2 | people | 3 shifts of 8 hours |
2 | Electric forklift | 5 | PCS. | 3 shifts of 8 hours |
3 | Controller | 3 | people | 3 shifts of 8 hours |
4 | Storage rack shelving cells | 120 | cells |
Duration of operations
No. | Operation | Duration min |
---|---|---|
1 | Unloading machine | From 15 to 30, on average 21 |
2 | Input control | 4 to 11, average 11 |
Retail Point of Sale Performance Parameters
No. | Parameter | Value | EI | Note |
---|---|---|---|---|
1 | Current demand | 40 | PCS. | Once an hour |
2 | Reorder point | 500 | PCS. | |
3 | Quantity of goods received in 1 package | 8 | PCS. |
Implementation AnyLogic
software product (v.7.0.2) was selected as a development tool .
Description of active object classes
No. | Class | Description |
---|---|---|
1 | Warehouse | The main active class of the model, containing the remaining classes; Reflects the behavior diagram and presentation of the warehouse model; |
2 | Logisticsmap | The nested active class of the model, which contains a diagram of the behavior of the interaction between the warehouse and the retail point, as well as the behavior of the retail point of sale; |
3 | Box | Type of application for goods; Contains a presentation of the Box application; |
4 | Track | Application type of the machine delivering the goods; Contains presentation of Track application; |
5 | Lorry | Request type of a machine delivering goods to a retail point of sale, as well as returning goods that have not passed control to the supplier; Contains a presentation of the Lorry application; |
6 | Storekeeper | Type of agent; Contains a presentation of the storekeeper resource; |
7 | Loader | Type of agent; Contains a presentation of the resource "loader"; |
8 | Controller | Type of agent; Contains a presentation of the resource "controller"; |
9 | Shop_1 | Type of agent; It contains a presentation of the resource "shop_1" simulating a retail point of sale in the model; |
Using a discrete event modeling diagram, a model for the functioning of a logistics center has been developed

Description of the main blocks of the model
No. | Block | Description |
---|---|---|
1 | Sourcebox | Before each step, the model counts the number of free cells in the storage area; At each step of the model generates Box class requests; |
2 | selectFreeCell | Switch. It analyzes the calculated free cells and, in the absence of free cells , sends requests for destruction to the cancellationRequests block |
3 | batchTruck / unbatchBox | Builds / decomposes the number of “Box” requests indicated in the delivery calendar into one “Track” order to reflect on the presentation of the arrival of the car |
4 | seizeStorekeeper / releaseStorekeeper | Captures / releases a resource of the “storekeeper” type, reflecting at the presentation the interaction of the storekeeper with the machine (meeting, escort, unloading); After the vacation, the resource returns to the base node in the absence of other work; |
5 | serviceUnload | Captures a resource of type "loader" and moves it to the application; Carries out a delay, symbolizing unloading the machine and checking the goods. The delay is carried out using the triangular distribution method (triangular (15, 21, 30)); Releases a resource of type "loader"; The allocated resource is returned to the base node in the absence of other work; |
6 | splitTruck | Creates a copy of an application of type “Track” to further reflect the disposal of the machine in the exit zone at the presentation. The need for this is due to the fact that upon reverse decompilation of an application of the type “Track” into applications of the type “Box”, the application “Track” is destroyed; |
7 | seizeController / releaseController, releaseController1 | Captures / releases a resource of the “controller” type to reflect on the presentation the controller’s movement to the application and return to the base node in the absence of other work; |
8 | controll | Conducts a delay, symbolizing the conduct of incoming control. The delay is carried out using the triangular distribution method (triangular (4, 7, 11)); |
9 | admittance | Switch; Determines the likelihood that the application type “Box” passes the process of incoming control; The probability is set directly (0.107) |
10 | batchLorry | It compiles a specified number of applications of the “Box” type into an application of the “Lorry” type, symbolizing the packaging of goods that have not passed control into the machine for return to the supplier; |
eleven | queuePallete | It delays the incoming applications of the “Box” type until the availability of the free resource of the “loader” type for moving goods to the cells of the storage zone; |
12 | palleteSystem | Combines the racks reflected in the presentation into a single storage system; |
thirteen | palleteStore | Captures any free resource of type "loader" and attaches it to the application; Places a request of type “Box” in a free cell in the zone “palleteSystem” Releases a resource of type “loader”. The allocated resource is returned to the base node in the absence of other work; |
14 | hold | Blocks further transfer of “Box” type orders if the current balance at the retail point of sale is greater than the reorder point. This is achieved by calling the "block ()" and "unblock ()" methods at the entrance of the application; the code
|
fifteen | seizeLoaderPall / releaseLoaderPall | Captures / releases a resource of the “loader” type to reflect on the presentation the controller’s movement to the application and return to the base node, provided there are no other works; |
16 | palletePick | Retrieves an order of type “Box” from the zone “palleteSystem” and moves it to the shipping area at a retail point of sale; |
17 | batchLorry1 | It compiles a specified number of Box type requests into a Lorry type application, symbolizing the loading of a machine for shipment to a retail point of sale; |
18 | sink | Destroys an application of type "Box"; At the entrance, it starts the generation of one “Agent” type order by the “sourceLorry ” object in the active “LogisticsMap” class to reflect the delivery of goods to the retail point of sale; This is achieved by calling the "manual" application generation method. the code
|
The input stream “SourceBox” is controlled by a schedule generated from an external source:

In a similar way, using the “downtime” schedule, you can set a schedule for resource outages. The visual representation is formed using the space markup tool:

Description of markup areas
No. | Description |
---|---|
1 | Arrival point of cars (applications of type "Track") |
2 | The base node of the location of the storekeepers (applications like "Storekeeper") |
3 | The basic node for the location of electric forklifts (applications like "loader") |
4 | The point of disposal of cars (applications of the type “Track”, in cases of return of goods that have not passed the incoming control to the supplier - “Lorry”) |
5 | Node unloading goods and passing the input control |
6 | The base node of the location of the controllers (applications of the type "Controller") |
7 | Node for picking goods that did not pass incoming control |
8 | Loader waiting unit for placing goods on storage racks |
9 | Storage area |
10 | Assembly unit for shipment to retail outlets |
eleven | Item disposal unit |
After the sink object passes through the Box type application, the application is destroyed, and in the active LogisticsMap class, the sourceLorry object generates the Agent type request. The application moves along hidden lines of the space marking to the only resource "Shop_1" (Fig. 4) reflecting the point of retail sales.

Upon reaching the resource, an agent type order is destroyed by the sink object, and the current balance of the retail point of sale is increased by a specified amount.
At the presentation there is a chart reflecting the current balance of the goods at the retail point of sale.
When the zero balance is reached, sales at the retail outlet are suspended until the next delivery. The functionality provides the "sale" event that is fired with a frequency of 1 hour.
The event transfers control to the action diagram:

The chart, when an event occurs, analyzes the current balance (currentStock variable) relative to the reorder point (recorderPoint parameter). If the current balance exceeds the reorder point, the variable storing the current demand level (the “currentStock” variable) is assigned the value> 0 and the product is sold by reducing the current balance by the current demand level (currentStock-currentStock). Otherwise, the chart moves to the next decision block, which compares the current balance and the level of current demand. If the current balance exceeds the current demand level, a variable storing the current demand level is assigned a value> 0 and the goods are sold by reducing the current balance by the current demand level. Otherwise, a variable,
In conclusion
At the current stage of construction, the model is quite general, but it fully reflects the process of passing the goods: from the arrival of the goods and their placement on the shelves of the storage area to its transfer to a retail point of sale with subsequent sale. Already at this stage of model development, experiments can be performed optimizing the reorder point in order to stabilize the supply chain.