반응형
나는 숙제 과제로 작은 파이썬 조각을 쓰고 있는데 그것을 실행하지 못하고 있습니다! 저는 파이썬에 대한 경험이 많지는 않지만 Java를 많이 알고 있습니다. Particle Swarm Optimization 알고리즘을 구현하려고하는데 여기에 제가 가지고있는 것이 있습니다.
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):
참조 페이지 https://stackoverflow.com/questions/4445405
반응형
'파이썬' 카테고리의 다른 글
파이썬 Python : 특정 버전 2.4.9로 opencv2를 pip 설치하는 방법은 무엇입니까? (0) | 2020.10.19 |
---|---|
파이썬 Python에서 확장자없이 파일 이름 가져 오기 (0) | 2020.10.19 |
파이썬 바이트 문자열을 정수로 변환하는 방법은 무엇입니까? (0) | 2020.10.19 |
파이썬 Python 3으로지도 객체를 인쇄하는 방법은 무엇입니까? (0) | 2020.10.19 |
파이썬 왜 "IndentationError : expected an indented block"이 발생합니까? (0) | 2020.10.18 |
댓글