import random import math popsize=20 dimen=10 NeighborhoodSize=3 NumberOfIterations=1000 khi=0.729 HalfPhi=2.05 x=[[],[]] v=[[],[]] p=[[],[]] nbr=[[],[]] pbest=[] def initialize(): for i in range(popsize): x.append([]) v.append([]) p.append([]) pbest.append([]) print for j in range(dimen): x[i].append(random.random()*5+5) #if random.random() < 0.5: x[i][j]=-x[i][j] p[i].append(x[i][j]) for j in range(dimen): v[i].append(random.random()) if random.random() < 0.5: v[i][j]=-v[i][j] #print round(v[i][j],4), pbest[i]=Sphere(i) #evaluate(i) MakeNeighborhoods() def MakeNeighborhoods(): for i in range(popsize): nbr.append([]) for j in range(NeighborhoodSize): nbr[i].append(i-1+j) if nbr[i][j] < 0: nbr[i][j]=popsize-nbr[i][j]-2 elif nbr[i][j] >= popsize: nbr[i][j]=nbr[i][j]-popsize def SwarmIterate(): gbest=0 for looper in range(NumberOfIterations): for i in range(popsize): CurrentVal=Sphere(i) #evaluate(i) g=nbr[i][0] for k in range(NeighborhoodSize): temnbr=nbr[i][k] if pbest[temnbr]