ins*_*get 7 python large-data sample-data genetic-algorithm
我必须使用遗传算法来解决旅行推销员问题,我将不得不为家庭作业写作.
问题包括52个城市.因此,搜索空间是52!.我需要随机抽样(比方说)1000个range(1, 53)遗传算法初始种群的个体排列.
为了做到这一点,我试过:
>>> random.sample(itertools.permutations(range(1, 53)), 1000)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python2.6/random.py", line 314, in sample
n = len(population)
TypeError: object of type 'itertools.permutations' has no len()
Run Code Online (Sandbox Code Playgroud)
所以我试过了
>>> random.sample(list(itertools.permutations(range(1, 53))), 1000)
Run Code Online (Sandbox Code Playgroud)
但是,鉴于它52!非常大,list操作最大化了我的计算机上的内存和交换空间.我不能只选择产生的前1000个排列itertools.permutations因为它是非常确定的并且会偏向我的遗传算法.
有没有更好的方法来实现这种抽样?
你根本不需要置换.拨打random.sample(range(52), 52)1000次电话.
PS:你真的应该在你的所有工作中使用从零开始的索引(range(52)而不是range(1, 53)).事情通常会以这种方式变得更好.
| 归档时间: |
|
| 查看次数: |
764 次 |
| 最近记录: |