Solving permutation-based combinatorial optimisation problems