# 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.
```python
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
```
2. 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
```
3. 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](https://github.com/adriana1304)), titular del proyecto que supervisó y evaluó el desarrollo de la librería pyristic.
* El apoyo del Programa UNAM-DGAPA-PAPIME PE102320.
Raw data
{
"_id": null,
"home_page": "https://github.com/JAOP1/",
"name": "pyristic",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "Optimization,Metaheuristic,Python",
"author": "Jes\u00fas Armando Ort\u00edz Pe\u00f1afiel",
"author_email": "armandopenafiel12@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/70/0f/a146e3b529b77ab5c2970999d8c4039c5b6584e70a627e5ae87c55ca0a28/pyristic-1.4.1.tar.gz",
"platform": null,
"description": "# Pyristic\nLibrer\u00eda de *Python* con metaheur\u00edsticas para resolver problemas de optimizaci\u00f3n mono-objetivo con o sin restricciones. El objetivo de esta librer\u00eda es facilitar la resoluci\u00f3n de problemas de optimizaci\u00f3n utilizando metaheur\u00edsticas. *Pyristic* se divide como sigue:\n```\n\ud83d\uddc0 Pyristic\n\u2502 \n\u2514\u2500\u2500\u2500 \ud83d\uddc0 heuristic\n\u2502 \u2502 EvolutionStrategy_search \n\u2502 \u2502 EvolutiveProgramming_search\n\u2502 \u2502 GeneticAlgorithm_search\n\u2502 \u2502 SimulatedAnnealing_search\n\u2502 \u2502 Tabu_search\n\u2502 \n\u2514\u2500\u2500\u2500 \ud83d\uddc0 utils\n \u2502 helpers\n \u2502 test_function\n \u2502\n \u2514\u2500\u2500\u2500 \ud83d\uddc0 operators\n \u2502 \u2502 crossover\n \u2502 \u2502 mutation\n \u2502 \u2502 selection \n```\n\n\n## Instalaci\u00f3n\nLa instalaci\u00f3n de la librer\u00eda y dependencias se realiza a trav\u00e9s del manejador de paquetes *pip*:\n```\npip install pyristic\n```\n\n## Ejemplo\n\nUso de la librer\u00eda *Pyristic* para resolver la funci\u00f3n de Beale con la metaheur\u00edstica de Estrategias Evolutivas.\n```python\nfrom pyristic.heuristic.EvolutionStrategy_search import EvolutionStrategy\nfrom pyristic.utils.test_function import beale_\n\"\"\"\nInstancia de la clase EvolutionStrategy: \n- Funci\u00f3n objetivo (recibe la funci\n- Lista de restricciones\n- L\u00edmite inferior y superior de las variables de decisi\u00f3n\n- N\u00famero de variables de decisi\u00f3n\n\"\"\"\nBealeOptimizer = EvolutionStrategy(**beale_)\n\n\"\"\"\nEjecuci\u00f3n de la metaheur\u00edstica con los siguientes par\u00e1metros:\n- N\u00famero de iteraciones\n- Tama\u00f1o de la poblaci\u00f3n a cada iteraci\u00f3n\n- Tama\u00f1o de la poblaci\u00f3n de hijos\n- Mostrar la iteraci\u00f3n en la que se encuentra\n\"\"\"\nBealeOptimizer.optimize(300,80,160,verbose=True)\n\n#Resultados obtenidos por la ejecuci\u00f3n del m\u00e9todo optimize.\nprint(BealeOptimizer)\n```\n\n\n## Contribuci\u00f3n\nLos usuarios interesados en participar deben seguir los siguientes pasos:\n1. Clonar el proyecto.\n```\ngit clone https://github.com/JAOP1/pyristic.git\n```\n2. Crear branch en relaci\u00f3n al tipo de acci\u00f3n a realizar (a\u00f1adir metaheur\u00edstica, crear utilidad o resolver errores):\n * Solucionar error, *fix-archivo-funcion*.\n ```\n git checkout -b fix-crossover-n_point_crossover\n ```\n * A\u00f1adir metaheur\u00edstica, *attach-metaheuristic-nombreMetaheuristica*. \n ```\n git checkout -b attach-metaheuristic-fireflyAlgorithm\n ```\n * Crear utilidad, *attach-utility-nombreUtilidad*.\n ```\n git checkout -b attach-utility-binaryCrossover\n ```\n3. Realizar commit con un mensaje explicando lo realizado. Por ejemplo:\n```\ngit add pyristic/utils/operators/crossover.py\ngit commit -m \"Operador de cruza para problemas discretos.\"\n```\n\n**Nota:** las metaheur\u00edsticas anexadas deben ser clases que mantienen los mismos par\u00e1metros en el m\u00e9todo \\_\\_init\\_\\_ que son:\n* function -> Funci\u00f3n objetivo (funci\u00f3n de python).\n* decision_variables -> N\u00famero de variables de decisi\u00f3n (valor entero).\n* constraints -> Restricciones, arreglo con funciones de python que retornan un valor booleano.\n* bounds -> Lista con los l\u00edmites de las variables de decisi\u00f3n.\n Adem\u00e1s, debe tener el m\u00e9todo *optimize* (con los par\u00e1metros de la respectiva metaheur\u00edstica).\n \n### Agradecimientos\n* Dra. Adriana Menchaca M\u00e9ndez (usuario github: [adriana1304](https://github.com/adriana1304)), titular del proyecto que supervis\u00f3 y evalu\u00f3 el desarrollo de la librer\u00eda pyristic.\n* El apoyo del Programa UNAM-DGAPA-PAPIME PE102320.\n\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Set of metaheuristic for solve optimization problems.",
"version": "1.4.1",
"split_keywords": [
"optimization",
"metaheuristic",
"python"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "700fa146e3b529b77ab5c2970999d8c4039c5b6584e70a627e5ae87c55ca0a28",
"md5": "e4d333071b78cd5a4805c96fc03f6bc9",
"sha256": "3750aa3d25b169cfa76f0558207baec060ba724b955e82db5cc2fb52943b0f52"
},
"downloads": -1,
"filename": "pyristic-1.4.1.tar.gz",
"has_sig": false,
"md5_digest": "e4d333071b78cd5a4805c96fc03f6bc9",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 22147,
"upload_time": "2023-04-16T01:02:36",
"upload_time_iso_8601": "2023-04-16T01:02:36.911861Z",
"url": "https://files.pythonhosted.org/packages/70/0f/a146e3b529b77ab5c2970999d8c4039c5b6584e70a627e5ae87c55ca0a28/pyristic-1.4.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-04-16 01:02:36",
"github": false,
"gitlab": false,
"bitbucket": false,
"lcname": "pyristic"
}