| Algorithm 3 CLS |
| Input: bestA, number of crossover operations L, number of values m |
| Output: bestA |
| 1: for u = 1 to L do |
| 2: Au ← select a random assignment |
| 3: crossover point ← U [1, m − 1] |
| 4: C ← Crossover(bestA, Au) |
| 5: if cost(C) < cost(bestA) then |
| 6: bestA ← C |
| 7: end if |
| 8: end for |
| 9: return bestA |