-6
我有以下問題: 對於遺傳算法我要創建5個突變,並將它們存儲在一份清單(見下面的代碼)。追加不工作像預期
這是我的職責,我想追加突變司機:
def startNewRunFromScratch(self):
self.log.logBlue('Starting new run from scratch', 2, 0)
parameterSet = []
parameterSet.append(Parameter('TEST', 0.5, 0, 1))
defaultGDriver = GDriver(parameterSet)
gDriverList = []
gDriverList.append(defaultGDriver)
m = Mutation(self.mutationRate)
for i in range(1, self.populationSize, 1):
g = m.mutate(defaultGDriver)
self.log.log('After mutaion: '+str(g.parameterSet[0].value), 0, 2)
gDriverList.append(g)
self.startSuite(gDriverList)
而這裏的startSuite函數原型:
def startSuite(self, gDriverList):
self.log.logSuccess('Starting suite', 1, 0)
for g in gDriverList:
self.log.log('Inside suite: '+str(g.parameterSet[0].value), 0, 2)
的問題是,輸出不匹配我的邏輯:
Starting new run from scratch
After mutaion: 0.5
After mutaion: 0.5
After mutaion: 0.5
After mutaion: 0.740296236666
Starting suite
Inside suite: 0.740296236666
Inside suite: 0.740296236666
Inside suite: 0.740296236666
Inside suite: 0.740296236666
Inside suite: 0.740296236666
預期產出:
Inside suite: 0.5
Inside suite: 0.5
Inside suite: 0.5
Inside suite: 0.5
Inside suite: 0.740296236666
沒有人有一個好主意,如何解決這個問題呢?也許我錯過了一些東西。
with m.mutate()我創建了新的。請參閱日誌突變 – johni07
後@ johni07:它記錄g'的'當前值;它不會告訴你'g'是否是一個新對象。您的列表中的所有對象「神奇地」呈現最後一個值強烈表明它們都是同一個對象。 –