| Initialisation. Define the set of neighbourhood structures , , that will be |
| used in the search; find an initial solution ; set ; and choose a stop condition. |
| Repeat the following until the stop condition is met: |
| Set ; Until repeat the following steps: |
| Shaking. Generate a point at random from the th neighbourhood of ; |
| (b) Local search. Apply some local search method with as the initial solution; |
| denote with the local optimum that is obtained; |
| (c) Move or not. If is better than Y, move there (), and continue the search |
| from (); otherwise, set ; |