Skip to main content

OOPOA CLI Tool (Object-Oriented Programming Optimization Algorithm)

Project description

🧠 OOPOA CLI – Object-Oriented Programming Optimization Algorithm

Python License Status Version Platform

Code Style PyPI - Coming Soon

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

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

This version

0.2

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oopoa-0.2.tar.gz (11.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

oopoa-0.2-py3-none-any.whl (11.5 kB view details)

Uploaded Python 3

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

Hashes for oopoa-0.2.tar.gz
Algorithm Hash digest
SHA256 5c6ff9db341ea8f59c602b0acc2265392569e87dda87db87877b40396a24fcb4
MD5 587916dcf09f529b83721920c6ba8678
BLAKE2b-256 1a1d2a5fede568c33d843be1e7bd936faae1cf3c7c07bdfb2b7ca996fa012396

See more details on using hashes here.

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

Hashes for oopoa-0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1e1e9e8bf9061bbf1ae223813897a19d1aa536179dde00fa0611ac9b86830abd
MD5 df1ca49a228cdb42cfd825144c45431d
BLAKE2b-256 f1e87000ac04b7697b3717cd736c21f79ba711d4367cad9e17dbb6d4777cad0c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page