def main(): # Determine o número de partículas P da população. particlesAmount = constants.POPULATION_SIZE population = [] iterations = constants.ITERATIONS xRange = constants.X_RANGE yRange = constants.Y_RANGE vRange = constants.V_RANGE # Atribua uma velocidade inicial (v) igual para todas as partículas. vX = random.uniform(vRange[0], vRange[1]) vY = random.uniform(vRange[0], vRange[1]) initialVelocity = [vX, vY] # Inicialize aleatoriamente a posição inicial (x) de cada partícula p de P. for seq in range(particlesAmount): x = random.randint(xRange[0], xRange[1]) y = random.randint(yRange[0], yRange[1]) particle = Particle(x, y, initialVelocity) population.append(particle) for iteration in range(iterations): # Se condição de término não for alcançada for particle in population: # Calcule sua aptidão fp = f (p). fitnessValue = calculateFitnessValue(particle.getPosition()) particle.setFitnessValue(fitnessValue) # Calcule a melhor posição da partícula p até o momento (pΒ). bPosition = calculateBestPosition(particle) particle.setPBest(bPosition) # Descubra a partícula com a melhor aptidão de toda a população (gΒ). bParticle = getBestParticle(population) for particle in population: # Atualize a velocidade da partícula newVelocity = updateVelocity(particle, bParticle) particle.setVelocity(newVelocity) # Atualize a posição da particula newPosition = updatePosition(particle) particle.setPosition(newPosition) # print("\n\n\n") # print("ITERATION ", iteration) # for particle in population: # print("############") # particle.printParticle() # print("Fitness Value") for particle in population: print(particle.getFitnessValue())