Itertools.permutations为TSP创建n个随机解决方案

时间:2014-09-12 09:33:39

标签: python algorithm permutation itertools

我正在编写一个脚本,为旅行商问题创建随机解决方案。我有一组城市,以及一组距离(因为我正在创建随机解决方案,所以我还不需要)。

我试图在城市列表中使用Itertools.permutations以创建独特的路线。我的问题是:

  1. 我有什么方法可以让Itertools.permutations生成随机解决方案?现在,它从城市[0] - >城市[1] - >城市[2]等开始。我可以将其随机化吗?
  2. 我可以让itertools在返回之前只生成n个排列吗?我有29个城市的名单,你可能已经猜到了很多排列!
  3. 提前致谢!

1 个答案:

答案 0 :(得分:1)

此Python代码将根据随机起点生成排列,并在6个排列后停止:

from itertools import permutations
from random import shuffle
A=range(26)
shuffle(A)
for i,perm in enumerate(permutations(A)):
    print perm
    if i>=5:
        break

请注意,排列仍然有很多结构,因此第二种排列与第一种排列非常相似。

每次尝试不同的排列时,你可以更好地使用shuffle(A)。 (它可以重新生成排列,但29个城市的概率非常低。)例如,

for i in range(10):
    shuffle(A)
    print A