OOPOA CLI Tool (Object-Oriented Programming Optimization Algorithm)
Project description
🧠 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
Functionalities Overview:
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
git clone https://github.com/LA-10/oop-optimizer.git
cd oopoa-cli
pip install -e .
Then run the tool:
oopoa --help
📁 Project Structure
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
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file oopoa-0.2.tar.gz.
File metadata
- Download URL: oopoa-0.2.tar.gz
- Upload date:
- Size: 11.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c6ff9db341ea8f59c602b0acc2265392569e87dda87db87877b40396a24fcb4
|
|
| MD5 |
587916dcf09f529b83721920c6ba8678
|
|
| BLAKE2b-256 |
1a1d2a5fede568c33d843be1e7bd936faae1cf3c7c07bdfb2b7ca996fa012396
|
File details
Details for the file oopoa-0.2-py3-none-any.whl.
File metadata
- Download URL: oopoa-0.2-py3-none-any.whl
- Upload date:
- Size: 11.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e1e9e8bf9061bbf1ae223813897a19d1aa536179dde00fa0611ac9b86830abd
|
|
| MD5 |
df1ca49a228cdb42cfd825144c45431d
|
|
| BLAKE2b-256 |
f1e87000ac04b7697b3717cd736c21f79ba711d4367cad9e17dbb6d4777cad0c
|