| Step 1. Receive values of its eight input parameters (i.e., P, ρS, ρI, d, ρNS, ρNI, δ, and TB) from MPM-UPLA (Algorithm 3). |
| Step 2. Generate P0 from P by using Steps 2.1 to 2.4. |
| Step 2.1. Let r ⟵ 1. |
| Step 2.2. Randomly generate p ∼ U[0, 1). |
| Step 2.3. Modify P by using D-swap if p < ρS, D-insert if ρS ≤ p < ρS + ρI, and D-reverse otherwise. |
| Step 2.4. If r < n, let r ⟵ r + 1 and repeat from Step 2.2. Otherwise, let P0 ⟵ P and go to Step 3. |
| Step 3. Execute Algorithm 1, with the taken values of δ and TB, for transforming P0 into S0. |
| Step 4. Find a local optimal schedule by using Steps 4.1 to 4.5. |
| Step 4.1. Let tL ⟵ 0. |
| Step 4.2. Randomly generate p ∼ U[0, 1). |
| Step 4.3. Generate P1 from P0 by using d-swap if p < ρNS, d-insert if ρNS ≤ p < ρNS + ρNI, and d-reverse otherwise. |
| Step 4.4. Execute Algorithm 1, with the taken values of δ and TB, for transforming P1 into S1. |
| Step 4.5. Update P0, S0, and tL by using Steps 4.5.1 to 4.5.3. |
| Step 4.5.1. If Makespan(S1) < Makespan(S0), then let P0 ⟵ P1 and S0 ⟵ S1, and repeat from Step 4.1. |
| Step 4.5.2. If Makespan(S1) = Makespan(S0), then let P0 ⟵ P1 and S0 ⟵ S1, and repeat from Step 4.2. |
| Step 4.5.3. If Makespan(S1) > Makespan(S0), then let tL ⟵ tL + 1. If tL < D2, repeat from Step 4.2; otherwise, go to Step 5. |
| Step 5. Return P0 and S0 as the final (best-found) operation-based permutation and the final (best-found) schedule, respectively, to MPM-UPLA (Algorithm 3). |