def _gen_swarm(self, lo, up, size=0): for _ in range(size): x = random_vector(lo, up) self.particles.append( Particle(x, random_vector(-abs(up - lo), abs(up - lo)))) if calculate_yang(x) < calculate_yang( self.best_swarm_x) or self.best_swarm_x == -1: self.best_swarm_x = calculate_yang(x)
def update_particles_velocity(self, e, omega=1, fip=1, fig=1): for particle in self.particles: particle.update_velocity(omega, fip, fig, self.best_swarm_x) particle.update_x() particle_x_val = calculate_yang(particle.x, e) particle_best_x_val = calculate_yang(particle.best_x, e) if particle_x_val < particle_best_x_val:
def _gen_swarm(self, lo, up, size=0): for _ in range(size): self.particles.append( Particle( random_vector(lo, up), random_vector(-abs(up - lo), abs(up - lo)) ) ) if calculate_yang(self.particles[-1])
def _gen_swarm(self, lo, up, e, size=0): for _ in range(size): x = random_vector(lo, up) self.particles.append( Particle(x, random_vector(-abs(up - lo), abs(up - lo)))) x_val = calculate_yang(x, e) if x_val < self.best_swarm_val or self.best_swarm_x == -1: self.best_swarm_x = x self.best_swarm_val = x_val
def _gen_swarm(self, lo, up, e, size=0): for i in range(size): if i == 0: x = random_vector(lo, up) else: x = random_vector( -abs(max(self.particles[0].x) - min(self.particles[0].x)), abs(max(self.particles[0].x) - min(self.particles[0].x))) self.particles.append( Particle(x, random_vector(-abs(up - lo), abs(up - lo)))) x_val = calculate_yang(x, e) if x_val < self.best_swarm_val or self.best_swarm_x == -1: self.best_swarm_x = x self.best_swarm_val = x_val
def update_particles_velocity(self, e, omega=1, fip=1, fig=1): for particle in self.particles: particle.update_velocity(omega, fip, fig, self.best_swarm_x) x_val = calculate_yang(x, e)
class Swarm: def __init__(self, e, size=0, lo=-5, up=5): self.best_swarm_x = -1 self.best_swarm_val = -1 self.particles = [] self.size = size self._gen_swarm(lo, up, e, size) def _gen_swarm(self, lo, up, e, size=0): for _ in range(size): x = random_vector(lo, up) self.particles.append( Particle(x, random_vector(-abs(up - lo), abs(up - lo))) ) x_val = calculate_yang(x, e) if x_val < self.best_swarm_val or self.best_swarm_x == -1: self.best_swarm_x = x self.best_swarm_val = x_val def update_particles_velocity(self, e, omega=1, fip=1, fig=1): for particle in self.particles: particle.update_velocity(omega, fip, fig, self.best_swarm_x) particle.update_x() particle_x_val = calculate_yang(particle.x, e) particle_best_x_val = calculate_yang(particle.best_x, e) if particle_x_val < particle_best_x_val: particle.best_x = particle.x if particle_x_val < self.best_swarm_val: self.best_swarm_x = particle.x