예제 #1
0
def CruzaIndividuos(poblacion, numNodos, padres, probabilidades):
    individuos = []  #Lista que contendrá a los dos individuos a elegir
    nuevos_indiv = {}  #Lista que contendrá al nuevo individuo
    indices = ()

    indices += (random.randint(0, tam_poblacion - 1),
                )  #Elige el índice a elegir del padre 1
    while True:
        r = random.randint(0, tam_poblacion - 1)
        if r != indices[0]:
            indices += (r, )  #Elige el índice a elegir del padre 2
            break
    padres.append(indices)

    individuos.append(copy.deepcopy(poblacion[
        padres[-1][0]]))  # toma el individuo al azar de la población (padre 1)
    individuos.append(copy.deepcopy(poblacion[
        padres[-1][1]]))  # toma el individuo al azar de la población (padre 2)

    nuevos_indiv = Cruza.GPX(
        individuos,
        numColores)  # Cruza a los padres y forma un nuevo individuo
    probabilidades.append(
        bolsas.cuenta_nodos(
            nuevos_indiv, numColores,
            numNodos))  # cuenta los nodos de cada bolsa del individuo

    return nuevos_indiv
예제 #2
0
def InicializacionPoblacion(poblacion, probabilidades, G,numNodos):# Crea instancias de colorado del grafo con estrategia greedy de tamaño de la población
    for ind in range(tam_poblacion):    #Lo realiza hasta el tamaño de la población
        if ind == 0:
            poblacion.append(TomaGreedy(G,numNodos))
        else:
            poblacion.append(bolsas.crea_individuo(G, numColores,numNodos))  #crea un individuo
        probabilidades.append(bolsas.cuenta_nodos(poblacion[ind], numColores, numNodos))    # cuenta los nodos de cada bolsa del individuo
예제 #3
0
def CruzaPadres(individuos,probabilidades,AMonoNuevo,numNodos,G):
    nuevo_indiv = {}  # Lista que contendrá al nuevo individuo
    nuevo_indiv = Cruza.GPX(individuos, numColores)  # Cruza a los padres y forma un nuevo individuo
    probabilidades.append(bolsas.cuenta_nodos(nuevo_indiv, numColores, numNodos))  # cuenta los nodos de cada bolsa del individuo

    # Calcula el número de aristas monocromáticas del individuo nuevo
    AMonoNuevo.append(Busquedas_locales.numeroAristasMono(G, nuevo_indiv,numColores))

    return nuevo_indiv