post-final version: a bug in 2-opt was removed