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.

https://github.com/la-10/oop-optimizer

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

algorithms cli-tool engineering metaheuristics open-source optimization python
Last synced: 4 months ago · JSON representation ·

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
  • Host: GitHub
  • Owner: LA-10
  • License: mit
  • Language: Python
  • Default Branch: main
  • Homepage:
  • Size: 152 KB
Statistics
  • Stars: 1
  • Watchers: 1
  • Forks: 1
  • Open Issues: 5
  • Releases: 1
Topics
algorithms cli-tool engineering metaheuristics open-source optimization python
Created 7 months ago · Last pushed 6 months ago
Metadata Files
Readme Contributing License Citation Roadmap

README.md

🧠 OOPOA CLI – Object-Oriented Programming Optimization Algorithm

Python License Status Version Platform Code Style PyPI

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

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 .csv for 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

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)

  • Versions: 1
  • Dependent Packages: 0
  • Dependent Repositories: 0
Rankings
Dependent packages count: 8.9%
Average: 29.4%
Dependent repos count: 50.0%
Maintainers (1)
Last synced: 5 months ago

Dependencies

requirements.txt pypi
  • click ==8.1.8
  • matplotlib ==3.7.5
  • numpy ==1.24.4
  • pandas ==2.0.3
setup.py pypi