def stochasticTwoOpt(perm):
result = perm[:] # make a copy
size = len(result)
p1, p2 = random.randrange(0, size), random.randrange(0, size)
exclude = set([p1])
if p1 == 0:
exclude.add(size - 1)
else:
exclude.add(p1 - 1)
if p1 == size - 1:
exclude.add(0)
else:
exclude.add(p1 + 1)
while p2 in exclude:
p2 = random.randrange(0, size)
if p2 < p1:
p1, p2 = p2, p1
result[p1:p2] = reversed(result[p1:p2])
return result
评论列表
文章目录