## 3 Construction and Solving Method for the Bi-Level Multi-Objective Optimization Model
### Method for Solving the Model
#### 3.3.2 Improvement of the NSGA-III Algorithm  
NSGA-III has achieved good results in solving high-dimensional multi-objective optimization problems. [PERSON] et al. successfully achieved the optimal Pareto solution of multi-objective optimization problems with simple constraints by using NSGA-III [30]. However, in practical engineering applications, the multi-objective optimization problem is often constructed as a complex, large-scale problem. In the face of complex, large-scale, multi-objective problems, the reference points of NSGA-III are uniformly distributed on its unit hyperplane, but this does not ensure that the Pareto solution is also uniformly distributed; it may also have premature convergence and low search efficiency in the late evolution. To improve the global search ability and convergence speed of the algorithm, the existing NSGA-III was improved by the authors, and the improved NSGA-III was used to calculate the bi-level optimization model in this study. The flow chart and specific solution steps of the improved NSGA-III are as shown in Figure 3 as follows:  
Step 1--Population initialization: The parent population Pop is randomly generated with the number N. The genetic algebra is set as Gen, and the target reference point is defined;  
Figure 2: Calculation process of the bi-level multi-objective collaborative optimization model. Step 2--Non-dominated sorting: The objective function value of the current population is determined, and all parent individuals with non-dominated levels are sorted; Step 3--Population crossover and mutation (step improved): A simulated binary crossover (SBX) operator and arithmetic crossover (AX) operator are combined, creating a new generation of offspring individuals with the same population size produced via crossover and mutation, along with the reserved parent individuals to generate a new population. In this step, the arithmetic crossover operator increases to improve the global search ability of the algorithm and increase the diversity of the population. The arithmetic crossover operator expression can be shown as [31]:  
\[\left\{ \begin{array}{l}X_{A}^{t+1}=\alpha X_{A}^{t}+(1-\alpha)X_{B}^{t}\\ X_{B}^{t+1}=(1-\alpha)X_{A}^{t}+\alpha X_{B}^{t}\end{array} \right. \tag{25}\]  
where \(\alpha\) represents uniform arithmetic crossover when it is constant, or else is non-uniform arithmetic crossover; \(X_{A}^{t}\) and \(X_{B}^{t}\) are the real numbers encoding two individual decision variables to be crossed in the t generation; Step 4--Creating hyperplanes: A new generation of population individuals are adapted and normalized, and then the ideal points in the new population are used to create hyperplanes; Step 5--Associating the reference points: The merged population individuals are associated with the reference points, calculating the distance from each individual to the reference point and determining the number of individuals associated with each reference point; Step 6--Creation of a new generation of population (step improved): The elite retention mechanism is used to select N individuals from the new generation of population individuals to become a new generation of the parent population. In the screening process, the repetitive individuals in the population are eliminated. At the same time, non-dominated sorting and elite retention are used to select excellent individuals to supplement and generate the final generation of the parent population. In this step, in order to obtain the non-dominated solution set that is consistent with the population number at the end of the algorithm, the repeated solutions at the individual level are screened in the output process of the solution. The \"unique\" function is applied using the calculation software. This method can also maintain the diversity of solutions; Step 7--The iteration is completed: By judging whether the genetic algebra reaches the maximum set algebra, the obtained Pareto solution set is output.