Librería avanzada de algoritmos genéticos adaptativos para problemas de optimización
Project description
🧬 Genetic Algorithm Library
Optimización evolutiva avanzada para problemas complejos
📋 Descripción General
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.
✨ Características Principales
-
🔄 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
🚀 Instalación
pip install genetic-algorithm-library
🏁 Guía Rápida
Optimización Simple
from 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'])
Optimización Multi-objetivo
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)"]
)
Modelo de Islas
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
)
🛠️ Uso Avanzado
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])
📊 Visualización de Resultados
La librería incluye herramientas para visualizar y analizar los resultados:
| Evolución del Fitness | Frente de Pareto Multi-objetivo |
🧪 Problemas Implementados
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
📖 Documentación
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
👥 Colaboradores
- Johan Rojas - Desarrollo principal y algoritmos avanzados
- Julian Lara - Diseño de API y optimización de rendimiento
📄 Licencia
Este proyecto está licenciado bajo la Licencia MIT - ver el archivo LICENSE para más detalles.
📚 Cómo Citar
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},
}
🔗 Enlaces Útiles
Desarrollado con ❤️ para la comunidad de investigación en computación evolutiva
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file genetic_algorithm_library-0.2.0.tar.gz.
File metadata
- Download URL: genetic_algorithm_library-0.2.0.tar.gz
- Upload date:
- Size: 32.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da103c86615bfd25e134c2b5c93a59b06c2734cc541c38ec035a1a201c319b98
|
|
| MD5 |
359246f3ed2638f360de319c8343a86a
|
|
| BLAKE2b-256 |
5783ec383e0341f6888b60af6ae03bb4aea1249babcee593f0bb6e40d6c2ae79
|
File details
Details for the file genetic_algorithm_library-0.2.0-py3-none-any.whl.
File metadata
- Download URL: genetic_algorithm_library-0.2.0-py3-none-any.whl
- Upload date:
- Size: 34.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.10.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9cbca0a37617d02d273ed36e07c4da41cf7a45290f92a4346bdac02cf7de99fe
|
|
| MD5 |
d055f3bb056cc7124e7f9bfe51bc1a24
|
|
| BLAKE2b-256 |
80b93dc8430e09f92748cc98a231b23df730004bb3dfdb49a7b1b815c9950d4d
|