def update(self, particle, w, c1, c2): for i in range(len(self.position)): val = w * self._velocity[i] + c1 * random() * Setup.xor( self._bestGlobal[i], self.position[i]) + c2 * random( ) * Setup.xor(particle.position[i], particle.bestPersonal[i]) self._velocity[i] = val for i in range(len(self._velocity)): if random() < Setup.sigmoid(self._velocity[i]).real: self.position[i] = particle.position[i]