Esempio n. 1
0
    for i, particle in enumerate(cloud_particles, start=0):
        particle.initialize_coordinates(pso.sup_limit, pso.inf_limit)
        particle.neighbors = topology[i]
        pso.best_neighbor(cloud_particles, particle)
    #     scatter_x.append(particle.x[0])
    #     scatter_y.append(particle.x[1])
    #
    # plt.plot(scatter_x, scatter_y, 'o', color='orange', label='Initial Cloud')
    # plt.legend()
    dict_iter = {}
    vector_iter = []
    while k < max_iteration:
        for i, particle in enumerate(cloud_particles, start=0):
            vector_iter.append(particle.x[:])
            if pso.f(particle.x) < pso.f(particle.p_best):
                particle.p_best = particle.x[:]
                if pso.f(particle.x) < pso.f(pso.g_best):
                    pso.g_best = particle.x[:]
            for j in range(particle.dimension):
                pij = particle.p_best[j]
                gj = pso.g_best[j]
                xij = particle.x[j]
                particle.velocity[j] = pso.calculate_velocity(pij, gj, xij)
            particle.update_velocity()
        dict_iter[k] = vector_iter
        vector_iter = []
        k += 1
    best_fitness = pso.f(pso.g_best)
    print(
        f'f6(x): {pso.inf_limit} <= xi <= {pso.sup_limit}\n'
    m = int(sys.argv[4])
    iteracoes = int(sys.argv[5])
    atual = 0

    pso = PSO(w, c_1, c_2, [-10, 10], dimensao)
    nuvemParticulas = pso.inicia_nuvem(m)
    topology = pso.arruma_vizinhos(nuvemParticulas)

    for i, particula in enumerate(nuvemParticulas, start=0):
        particula.inicia_particula(pso.limiteSuperior, pso.limiteInferior)
        particula.vizinho = topology[i]
        pso.melhor_vizinho(nuvemParticulas, particula)

    while atual < iteracoes:
        for i, particula in enumerate(nuvemParticulas, start=0):
            if pso.f(particula.posX) < pso.f(particula.melhorPessoal):
                particula.melhorPessoal = particula.posX[:]
                if pso.f(particula.posX) < pso.f(pso.melhorGrupo):
                    pso.melhorGrupo = particula.posX[:]
            for j in range(particula.dimensao):
                pij = particula.melhorPessoal[j]
                gj = pso.melhorGrupo[j]
                xij = particula.posX[j]
                particula.distancia[j] = pso.distancia(pij, gj, xij)
            particula.update_distancia()
        atual += 1
    profit = pso.f(pso.melhorGrupo)

    file = 'result.csv'
    fieldnames = [
        'dimensao', 'qtdParticulas', 'iteracoes', 'fatorDiversidade',