Ejemplo n.º 1
0
 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
Ejemplo n.º 5
0
    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