## 5 MADPSO Method Design
### Algorithm Design
#### 5.2.2 Queuing Service Model-Based Decoding Operator  
As mentioned above, SACOP is a parallel tasks' collaborative scheduling problem with the coupled temporal relationship, while the designed chromosome code only contains the task allocation and sequence of each AGV, which means the decoding operator is a process to complete the AGV task timing information. However, due to the complexity of the parallel tasks' temporal problem, it is difficult to give a few formulas to complete the decoding process. Moreover, the measure mentioned above to ensure that all solutions are feasible by setting a buffer zone may also lead to the inconsistency between the real task execution order of AGV and the encoding information, which further increases the difficulty of decoding by direct calculation. Therefore, it is necessary to find a new decoding method. Considering that in the two working states of AGV static operation and dynamic traveling, the AGV in the dynamic phase will not change the temporal state of the current system until it reaches the next endpoint (static operation point), and we can convert the  
Figure 8: Double-layer integer encoded chromosome design. decoding process into a special queuing service model (as shown in Figure 9). In the model, multiple parallel AGV tasks' sequences converge into a single temporal workflow through a temporal information-adding window. Based on the above cognition, this paper proposes a simulation decoding method based on the queuing service model. The main flow of the decoding operator is shown in the following steps:  
* Step 1: Generate task sequences \(S_{i}^{task}=[(o_{1},w_{1},s_{1}),(o_{2},w_{2},s_{2}),\cdots,(o_{N},w_{N},s_{N})]\) for each AGV based on individual chromosome information, where \(o_{j}\) represents the \(j\)-th task's order number, \(w_{j}\) represents the \(j\)-th task's picking station number, and \(s_{j}\) represents the \(j\)-th task's stage (including pick up, delivery, and container return). * Step 2: Check the status of picking stations and move the buffered orders contained in the pallets that are being picked to the corresponding task sequence header of the AGV. * Step 3: Take the first tasks in each AGV task sequence to form the set to be served and calculate the to-be-served tasks' time of arrival in endpoints (in particular, we take a large value for the endpoint arrival time of the pickup task of the occupied container to indicate that it has the lowest priority to be served). * Step 4: Take the task with the earliest arrival time in the to-be-served set as the service object this time and check its task stage. If the stage is picking up, skip to Step 5; if it is delivering, skip to Step 6; and if it is container return, skip to Step 7. * Step 5: Calculate the endpoint departure time and the stacker energy consumption of the task, update the container status to \"occupied\", and update the task phase information to \"delivery\". When finished, skip to Step 8. * Step 6: Check the picking pallet information of the picking station to determine whether the order can be picked. If the order can be picked out, the following process is performed in sequence: check the remaining orders in the container that can be picked out, update the AGV task sequence, add the endpoint departure time of this task, update the task phase information to \"container return\", and update the container destination according to the number of remaining orders in the container. If the order cannot be picked out, the following process shall be performed in sequence: check the remaining orders that can be picked out in the container, update the AGV task sequence, add the order task to the buffer task sequence, add the endpoint departure time of this task, update the task stage information to \"container return\", and update the container return destination to \"buffer\". When finished, skip to Step 8. Figure 9: Convert the decoding process into a special queuing service model. * Step 7: Execute the following process in sequence.