本文介绍了Python 解释器错误,x 不带参数(给定 1)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在写一小段 Python 作为家庭作业,但我没有让它运行!我没有那么多 Python 经验,但我知道很多 Java.我正在尝试实现粒子群优化算法,这是我所拥有的:

I'm writing a small piece of python as a homework assignment, and I'm not getting it to run! I don't have that much Python-experience, but I know quite a lot of Java.I'm trying to implement a Particle Swarm Optimization algorithm, and here's what I have:

class Particle:

    def __init__(self,domain,ID):
        self.ID = ID
        self.gbest = None
        self.velocity = []
        self.current = []
        self.pbest = []
        for x in range(len(domain)):
            self.current.append(random.randint(domain[x][0],domain[x][1]))
            self.velocity.append(random.randint(domain[x][0],domain[x][1]))
            self.pbestx = self.current

    def updateVelocity():
    for x in range(0,len(self.velocity)):
        self.velocity[x] = 2*random.random()*(self.pbestx[x]-self.current[x]) + 2 * random.random()*(self.gbest[x]-self.current[x])


    def updatePosition():
        for x in range(0,len(self.current)):
            self.current[x] = self.current[x] + self.velocity[x]

    def updatePbest():
        if costf(self.current) < costf(self.best):
            self.best = self.current

    def psoOptimize(domain,costf,noOfParticles=20, noOfRuns=30):
        particles = []
        for i in range(noOfParticles):
            particle = Particle(domain,i)
            particles.append(particle)

        for i in range(noOfRuns):
            Globalgbest = []
            cost = 9999999999999999999
        for i in particles:
        if costf(i.pbest) < cost:
                cost = costf(i.pbest)
            Globalgbest = i.pbest
            for particle in particles:
                particle.updateVelocity()
                particle.updatePosition()
                particle.updatePbest(costf)
                particle.gbest = Globalgbest


        return determineGbest(particles,costf)

现在,我看不出为什么这不可行.但是,当我运行它时,出现此错误:

Now, I see no reason why this shouldn't work.However, when I run it, I get this error:

类型错误:updateVelocity() 不接受任何参数(给定 1 个)"

我不明白!我没有给它任何论据!

I don't understand! I'm not giving it any arguments!

感谢您的帮助,

莱纳斯

推荐答案

Python 将对象隐式传递给方法调用,但您需要为其显式声明参数.这通常被命名为self:

Python implicitly passes the object to method calls, but you need to explicitly declare the parameter for it. This is customarily named self:

def updateVelocity(self):

这篇关于Python 解释器错误,x 不带参数(给定 1)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 09:57
查看更多