加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python解释器错误,x不带参数(给定1个)

发布时间:2020-12-20 10:34:50 所属栏目:Python 来源:网络整理
导读:我正在写一小段 python作为家庭作业,我不会让它运行!我没有那么多的 Python经验,但我知道很多Java. 我正在尝试实现粒子群优化算法,这就是我所拥有的: class Particle: def __init__(self,domain,ID): self.ID = ID self.gbest = None self.velocity = [] s
我正在写一小段 python作为家庭作业,我不会让它运行!我没有那么多的 Python经验,但我知道很多Java.
我正在尝试实现粒子群优化算法,这就是我所拥有的:

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)

现在,我认为没有理由不这样做.
但是,当我运行它时,我收到此错误:

“TypeError:updateVelocity()不带参数(给定1个)”

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

谢谢您的帮助,

莱纳斯

解决方法

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

def updateVelocity(self):

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读