Skip to main content

Set of metaheuristic for solve optimization problems.

Project description

Pyristic

Librería de Python con metaheurísticas para resolver problemas de optimización mono-objetivo con o sin restricciones. El objetivo de esta librería es facilitar la resolución de problemas de optimización utilizando metaheurísticas. Pyristic se divide como sigue:

🗀 Pyristic
│   
└─── 🗀 heuristic
│   │   EvolutionStrategy_search 
│   │   EvolutiveProgramming_search
│   │   GeneticAlgorithm_search
│   │   SimulatedAnnealing_search
│   │   Tabu_search
│  
└─── 🗀 utils
     │   helpers
     │   test_function
     │
     └─── 🗀 operators
     │   │   crossover
     │   │   mutation
     │   │   selection 

Instalación

La instalación de la librería y dependencias se realiza a través del manejador de paquetes pip:

pip install pyristic

Ejemplo

Uso de la librería Pyristic para resolver la función de Beale con la metaheurística de Estrategias Evolutivas.

from pyristic.heuristic.EvolutionStrategy_search import EvolutionStrategy
from pyristic.utils.test_function import beale_
"""
Instancia de la clase EvolutionStrategy: 
- Función objetivo (recibe la funci
- Lista de restricciones
- Límite inferior y superior de las variables de decisión
- Número de variables de decisión
"""
BealeOptimizer = EvolutionStrategy(**beale_)

"""
Ejecución de la metaheurística con los siguientes parámetros:
- Número de iteraciones
- Tamaño de la población a cada iteración
- Tamaño de la población de hijos
- Mostrar la iteración en la que se encuentra
"""
BealeOptimizer.optimize(300,80,160,verbose=True)

#Resultados obtenidos por la ejecución del método optimize.
print(BealeOptimizer)

Contribución

Los usuarios interesados en participar deben seguir los siguientes pasos:

  1. Clonar el proyecto.
git clone https://github.com/JAOP1/pyristic.git
  1. Crear branch en relación al tipo de acción a realizar (añadir metaheurística, crear utilidad o resolver errores):
    • Solucionar error, fix-archivo-funcion.
    git checkout -b fix-crossover-n_point_crossover
    
    • Añadir metaheurística, attach-metaheuristic-nombreMetaheuristica.
    git checkout -b attach-metaheuristic-fireflyAlgorithm
    
    • Crear utilidad, attach-utility-nombreUtilidad.
    git checkout -b attach-utility-binaryCrossover
    
  2. Realizar commit con un mensaje explicando lo realizado. Por ejemplo:
git add pyristic/utils/operators/crossover.py
git commit -m "Operador de cruza para problemas discretos."

Nota: las metaheurísticas anexadas deben ser clases que mantienen los mismos parámetros en el método __init__ que son:

  • function -> Función objetivo (función de python).
  • decision_variables -> Número de variables de decisión (valor entero).
  • constraints -> Restricciones, arreglo con funciones de python que retornan un valor booleano.
  • bounds -> Lista con los límites de las variables de decisión. Además, debe tener el método optimize (con los parámetros de la respectiva metaheurística).

Agradecimientos

  • Dra. Adriana Menchaca Méndez (usuario github: adriana1304), titular del proyecto que supervisó y evaluó el desarrollo de la librería pyristic.
  • El apoyo del Programa UNAM-DGAPA-PAPIME PE102320.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyristic-1.4.1.tar.gz (22.1 kB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page