-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'是否是一个新对象。您的列表中的所有对象“神奇地”呈现最后一个值强烈表明它们都是同一个对象。 –