Research Article

A Two-Level Metaheuristic for the Job-Shop Scheduling Problem with Multipurpose Machines

Algorithm 2

MPM-LOLA’s procedure.
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 P0P 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 tLtL + 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).