## 4 The Proposed Hybrid Method
The hybrid algorithm then has an inner loop that uses the DE to perform the exploration task. For each solution among the population, the loop iterates the following steps again. Three potential solutions are chosen in the first stage using a roulette wheel selection method while considering the dominance rank values. Since the roulette wheel selection mechanism gives more chances to the bigger values, it will more likely select the solutions with a higher dominance rank. To prevent this, all dominance rank values are subtracted by the biggest dominance rank in the population. This way, the rank of the worst solution becomes zero, and for the other solutions, the higher dominance rank indicates a better solution. Therefore, the selection step chooses three random solutions for each solution in the population so that better solutions have a better chance of being selected. In Figure 4, the algorithm is presented. To identify the final solution C, the crossover operator is then used over three solutions that were arbitrarily chosen in the following three steps. Then solution \(i\) is replaced by solution C if the solution C dominates solution \(i\). Crossover operators are implemented in a way that results in workable solutions. Only processors are used for this two-point crossover. In this manner, only the processors are joined, and the order of the jobs is maintained because tasks follow a topological order and any random combination would break the feasibility of the solution. Meanwhile, the crossover operator is applied according to the crossover rate, which has been defined between 0 and 1. Algorithm 4 indicates the crossover algorithm. In the algorithm, random (0, 1) generates a uniformly distributed random number in the interval (0, 1). Likewise, Cutpoint1 and Cutpoint2 should be generated under the condition that Cutpoint1 must be smaller than Cutpoint2. ```
(Parents1 [1... 2][1...  n], Parent2 [1... 2][1... n])  R = random (0, 1)//Generate a random number between 0 and 1 for Crossover Rate  If (R < CrossoverProbability)  Cutpoint1 = RandomNumber (1, n)  Cutpoint2 = RandomNumber (1, n)  For \(i\) = 1 to Cutpoint  Swap (Parent1 [2][i] and Parent2 [2][i])  For \(i\) = Cutpoint2 to n  Swap (Parent1 [2][i] and Parent2 [2][i])
```  
**Algorithm 4**Crossover  
The mutation operator is applied to the solution I in the inner loop's final step. The sequence of the jobs is also changed by the suggested approach for the mutation operator. The algorithm selects a point on the solution between 1 and the number of tasks randomly. The order of the jobs is then kept unchanged up until that random point, but after that point, the order is changed arbitrarily. The adjustment is implemented using the procedure shown in Algorithm 1, in which the remaining portion of the solution is randomly generated after the given point. The benefit of the suggested mutation is that the solution created by this operator is altered in terms of both tasks and processors, which causes the algorithm to hop through the search space and find better solutions. The algorithm also picks a few CPUs and switches them at random. In Algorithm 5, the mutation algorithm is displayed.