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 details)

Uploaded Source

File details

Details for the file pyristic-1.4.1.tar.gz.

File metadata

  • Download URL: pyristic-1.4.1.tar.gz
  • Upload date:
  • Size: 22.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.4

File hashes

Hashes for pyristic-1.4.1.tar.gz
Algorithm Hash digest
SHA256 3750aa3d25b169cfa76f0558207baec060ba724b955e82db5cc2fb52943b0f52
MD5 e4d333071b78cd5a4805c96fc03f6bc9
BLAKE2b-256 700fa146e3b529b77ab5c2970999d8c4039c5b6584e70a627e5ae87c55ca0a28

See more details on using hashes here.

Supported by

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