# Multi-Objective Optimization Study of Annular Fluid Flow Structure in Cordless Core Drilling Tools
## 2 Structural Design and Principles of Hydraulic Lifting Cordless Coring Drilling Tool
### Principles of the Improved NSGA-II Algorithm
```
Input: parent1, parent2, p_c, p_m, eta_c, eta_m, lower_bound, upper_bound Output: child1, child2
1: Initialize child1 and child2 with parent1 and parent2
2: // Simulated Binary Crossover (SBX)
3: if random(0, 1) < p_c then
4: for i = 1 to number_of_variables do
5: if abs(parent1[i] - parent2[i]) > EPS then
6: y1 = min(parent1[i], parent2[i])
7: y2 = max(parent1[i], parent2[i])
8: rand = random(0, 1)
9: beta = 1.0 + (2.0 * (y1 - lower_bound[i])/(y2 - y1))
10: alpha = 2.0 - (1.0/((1.0 + beta)*(eta_c + 1.0)))
11: if rand <= (1.0/alpha) then
12: beta_q = (rand * alpha)*(1.0/(eta_c + 1.0))
13: else
14: beta_q = (1.0/(2.0 - rand * alpha))*(1.0/(eta_c + 1.0))
15: end if
16: child1[i] = 0.5 * ((y1 + y2) - beta_q * (y2 - y1))
17: child2[i] = 0.5 * ((y1 + y2) + beta_q * (y2 - y1))
18: // Ensure children are within bounds
19: child1[i] = min(max(child1[i], lower_bound[i]), upper_bound[i])
20: child2[i] = min(max(child2[i], lower_bound[i]), upper_bound[i])
21: end if
22: end for
23: end if
24: // Polynomial Mutation
25: for i = 1 to number_of_variables do
26: if random(0, 1) < p_m then
27: delta = if random(0, 1) < 0.5 then (2.0 * random(0, 1))*(1.0/(eta_m + 1.0)) - 1.0
28: else 1.0 - (2.0 * (1.0 - random(0, 1)))*(1.0/(eta_m + 1.0))
29: child1[i] += delta * (upper_bound[i] - lower_bound[i])
30: child2[i] += delta * (upper_bound[i] - lower_bound[i])
31: // Ensure children are within bounds
32: child1[i] = min(max(child1[i], lower_bound[i]), upper_bound[i])
33: child2[i] = min(max(child2[i], lower_bound[i]), upper_bound[i])
34: end if
35: end for
36: return child1, child2
```

**Algorithm 3**Genetic Operators

### Multi-Objective Optimization of Annular-Air Liquid Flow Structure

In order to verify the effectiveness of the improvement strategy proposed in this paper for the NSGA-II algorithm, the algorithm performance testing experiments could be carried out using the multi-objective test function ZDT3, which could be used to evaluate the convergence and diversity of the improved NSGA-II algorithm by comparing it with the NSGA-II algorithm. The test function is a two-objective optimization problem, which is suitable for performance testing and comparison of multi-objective optimization algorithms since its true optimal solution set is known. ZDT3 [41] test function, first objective function:

Figure 4:0

The second objective function is:

Figure 4:1

where \(g(x)\) is a function computed from the \(2^{\text{nd}}\) to the \(30^{\text{th}}\) element of the vector \(x\):

Figure 4:2

In the test function, \(m=30\), the decision variable \(x_{i}\in[0,1]\). Inverse Generation Distance (\(IGD\)) is used to evaluate the convergence and diversity of the solved Pareto approximate solution set. The calculation of \(IGD\) needs to obtain a set of solution sets uniformly sampled on the real Pareto Front (PF) in advance. The formula is defined as follows:

Figure 4:3

where \(P^{*}\) is the set of real PF sampling solutions, \(S\) is the set of PF approximation solutions obtained by the algorithm. The improved NSGA-II algorithm and the normal NSGA-II algorithm are tested using the aforementioned ZDT3 test function, and the Pareto frontiers obtained are shown in Figures 4(a) and 4(b), respectively. Considering the comparison diagram of Pareto frontiers, the Pareto frontiers of the improved NSGA-II algorithm have a more uniform and wider distribution in general, while the ordinary NSGA-II algorithm has the phenomenon of stacking and overlapping of individuals in some regions and discontinuities in some regions. Intuitively, the improved NSGA-II algorithm is significantly better than the ordinary NSGA-II algorithm when considering the diversity of solution distribution. To obtain more accurate experimental results, this section uses the evaluation metric \(IGD\) to quantitatively analyze the algorithms. Each algorithm is run 20 times independently for each test problem. The \(IGD\) index values obtained from each run are recorded, and the mean and standard deviation are calculated.