<p align="center"><img src=".github/img/logo.png" alt="ENOPPY" title="ENOPPY"/></p>
---
[![GitHub release](https://img.shields.io/badge/release-0.1.1-yellow.svg)](https://github.com/thieu1995/enoppy/releases)
[![Wheel](https://img.shields.io/pypi/wheel/gensim.svg)](https://pypi.python.org/pypi/enoppy)
[![PyPI version](https://badge.fury.io/py/enoppy.svg)](https://badge.fury.io/py/enoppy)
![PyPI - Python Version](https://img.shields.io/pypi/pyversions/enoppy.svg)
![PyPI - Status](https://img.shields.io/pypi/status/enoppy.svg)
![PyPI - Downloads](https://img.shields.io/pypi/dm/enoppy.svg)
[![Downloads](https://pepy.tech/badge/enoppy)](https://pepy.tech/project/enoppy)
[![Tests & Publishes to PyPI](https://github.com/thieu1995/enoppy/actions/workflows/publish-package.yaml/badge.svg)](https://github.com/thieu1995/enoppy/actions/workflows/publish-package.yaml)
![GitHub Release Date](https://img.shields.io/github/release-date/thieu1995/enoppy.svg)
[![Documentation Status](https://readthedocs.org/projects/enoppy/badge/?version=latest)](https://enoppy.readthedocs.io/en/latest/?badge=latest)
[![Chat](https://img.shields.io/badge/Chat-on%20Telegram-blue)](https://t.me/+fRVCJGuGJg1mNDg1)
[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/thieu1995/enoppy.svg)](http://isitmaintained.com/project/thieu1995/enoppy "Average time to resolve an issue")
[![Percentage of issues still open](http://isitmaintained.com/badge/open/thieu1995/enoppy.svg)](http://isitmaintained.com/project/thieu1995/enoppy "Percentage of issues still open")
![GitHub contributors](https://img.shields.io/github/contributors/thieu1995/enoppy.svg)
[![GitTutorial](https://img.shields.io/badge/PR-Welcome-%23FF8300.svg?)](https://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7953206.svg)](https://doi.org/10.5281/zenodo.7953206)
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
ENOPPY (ENgineering Optimization Problems in PYthon) is the largest python library for real-world engineering
optimization problems. Contains all real-world engineering problems from CEC competitions and research papers.
* **Free software:** GNU General Public License (GPL) V3 license
* **Total problems**: > 50 problems
* **Documentation:** https://enoppy.readthedocs.io/en/latest/
* **Python versions:** 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x
* **Dependencies:** numpy, scipy, matplotlib
# Installation
### Install with pip
Install the [current PyPI release](https://pypi.python.org/pypi/enoppy):
```sh
$ pip install enoppy==0.1.0
```
### Install directly from source code
```sh
$ git clone https://github.com/thieu1995/enoppy.git
$ cd enoppy
$ python setup.py install
```
### Lib's structure
```code
docs
examples
enoppy
paper_based
pdo_2022.py
rwco_2020.py
problem_based
chemical.py
mechanism.py
utils
validator.py
visualize.py
__init__.py
engineer.py
README.md
setup.py
```
# Usage
After installation, you can import ENOPPY as any other Python module:
```sh
$ python
>>> import enoppy
>>> enoppy.__version__
```
Let's go through some examples.
### Examples
How to get the problem and use it
```python
from enoppy.paper_based.moeosma_2023 import SpeedReducerProblem
# SRP = SpeedReducerProblem
# SP = SpringProblem
# HTBP = HydrostaticThrustBearingProblem
# VPP = VibratingPlatformProblem
# CSP = CarSideImpactProblem
# WRMP = WaterResourceManagementProblem
# BCP = BulkCarriersProblem
# MPBPP = MultiProductBatchPlantProblem
srp_prob = SpeedReducerProblem()
print("Lower bound for this problem: ", srp_prob.lb)
print("Upper bound for this problem: ", srp_prob.ub)
x0 = srp_prob.create_solution()
print("Get the objective values of x0: ", srp_prob.get_objs(x0))
print("Get the constraint values of x0: ", srp_prob.get_cons(x0))
print("Evaluate with default penalty function: ", srp_prob.evaluate(x0))
```
Design my own penalty function:
```python
import numpy as np
from enoppy.paper_based.moeosma_2023 import HTBP
# HTBP = HydrostaticThrustBearingProblem
def penalty_func(list_objectives, list_constraints):
list_constraints[list_constraints < 0] = 0
return np.sum(list_objectives) + 1e5 * np.sum(list_constraints**2)
htbp_prob = HTBP(f_penalty=penalty_func)
print("Lower bound for this problem: ", htbp_prob.lb)
print("Upper bound for this problem: ", htbp_prob.ub)
x0 = htbp_prob.create_solution()
print("Get the objective values of x0: ", htbp_prob.get_objs(x0))
print("Get the constraint values of x0: ", htbp_prob.get_cons(x0))
print("Evaluate with default penalty function: ", htbp_prob.evaluate(x0))
```
For more usage examples please look at [examples](/examples) folder.
# Get helps (questions, problems)
* Official source code repo: https://github.com/thieu1995/enoppy
* Official document: https://enoppy.readthedocs.io/
* Download releases: https://pypi.org/project/enoppy/
* Issue tracker: https://github.com/thieu1995/enoppy/issues
* Notable changes log: https://github.com/thieu1995/enoppy/blob/master/ChangeLog.md
* Examples with different meapy version: https://github.com/thieu1995/enoppy/blob/master/examples.md
* This project also related to our another projects which are "meta-heuristics", "neural-network", and "optimization"
check it here
* https://github.com/thieu1995/mealpy
* https://github.com/thieu1995/metaheuristics
* https://github.com/thieu1995/opfunu
* https://github.com/thieu1995/permetrics
* https://github.com/aiir-team
**Want to have an instant assistant? Join our telegram community at [link](https://t.me/+fRVCJGuGJg1mNDg1)**
We share lots of information, questions, and answers there. You will get more support and knowledge there.
## Cite Us
If you are using enoppy in your project, we would appreciate citations:
```code
@software{nguyen_van_thieu_2023_7953207,
author = {Nguyen Van Thieu},
title = {ENOPPY: A Python Library for Engineering Optimization Problems},
month = may,
year = 2023,
publisher = {Zenodo},
doi = {10.5281/zenodo.7953206},
url = {https://github.com/thieu1995/enoppy}
}
```
## References
#### paper_based
* **ihaoavoa_2022**: Xiao, Y., Guo, Y., Cui, H., Wang, Y., Li, J., & Zhang, Y. (2022). IHAOAVOA: An improved hybrid aquila optimizer and African vultures optimization algorithm for global optimization problems. Mathematical Biosciences and Engineering, 19(11), 10963-11017.
* **moeosma_2023**: Luo, Q., Yin, S., Zhou, G., Meng, W., Zhao, Y., & Zhou, Y. (2023). Multi-objective equilibrium optimizer slime mould algorithm and its application in solving engineering problems. Structural and Multidisciplinary Optimization, 66(5), 114.
* **pdo_2022**: Ezugwu, A. E., Agushaka, J. O., Abualigah, L., Mirjalili, S., & Gandomi, A. H. (2022). Prairie dog optimization algorithm. Neural Computing and Applications, 34(22), 20017-20065.
* **rwco_2020**: Kumar, A., Wu, G., Ali, M. Z., Mallipeddi, R., Suganthan, P. N., & Das, S. (2020). A test-suite of non-convex constrained optimization problems from the real-world and some baseline results. Swarm and Evolutionary Computation, 56, 100693.
Raw data
{
"_id": null,
"home_page": "https://github.com/thieu1995/enoppy",
"name": "enoppy",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": "",
"keywords": "engineering optimization problems,mathematical optimization,Tension/compression spring design problem,Welded beam design problem,Industrial chemical process problems,Process design and synthesis problems,Mechanical design problems,Power system problems,Power electronics: synchronous optimal pulse-width modulation,Livestock feed ration optimization,Rolling element bearing design problem,multi-objectives optimization problems,Constrained optimization,Stochastic optimization,Global optimization,Convergence analysis,Search space exploration,Local search,Computational intelligence,Robust optimization,Benchmark functions,Performance analysis,Self-adaptation,Intelligent optimization,Simulations",
"author": "Thieu",
"author_email": "nguyenthieu2102@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/3d/1c/b7ab7867b3c019260d6da05c99d94e7bb065745ad5017786b304fff2a16f/enoppy-0.1.1.tar.gz",
"platform": null,
"description": "\n<p align=\"center\"><img src=\".github/img/logo.png\" alt=\"ENOPPY\" title=\"ENOPPY\"/></p>\n\n---\n\n\n[![GitHub release](https://img.shields.io/badge/release-0.1.1-yellow.svg)](https://github.com/thieu1995/enoppy/releases)\n[![Wheel](https://img.shields.io/pypi/wheel/gensim.svg)](https://pypi.python.org/pypi/enoppy) \n[![PyPI version](https://badge.fury.io/py/enoppy.svg)](https://badge.fury.io/py/enoppy)\n![PyPI - Python Version](https://img.shields.io/pypi/pyversions/enoppy.svg)\n![PyPI - Status](https://img.shields.io/pypi/status/enoppy.svg)\n![PyPI - Downloads](https://img.shields.io/pypi/dm/enoppy.svg)\n[![Downloads](https://pepy.tech/badge/enoppy)](https://pepy.tech/project/enoppy)\n[![Tests & Publishes to PyPI](https://github.com/thieu1995/enoppy/actions/workflows/publish-package.yaml/badge.svg)](https://github.com/thieu1995/enoppy/actions/workflows/publish-package.yaml)\n![GitHub Release Date](https://img.shields.io/github/release-date/thieu1995/enoppy.svg)\n[![Documentation Status](https://readthedocs.org/projects/enoppy/badge/?version=latest)](https://enoppy.readthedocs.io/en/latest/?badge=latest)\n[![Chat](https://img.shields.io/badge/Chat-on%20Telegram-blue)](https://t.me/+fRVCJGuGJg1mNDg1)\n[![Average time to resolve an issue](http://isitmaintained.com/badge/resolution/thieu1995/enoppy.svg)](http://isitmaintained.com/project/thieu1995/enoppy \"Average time to resolve an issue\")\n[![Percentage of issues still open](http://isitmaintained.com/badge/open/thieu1995/enoppy.svg)](http://isitmaintained.com/project/thieu1995/enoppy \"Percentage of issues still open\")\n![GitHub contributors](https://img.shields.io/github/contributors/thieu1995/enoppy.svg)\n[![GitTutorial](https://img.shields.io/badge/PR-Welcome-%23FF8300.svg?)](https://git-scm.com/book/en/v2/GitHub-Contributing-to-a-Project)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.7953206.svg)](https://doi.org/10.5281/zenodo.7953206)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)\n\n\nENOPPY (ENgineering Optimization Problems in PYthon) is the largest python library for real-world engineering \noptimization problems. Contains all real-world engineering problems from CEC competitions and research papers.\n\n* **Free software:** GNU General Public License (GPL) V3 license\n* **Total problems**: > 50 problems\n* **Documentation:** https://enoppy.readthedocs.io/en/latest/\n* **Python versions:** 3.7.x, 3.8.x, 3.9.x, 3.10.x, 3.11.x\n* **Dependencies:** numpy, scipy, matplotlib\n\n\n\n\n# Installation\n\n### Install with pip\n\nInstall the [current PyPI release](https://pypi.python.org/pypi/enoppy):\n```sh \n$ pip install enoppy==0.1.0\n```\n\n### Install directly from source code\n```sh \n$ git clone https://github.com/thieu1995/enoppy.git\n$ cd enoppy\n$ python setup.py install\n```\n\n\n### Lib's structure\n\n```code \ndocs\nexamples\nenoppy\n paper_based\n pdo_2022.py\n rwco_2020.py\n problem_based\n chemical.py\n mechanism.py\n utils\n validator.py\n visualize.py\n __init__.py\n engineer.py\nREADME.md\nsetup.py\n```\n\n\n# Usage\n\nAfter installation, you can import ENOPPY as any other Python module:\n\n```sh\n$ python\n>>> import enoppy\n>>> enoppy.__version__\n```\n\nLet's go through some examples.\n\n\n### Examples\n\nHow to get the problem and use it\n\n```python\nfrom enoppy.paper_based.moeosma_2023 import SpeedReducerProblem\n# SRP = SpeedReducerProblem\n# SP = SpringProblem\n# HTBP = HydrostaticThrustBearingProblem\n# VPP = VibratingPlatformProblem\n# CSP = CarSideImpactProblem\n# WRMP = WaterResourceManagementProblem\n# BCP = BulkCarriersProblem\n# MPBPP = MultiProductBatchPlantProblem\n\nsrp_prob = SpeedReducerProblem()\nprint(\"Lower bound for this problem: \", srp_prob.lb)\nprint(\"Upper bound for this problem: \", srp_prob.ub)\nx0 = srp_prob.create_solution()\nprint(\"Get the objective values of x0: \", srp_prob.get_objs(x0))\nprint(\"Get the constraint values of x0: \", srp_prob.get_cons(x0))\nprint(\"Evaluate with default penalty function: \", srp_prob.evaluate(x0))\n\n```\n\nDesign my own penalty function:\n\n```python\nimport numpy as np\nfrom enoppy.paper_based.moeosma_2023 import HTBP\n# HTBP = HydrostaticThrustBearingProblem\n\ndef penalty_func(list_objectives, list_constraints):\n list_constraints[list_constraints < 0] = 0\n return np.sum(list_objectives) + 1e5 * np.sum(list_constraints**2) \n\nhtbp_prob = HTBP(f_penalty=penalty_func)\nprint(\"Lower bound for this problem: \", htbp_prob.lb)\nprint(\"Upper bound for this problem: \", htbp_prob.ub)\nx0 = htbp_prob.create_solution()\nprint(\"Get the objective values of x0: \", htbp_prob.get_objs(x0))\nprint(\"Get the constraint values of x0: \", htbp_prob.get_cons(x0))\nprint(\"Evaluate with default penalty function: \", htbp_prob.evaluate(x0))\n```\n\nFor more usage examples please look at [examples](/examples) folder.\n\n\n\n# Get helps (questions, problems)\n\n* Official source code repo: https://github.com/thieu1995/enoppy\n* Official document: https://enoppy.readthedocs.io/\n* Download releases: https://pypi.org/project/enoppy/\n* Issue tracker: https://github.com/thieu1995/enoppy/issues\n* Notable changes log: https://github.com/thieu1995/enoppy/blob/master/ChangeLog.md\n* Examples with different meapy version: https://github.com/thieu1995/enoppy/blob/master/examples.md\n\n* This project also related to our another projects which are \"meta-heuristics\", \"neural-network\", and \"optimization\" \n check it here\n * https://github.com/thieu1995/mealpy\n * https://github.com/thieu1995/metaheuristics\n * https://github.com/thieu1995/opfunu\n * https://github.com/thieu1995/permetrics\n * https://github.com/aiir-team\n\n\n**Want to have an instant assistant? Join our telegram community at [link](https://t.me/+fRVCJGuGJg1mNDg1)**\nWe share lots of information, questions, and answers there. You will get more support and knowledge there.\n\n\n## Cite Us\n\nIf you are using enoppy in your project, we would appreciate citations:\n\n```code \n@software{nguyen_van_thieu_2023_7953207,\n author = {Nguyen Van Thieu},\n title = {ENOPPY: A Python Library for Engineering Optimization Problems},\n month = may,\n year = 2023,\n publisher = {Zenodo},\n doi = {10.5281/zenodo.7953206},\n url = {https://github.com/thieu1995/enoppy}\n}\n```\n\n\n## References \n\n\n#### paper_based\n\n\n* **ihaoavoa_2022**: Xiao, Y., Guo, Y., Cui, H., Wang, Y., Li, J., & Zhang, Y. (2022). IHAOAVOA: An improved hybrid aquila optimizer and African vultures optimization algorithm for global optimization problems. Mathematical Biosciences and Engineering, 19(11), 10963-11017.\n\n* **moeosma_2023**: Luo, Q., Yin, S., Zhou, G., Meng, W., Zhao, Y., & Zhou, Y. (2023). Multi-objective equilibrium optimizer slime mould algorithm and its application in solving engineering problems. Structural and Multidisciplinary Optimization, 66(5), 114.\n\n* **pdo_2022**: Ezugwu, A. E., Agushaka, J. O., Abualigah, L., Mirjalili, S., & Gandomi, A. H. (2022). Prairie dog optimization algorithm. Neural Computing and Applications, 34(22), 20017-20065.\n\n* **rwco_2020**: Kumar, A., Wu, G., Ali, M. Z., Mallipeddi, R., Suganthan, P. N., & Das, S. (2020). A test-suite of non-convex constrained optimization problems from the real-world and some baseline results. Swarm and Evolutionary Computation, 56, 100693.\n\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "ENOPPY: A Python Library for Engineering Optimization Problems",
"version": "0.1.1",
"project_urls": {
"Bug Tracker": "https://github.com/thieu1995/enoppy/issues",
"Change Log": "https://github.com/thieu1995/enoppy/blob/master/ChangeLog.md",
"Documentation": "https://enoppy.readthedocs.io/",
"Forum": "https://t.me/+fRVCJGuGJg1mNDg1",
"Homepage": "https://github.com/thieu1995/enoppy",
"Source Code": "https://github.com/thieu1995/enoppy"
},
"split_keywords": [
"engineering optimization problems",
"mathematical optimization",
"tension/compression spring design problem",
"welded beam design problem",
"industrial chemical process problems",
"process design and synthesis problems",
"mechanical design problems",
"power system problems",
"power electronics: synchronous optimal pulse-width modulation",
"livestock feed ration optimization",
"rolling element bearing design problem",
"multi-objectives optimization problems",
"constrained optimization",
"stochastic optimization",
"global optimization",
"convergence analysis",
"search space exploration",
"local search",
"computational intelligence",
"robust optimization",
"benchmark functions",
"performance analysis",
"self-adaptation",
"intelligent optimization",
"simulations"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "c7bc2d5156377280df1b0178e52b3ae615b565949ec63705ba289bf2977f546f",
"md5": "6514c090fb94426bbdc74726e92972ba",
"sha256": "b3d66709bde98552f50d0944b63dd39fa025df7c1857c051b3d277854d7e9050"
},
"downloads": -1,
"filename": "enoppy-0.1.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "6514c090fb94426bbdc74726e92972ba",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 41821,
"upload_time": "2023-05-20T17:10:22",
"upload_time_iso_8601": "2023-05-20T17:10:22.864380Z",
"url": "https://files.pythonhosted.org/packages/c7/bc/2d5156377280df1b0178e52b3ae615b565949ec63705ba289bf2977f546f/enoppy-0.1.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "3d1cb7ab7867b3c019260d6da05c99d94e7bb065745ad5017786b304fff2a16f",
"md5": "c697bbd2f794b6e843f109f74fbdfb3f",
"sha256": "b72152755d5ae5032394bfdfbcff4b0926e4c21fce4ecd3454e25017a1cafbeb"
},
"downloads": -1,
"filename": "enoppy-0.1.1.tar.gz",
"has_sig": false,
"md5_digest": "c697bbd2f794b6e843f109f74fbdfb3f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 43257,
"upload_time": "2023-05-20T17:10:24",
"upload_time_iso_8601": "2023-05-20T17:10:24.541286Z",
"url": "https://files.pythonhosted.org/packages/3d/1c/b7ab7867b3c019260d6da05c99d94e7bb065745ad5017786b304fff2a16f/enoppy-0.1.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-05-20 17:10:24",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "thieu1995",
"github_project": "enoppy",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"requirements": [],
"lcname": "enoppy"
}