NathSan es una librería de algoritmos genéticos diseñada para realizar optimización y resolución de problemas mediante técnicas evolutivas. Permite usar diferentes métodos de selección, cruce, mutación y manejo de elitismo, brindando flexibilidad en la configuración de los experimentos.
Para instalar la librería desde PyPI (entorno de pruebas), utiliza el siguiente comando:
!pip install -i https://test.pypi.org/simple/ NathSan==0.2
Para comenzar a usar la librería, importa el paquete y crea una instancia de AlgoritmoGenetico
:
import NathSan
from NathSan import AlgoritmoGenetico
algoritmo = AlgoritmoGenetico(tamano_poblacion=100, generaciones=50, valor_min=-10, valor_max=10,
tasa_cruce=0.7, tasa_mutacion=0.01, tamano_elitismo=10)
mejor_individuo = algoritmo.ejecutar_algoritmo(metodo="ranking") # Métodos: "elitismo", "simple", "ruleta", "ranking"
Constructor de la clase AlgoritmoGenetico
. Inicializa los parámetros necesarios para la ejecución del algoritmo.
Ejecuta el proceso completo del algoritmo genético.
metodo
(str). Método de selección a usar: "elitismo", "simple", "ruleta" o "ranking".Implementa la selección por ruleta, donde los individuos se seleccionan en función de su valor de fitness relativo.
Funcionamiento: Este método asigna a cada individuo una probabilidad de ser seleccionado proporcional a su valor de fitness. La "ruleta" se simula mediante la suma acumulativa de estas probabilidades y la selección se hace eligiendo un valor aleatorio en el rango total. Este enfoque permite que los individuos con mejor fitness tengan una mayor probabilidad de ser seleccionados, pero sin excluir a los de menor rendimiento por completo. Esto fomenta la diversidad y permite que los algoritmos exploren más el espacio de soluciones.
Selecciona los individuos en base a un ranking, asignando más posibilidades a los mejores clasificados.
Funcionamiento: Los individuos se ordenan de acuerdo con su fitness y se les asigna un rango en lugar de una probabilidad directa basada en su valor de fitness. La probabilidad de selección depende de su posición en el ranking. Este método es útil para evitar el dominio excesivo de individuos con fitness muy alto, promoviendo una mayor diversidad genética y una evolución más equilibrada en la población.
Realiza un cruce aritmético entre dos individuos, combinando sus genes de manera ponderada.
Funcionamiento: El cruce aritmético genera un descendiente tomando una combinación lineal de los genes de los padres. Por ejemplo, si se tienen dos padres A
y B
, el descendiente se calcula como Hijo = α * A + (1 - α) * B
, donde α
es un coeficiente ponderado que varía entre 0 y 1. Esta técnica permite crear nuevas soluciones que heredan características de ambos padres y mantiene la continuidad de los valores de los genes.
Aplica mutación a un individuo, modificando un gen al azar dentro de los límites establecidos.
Funcionamiento: La mutación introduce variabilidad en la población al alterar un gen de un individuo de forma aleatoria. Esto se hace eligiendo un gen al azar y cambiando su valor por otro dentro de los límites permitidos (valor_min
y valor_max
). La mutación es esencial para evitar la convergencia prematura del algoritmo y explorar nuevas áreas del espacio de búsqueda.
El algoritmo genético sigue los siguientes pasos: