def fitness_optimo(funcion, x_min, x_max, num_bits, dimen): """ Devuelve el mejor fitness posible que se puede obtener con la amplitud del intervalo (x_max - x_min) dada y el número de bits usados :param funcion: Determina la función que se pretende maximizar :param x_min: Inicio del intervalo de maximización para cada dimensión :param x_max: Final del intervalo de maximización para cada dimensión :param num_bits: número de bits usados para codificar el valor real de la variable xi :param dimen: Número de dimensiones de la función a evaluar :return: devuelve el mejor fitness posible que se puede obtener con la amplitud del intervalo (x_max - x_min) dada y el número de bits usados """ delta = (x_max - x_min) / (2**num_bits - 1) if funcion == "Esfera": optimo = bin(round((-x_min) / delta)) elif funcion == "Schwefel": optimo = bin(round((420.9687 - x_min) / delta)) else: return 1 gen_optimo = bitarray(optimo[2:]) genes_optimos = [] for j in range(dimen): genes_optimos.append(gen_optimo) indiv_optimo = Individuo(genes_optimos) indiv_optimo.set_fitness() mejor_posible = indiv_optimo.get_fitness() return mejor_posible