我是python的新手。我正在尝试实现一种遗传算法,该算法先前已在MatLab中实现。我需要为我的初始种群创建几个染色体(个体)。在MatLab中,我曾经使用rand
函数来执行此操作,并且它给了我很多独特的(或至少足够不同的)初始填充。但是在python中,我尝试了random
的不同方法,但是在50个人中,我只有3-4条独特的染色体。这是我在__main__.py
中的python代码:
for i in range(pop_size):
popSpace.append(Chromosom(G=mG,M=mM))
sum_Q+=popSpace[i].Q
还有我的Chromosom
类:
class Chromosom:
def __init__(self,G,M):
self.Q = 0
self.V = []
self.Chr = []
self.M= M
self.G= G
self.randomChromosom()
self.updateQ_Qs()
def randomChromosom(self):
for m in range(len(self.M)):
if (random.random()< 0.5):
self.Chr[m] = 1
else:
self.Chr[m] = 0
我也尝试获取随机位,但结果仍然相同。例如,我使用print(str(main.mRand.getrandbits(6))
在控制台中查看结果,并意识到数字重复过多。有没有一种方法可以创建更多唯一的随机数?在MatLab中,具有rand
功能的相同代码运行良好(当然很慢)。拥有如此接近的初始种群会导致后续步骤的结果不佳(还要指出,随机性问题也会导致类似的突变)]