## 3 IMOGWO Algorithm Design
### Basic GWO Algorithm Description
#### 3.2.2 Learning Strategies of Initial Population and Leadership Level  
For swarm intelligence algorithm based on iteration idea, the quality of initial population has a direct impact on the quality of solution. The IMOGWO algorithm is designed to perform a reverse learning operation after generating the initial grey wolf population [35]. The reverse individuals of the initial population are generated. Combining the two forms a new grey wolf population. According to the fitness value of each individual, the fast-non-dominant ranking and crowding distance of each individual are calculated [36]. According to the Pareto dominance relationship, the grey wolf individuals sorted in the top N (population number) position are selected to form the final initial grey wolf population in order to improve the quality of the initial population solution. The calculation formula of the individual position information reverse learning is shown in Equation (17). \[X_{ij}^{new}=1-X_{ij} \tag{17}\]  
The pseudo-code for the core part of the reverse learning strategy is outlined in Algorithm 2. \(\alpha\) Wolf, \(\beta\) wolf, and \(\delta\) wolf represent three different leadership levels in the grey wolf population and guide the search behavior of \(\omega\) wolves. Therefore, the quality of the individual solutions of \(\alpha\) wolf, \(\beta\) wolf, and \(\delta\) wolf directly affects the quality of solutions of the entire grey wolf population. However, in the actual predation behavior, the \(\alpha\) wolf also needs to learn the predation experience of grey wolf individuals at the same level to constantly improve itself, \(\beta\) wolf needs to learn from \(\alpha\) wolf, while \(\delta\) wolf needs to learn from \(\beta\) wolf or \(\alpha\) wolf to enhance their predation skills. Therefore, this paper designs a learning strategy for the leadership level. For the \(\alpha\) wolf individual, two unequal random numbers \(a\) and \(b\) (\(a<b\)) are randomly generated, and the fliplr mutation is sequentially performed on the variable between a and b in each individual to generate a new \(\alpha\) wolf individual. For \(\beta\) wolf  
Figure 2: Scheduling Gantt charts of two factories. (**a**) Factory 1. (**b**) Factory 2.  
individuals, one \(\alpha\) wolf individual was randomly selected, and LOX cross-mutation [37] was carried out between them to produce a new \(\beta\) wolf individual. For the \(\delta\) wolf individual, a random number r is randomly generated. If r \(<\) 0.5, one \(\alpha\) wolf individual is randomly selected. Otherwise, one \(\beta\) wolf individual is randomly selected, and the LOX cross-mutation is carried out between the two to produce a new \(\delta\) wolf individual. ```
Input: Population size \(N\), the upper and lower limits of individual position variables (\(ub\), \(lb\)), individual dimension Output: Initial population individuals \(X\) Step: Description 1. Randomly generate the initial population \(X1\) 2. Generate the reverse population \(X2\) of the population \(X1\) 3. Combine \(X1\) and \(X2\) 4. Fast non-dominated sort and compute crowding distance, generate different levels of population individuals 5. Select the \(N\) individuals ranked top and generate the initial population \(X\)
```  
**Algorithm 2** Reverse learning strategy. The Fliplr mutation is that the elements \(\{a,b,c,d\}\) in a matrix are reversed from left to right. Before the inversion, the positions of \(a\), \(b\), \(c\), and \(d\) are 1, 2, 3, and 4. After the inversion, their positions are changed as 4, 3, 2, and 1. The Fliplr mutation is shown in Figure 3a, \(a\) = 2, \(b\) = 4, then the variables [2, 1, 4] between \(a\) and \(b\) is flipped to [4, 1, 2]. The LOX cross-mutation is the cross behavior between two parent individuals. First, the job set \(\{a,b,c,d\}\) needs to be randomly divided into two sub-job sets \(\{a\}\) and \(\{b,c,d\}\). Retain the position of element \(a\) in the first subset in parent 1, copy it into the offspring, and discard the elements in the remaining parent 1.