我試圖模擬這種問題(有關其詳細信息,http://www.mpi-hd.mpg.de/personalhomes/bauke/LABS/index.php)低自相關二元序列問題? Python的故障排除
我已經看到,對於10位的序列中的最小的成熟是13。然而,我的應用程序似乎正在12相當頻繁。這意味着我的程序中存在某種錯誤。在我對這些代碼中的總和進行建模時,是否存在明顯的錯誤?
def evaluate(self):
self.fitness = 10000000000 #horrible practice, I know..
h = 0
for g in range(1, len(self.chromosome) - 1):
c = self.evaluateHelper(g)
h += c**2
self.fitness = h
def evaluateHelper(self, g):
"""
Helper for evaluate function. The c sub g function.
"""
totalSum = 0
for i in range(len(self.chromosome) - g - 1):
product = self.chromosome[i] * self.chromosome[(i + g) % (len(self.chromosome))]
totalSum += product
return totalSum
對不起,也許我錯過了一些東西,但是當我讀到公式時,我仍然看到g從1開始?另外,感謝zip功能上的指針:) – Chris
@Chris,你是對的 - off-by-1的問題是不同的,讓我相應地編輯A. –
奇怪的是,關閉的東西肯定是一個錯誤。我修好了,仍然有錯誤。然後我用sum語句替換了我的求和循環,它似乎是固定的。不過,我看不出它們實際上有什麼不同。奇怪。謝謝! – Chris