J'écris un petit morceau de python comme devoir, et je ne le fais pas fonctionner! Je n'ai pas beaucoup d'expérience Python, mais je connais pas mal de Java. Je suis en train de mettre en œuvre un algorithme d'optimisation Swarm des particules, et voici ce que j'ai:Erreur de compilateur Python, x ne prend pas d'arguments (1 donné)
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)
Maintenant, je ne vois aucune raison pour laquelle cela ne devrait pas fonctionner. Cependant, quand je le lance, je reçois cette erreur:
"TypeError: updateVelocity() ne prend aucun argument (1)" données
Je ne comprends pas! Je ne donne aucun argument!
Merci pour l'aide,
Linus
Veuillez mettre en évidence votre code et cliquez sur le bouton "010101" pour le formater correctement. –
Il n'y a pas de lignes vides dans ma source, c'est juste la façon dont ce site le met en forme. – Linus
Question de mauvaise qualité: beaucoup de code sans rapport avec de nombreuses erreurs de syntaxe dues aux espaces et onglets mélangés. Dupliquer de meilleure question http://stackoverflow.com/q/6614123/448474 – hynekcer