oopoa
Python implementation of the Object-Oriented Programming Optimization Algorithm (OOPOA). A CLI-based metaheuristic optimizer inspired by encapsulation and inheritance. Based on the 2024 paper by Hosny et al.
Science Score: 57.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 5 DOI reference(s) in README -
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.2%) to scientific vocabulary
Keywords
Repository
Python implementation of the Object-Oriented Programming Optimization Algorithm (OOPOA). A CLI-based metaheuristic optimizer inspired by encapsulation and inheritance. Based on the 2024 paper by Hosny et al.
Basic Info
Statistics
- Stars: 1
- Watchers: 1
- Forks: 1
- Open Issues: 5
- Releases: 1
Topics
Metadata Files
README.md
🧠 OOPOA CLI – Object-Oriented Programming Optimization Algorithm
OOPOA CLI is a research-grade command-line tool that fully implements the Object-Oriented Programming Optimization Algorithm (OOPOA) — a novel metaheuristic introduced in 2024.
Table of Conetent
- 🧠 OOPOA CLI – Object-Oriented Programming Optimization Algorithm
- Table of Conetent
- Functionalities Overview:
- 📖 Original Paper Reference
- 🚀 Features
- 📦 Installation
- 📁 Project Structure
- 🧪 Examples
- 🧠 Mathematical Basis
- 🧾 Citation & Credits
- 🛣 Roadmap
- 💬 Feedback & Contributions
- 📄 License
Functionalities Overview:
| | |
|:-------------------------:|:-------------------------:
|
Multi-Graph |
Custom Plot|
|
Custom Functions|
Default Functions |
|
Custom Population|
Custom Benchmark|
The original paper presented only high-level pseudocode and performance graphs. This CLI bridges that gap by offering:
- 📌 A complete implementation of the algorithm logic
- 🔬 Reproducible benchmarking across standard test functions
- 📊 Exportable logs and convergence plots
- 🧠 Clear math documentation and customizable settings
Ideal for students, researchers, and developers working in optimization and metaheuristics.
📖 Original Paper Reference
Hosny, K.M., Khalid, A.M., Said, W., Elmezain, M., & Mirjalili, S. (2024).
A novel metaheuristic based on object-oriented programming concepts for engineering optimization.
Alexandria Engineering Journal. DOI: 10.1016/j.aej.2024.04.060
🚀 Features
- 🔧 Run OOPOA on standard benchmark functions (Sphere, Ackley, Rastrigin, etc.)
- 📉 Plot convergence graphs and export them to
.png - 🧮 Log results per iteration in
.csvfor reproducible analysis - 🖋 Customizable: population size, mutation rate, bounds, and more
- 🧱 Modular codebase for easy extension (custom functions, batch runs, etc.)
📦 Installation
bash
git clone https://github.com/LA-10/oop-optimizer.git
cd oopoa-cli
pip install -e .
OR, to use the tool only:
bash
pip install oopoa
📁 Project Structure
bash
oopoa-cli/
├── cli/ # Command-line interface (Click)
├── core/ # Algorithm logic and solution objects
├── benchmark/ # Standard benchmark functions
├── plots/ # Plotting utilities
├── examples/ # CLI usage examples
├── results/ # Auto-generated fitness logs and plots
├── docs/ # Math notes, roadmap, and usage docs
└── tests/ # (planned) unit tests
🧪 Examples
bash
examples/run_sphere.sh
More CLI examples can be found in the examples/ folder.
🧠 Mathematical Basis
OOPOA simulates OOP principles during optimization:
| Status | Meaning | |-------------|----------------------------------------| | 0 (public) | Use individual’s own value | | 1 (protected) | Inherit value from another solution | | 2 (private) | Generate new random value |
See docs/math.md for full derivation and update rules.
🧾 Citation & Credits
This implementation is based on:
Hosny, K.M., Khalid, A.M., Said, W., Elmezain, M., & Mirjalili, S. (2024).
A novel metaheuristic based on object-oriented programming concepts for engineering optimization.
Alexandria Engineering Journal. DOI
Please cite the paper if this tool supports your work. This implementation was independently developed based on the pseudocode and descriptions in the paper.
🛣 Roadmap
Planned additions (see docs/roadmap.md):
- 📊 Plotting multiple runs
- 🧾 Config-based runs (
.json,.yaml) - 📈 Summary tables for performance across runs
- 🔁 Comparison with other metaheuristics
💬 Feedback & Contributions
If you've used this tool, found a bug, or want to improve it—open an issue or submit a pull request. Contributions welcome!
📄 License
Licensed under the MIT License. See LICENSE for details.
Owner
- Name: L
- Login: LA-10
- Kind: user
- Repositories: 1
- Profile: https://github.com/LA-10
Citation (CITATION.bib)
@article{HOSNY2024221,
title = {A novel metaheuristic based on object-oriented programming concepts for engineering optimization},
journal = {Alexandria Engineering Journal},
volume = {98},
pages = {221--248},
year = {2024},
issn = {1110-0168},
doi = {https://doi.org/10.1016/j.aej.2024.04.060},
url = {https://www.sciencedirect.com/science/article/pii/S1110016824004423},
author = {Khalid M. Hosny and Asmaa M. Khalid and Wael Said and Mahmoud Elmezain and Seyedali Mirjalili},
keywords = {Inheritance, Population, Convergence, Exploration, Optimization, Metaheuristics}
}
GitHub Events
Total
- Issues event: 2
- Issue comment event: 3
- Push event: 3
- Fork event: 2
Last Year
- Issues event: 2
- Issue comment event: 3
- Push event: 3
- Fork event: 2
Packages
- Total packages: 1
- Total downloads: unknown
- Total dependent packages: 0
- Total dependent repositories: 0
- Total versions: 1
- Total maintainers: 1
pypi.org: oopoa
OOPOA CLI Tool (Object-Oriented Programming Optimization Algorithm)
- Homepage: https://github.com/LA-10/oop-optimizer
- Documentation: https://oopoa.readthedocs.io/
- License: mit
-
Latest release: 0.2
published 6 months ago
Rankings
Maintainers (1)
Dependencies
- click ==8.1.8
- matplotlib ==3.7.5
- numpy ==1.24.4
- pandas ==2.0.3