Append未按预期工作

2024-09-28 23:40:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下问题: 对于一个遗传算法,我创建了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)

这里是StartSite原型函数:

^{pr2}$

问题是,输出与我的逻辑不匹配:

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

有人知道如何解决这个问题吗?也许我错过了什么。在


Tags: 函数runfromselflognewsuitestarting
1条回答
网友
1楼 · 发布于 2024-09-28 23:40:55

您反复追加相同的Mutation,最后在列表中对其进行了多次引用。如果你想要不同的Mutations,你必须制造新的。(我想这就是您认为的“问题”,因为您从未明确指出输出的错误之处。)

相关问题 更多 >