Genetic Algorithm Library es un potente framework de computación evolutiva diseñado para resolver problemas de optimización complejos. Esta librería implementa algoritmos genéticos avanzados con capacidades adaptativas, proporcionando herramientas flexibles y eficientes para investigadores y desarrolladores.
La librería destaca por su amplia variedad de operadores genéticos, soporte para optimización multi-objetivo, y mecanismos de adaptación dinámica que mejoran la convergencia y diversidad poblacional.
-
🔄 Múltiples codificaciones genéticas:
- Representaciones reales, binarias, enteras y de permutación
- Adaptación automática al tipo de problema
-
🔧 Operadores genéticos avanzados:
- Selección: Torneo, Ruleta, Ranking, SUS (Muestreo Universal Estocástico), Boltzmann
- Cruce: Uniforme, Un punto, Dos puntos, Blend, SBX, PMX (para permutaciones)
- Mutación: Gaussiana, Uniforme, Reset, Adaptativa, Swap e Inversión (para permutaciones)
-
📊 Algoritmos especializados:
- Algoritmo genético estándar con adaptación dinámica
- Optimización multi-objetivo (basada en NSGA-II)
- Modelo de islas con migración controlada
- Capacidades paralelas para problemas computacionalmente intensivos
-
📈 Herramientas analíticas integradas:
- Visualización avanzada de evolución y convergencia
- Análisis de frentes de Pareto para optimización multi-objetivo
- Monitoreo de diversidad poblacional
- Seguimiento de rendimiento y eficiencia
-
⚙️ Alta personalización:
- Integración sencilla de funciones objetivo personalizadas
- Operadores genéticos personalizables
- Parámetros adaptables durante la ejecución
pip install genetic-algorithm-libraryfrom genetic_algorithm import run_genetic_algorithm, plot_evolution
import numpy as np
# Definir función objetivo (maximizar)
def objective_function(x):
return -(x[0]**2 + x[1]**2) # Minimizar la suma de cuadrados
# Ejecutar algoritmo genético
result = run_genetic_algorithm(
objective_function=objective_function,
gene_length=2, # 2 parámetros a optimizar
bounds=(-10, 10), # Límites de búsqueda
pop_size=100, # Tamaño de población
num_generations=50, # Número de generaciones
selection_type="tournament", # Método de selección
adaptive=True, # Mutación adaptativa
verbose=True # Mostrar progreso
)
# Mostrar resultados
print(f"Mejor solución: {result['best_individual']}")
print(f"Mejor fitness: {result['best_fitness']}")
# Visualizar evolución
plot_evolution(result['history'])from genetic_algorithm import run_multi_objective_ga, plot_pareto_front
# Definir funciones objetivo
def objective1(x):
return -sum(x**2) # Minimizar (convertido a maximizar con negativo)
def objective2(x):
return -sum((x-2)**2) # Minimizar distancia a (2,2,...,2)
# Ejecutar algoritmo genético multi-objetivo
result = run_multi_objective_ga(
objective_functions=[objective1, objective2],
gene_length=2,
bounds=(-5, 5),
pop_size=200,
num_generations=100
)
# Visualizar frente de Pareto
plot_pareto_front(
result['pareto_fitness'],
objective_names=["Suma de cuadrados", "Distancia a (2,2)"]
)from genetic_algorithm import run_island_model_ga
# Ejecutar algoritmo con modelo de islas
result = run_island_model_ga(
objective_function=my_objective,
gene_length=5,
bounds=(-10, 10),
num_islands=4, # Número de islas
pop_size_per_island=50, # Población por isla
num_generations=100,
migration_interval=10, # Migración cada 10 generaciones
migration_rate=0.1 # 10% de individuos migran
)La biblioteca permite un control completo de todos los aspectos del algoritmo genético:
import numpy as np
from genetic_algorithm import (
create_population,
selection,
crossover,
mutation,
adaptive_mutation,
fitness_function
)
# Crear población inicial con codificación específica
population = create_population(
size=50,
gene_length=5,
min_val=-5,
max_val=5,
encoding="real" # Otras: "binary", "integer", "permutation"
)
# Función objetivo personalizada
def my_objective(x):
return np.sin(x[0]) + np.cos(x[1]) + x[2]**2 - x[3] + x[4]
# Iteración manual del algoritmo
for generation in range(100):
# Evaluar fitness
fitness_values = np.array([fitness_function(ind, my_objective) for ind in population])
# Seleccionar padres
parents = selection(
population,
fitness_values,
num_parents=25,
selection_type="rank" # Otras: "tournament", "roulette", "sus", "boltzmann"
)
# Crear descendencia mediante cruce
offspring = crossover(
parents,
offspring_size=(25, 5),
crossover_type="blend" # Otras: "uniform", "single_point", "two_point", "sbx"
)
# Aplicar mutación adaptativa basada en fitness
offspring = adaptive_mutation(
offspring,
fitness_values[:25], # Fitness de los padres
np.max(fitness_values),
np.mean(fitness_values),
min_val=-5,
max_val=5,
base_rate=0.05
)
# Actualizar población con elitismo
best_idx = np.argmax(fitness_values)
population = np.vstack([population[best_idx:best_idx+1], parents[:-1], offspring])La librería incluye herramientas para visualizar y analizar los resultados:
La librería incluye implementaciones para diversos problemas:
-
Optimización de funciones continuas:
- Sphere, Rastrigin, Schwefel, Ackley, Rosenbrock, Griewank y más
- Fácilmente extensible a funciones personalizadas
-
Problemas de permutación:
- Problema del Viajante (TSP)
- Ordenamiento y secuenciación
-
Problemas discretos:
- Mochila (Knapsack)
- Asignación de tareas
- Max-Cut
-
Optimización multi-objetivo:
- Problemas con objetivos en conflicto
- Visualización de frentes de Pareto
Para la documentación completa, visite nuestra Wiki en GitHub.
También puede consultar los ejemplos incluidos:
examples/basic_optimization.py: Optimización básicaexamples/tsp_example.py: Problema del Viajanteexamples/multi_objective.py: Optimización multi-objetivo
- Johan Rojas - Desarrollo principal y algoritmos avanzados
- Julian Lara - Diseño de API y optimización de rendimiento
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
Si utiliza esta biblioteca en su investigación, por favor cite:
@software{genetic_algorithm_library,
author = {Lara, Julian and Rojas, Johan},
title = {Genetic Algorithm Library},
url = {https://github.com/Zaxazgames1/genetic-algorithm-library},
version = {0.2.0},
year = {2025},
}
Desarrollado con ❤️ para la comunidad de investigación en computación evolutiva


