Skip to main content

BMR and BWR optimization algorithms with constraint handling

Project description

Optimization Algorithms: BMR and BWR

This package implements two simple yet powerful optimization algorithms:

  • BMR (Best-Mean-Random) Algorithm
  • BWR (Best-Worst-Random) Algorithm

These algorithms are designed to solve both constrained and unconstrained optimization problems without relying on metaphors or algorithm-specific parameters. The package is based on the paper:

Ravipudi Venkata Rao and Ravikumar Shah (2024), "BMR and BWR: Two simple metaphor-free optimization algorithms for solving real-life non-convex constrained and unconstrained problems." arXiv:2407.11149v2.

Features

  • Metaphor-Free: No reliance on nature-inspired metaphors.
  • Simple: No algorithm-specific parameters to tune.
  • Flexible: Handles both constrained and unconstrained optimization problems.

Installation

You can install this package directly from PyPI:

pip install optimization_algorithms

Alternatively, you can clone this repository and install it locally:

git clone https://github.com/your-username/optimization_algorithms.git
cd optimization_algorithms
pip install .

How to Use

Example: Unconstrained BMR Algorithm

import numpy as np
from optimization_algorithms import BMR_algorithm, objective_function

# Define the bounds for a 2D problem
bounds = np.array([[-100, 100]] * 2)

# Set parameters
num_iterations = 100
population_size = 50
num_variables = 2

# Run the BMR algorithm
best_fitness = BMR_algorithm(bounds, num_iterations, population_size, num_variables, objective_function)
print(f"Best fitness found: {best_fitness}")

Example: Constrained BWR Algorithm

import numpy as np
from optimization_algorithms import BWR_algorithm, objective_function, constraint_1, constraint_2

# Define the bounds for a 2D problem
bounds = np.array([[-100, 100]] * 2)

# Set parameters
num_iterations = 100
population_size = 50
num_variables = 2
constraints = [constraint_1, constraint_2]

# Run the BWR algorithm with constraints
best_fitness = BWR_algorithm(bounds, num_iterations, population_size, num_variables, objective_function, constraints)
print(f"Best fitness found: {best_fitness}")

Unit Testing

This package comes with unit tests. To run the tests:

python -m unittest discover -s tests

You can also run the tests using Docker:

docker build -t optimization-algorithms .
docker run -it optimization-algorithms

Algorithms Overview

BMR (Best-Mean-Random) Algorithm

The BMR algorithm is based on the best, mean, and random solutions from the population. It works by updating solutions based on their interaction with these key elements.

  • Paper Citation: R. V. Rao, R. Shah, BMR and BWR: Two simple metaphor-free optimization algorithms. arXiv:2407.11149v2.

BWR (Best-Worst-Random) Algorithm

The BWR algorithm updates solutions by considering the best, worst, and random solutions in the population. The algorithm balances exploration and exploitation through these interactions.

  • Paper Citation: R. V. Rao, R. Shah, BMR and BWR: Two simple metaphor-free optimization algorithms. arXiv:2407.11149v2.

Docker Support

You can use the included Dockerfile to build and test the package quickly. To build and run the package in Docker:

docker build -t optimization-algorithms .
docker run -it optimization-algorithms

License

This package is licensed under the MIT License. See the LICENSE file for more details.

References

  1. Ravipudi Venkata Rao, Ravikumar Shah, "BMR and BWR: Two simple metaphor-free optimization algorithms for solving real-life non-convex constrained and unconstrained problems," arXiv:2407.11149v2.

Project details


Download files

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

Source Distribution

rao_algorithms-0.1.3.tar.gz (3.8 kB view details)

Uploaded Source

Built Distribution

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

rao_algorithms-0.1.3-py3-none-any.whl (3.3 kB view details)

Uploaded Python 3

File details

Details for the file rao_algorithms-0.1.3.tar.gz.

File metadata

  • Download URL: rao_algorithms-0.1.3.tar.gz
  • Upload date:
  • Size: 3.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for rao_algorithms-0.1.3.tar.gz
Algorithm Hash digest
SHA256 35182f0f07235bff116dc2b7ba877caddd3844d88997265aec5256f9a03a1095
MD5 51401ab87b91e1dfcf30fce950e93bec
BLAKE2b-256 71d9389eaa9e2e565cbb595e240806d7adddc185fe78250dfb49b425798b1606

See more details on using hashes here.

File details

Details for the file rao_algorithms-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: rao_algorithms-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 3.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.6

File hashes

Hashes for rao_algorithms-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 f79438a93f240a7f4a6b0d0b26940326598f828c6520f8eab6872ee40be5e494
MD5 20f6e38a4623c07f1c83c6dbfc8ae4fc
BLAKE2b-256 458cb686091c7704bedc565c7f94d5103f46e57c064c8bf1f647c7a3637705b6

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