Skip to main content

Launching over version 0.1.2. This just solve the typo in consumption.

Project description

📊 Reinforcement Learning in Inventory Optimization using Q-Learning

This repository contains a Python implementation of an inventory optimization model using Q-Learning, a Reinforcement Learning (RL) algorithm. The model is designed to help manage inventory levels by making optimal decisions on order quantities based on forecasted demand, initial stock levels, and inventory capacity.

🚀 Introduction

Efficient inventory management is crucial for reducing costs and avoiding stockouts or overstocking. This project implements a Q-Learning-based optimizer that learns to make optimal inventory decisions over time. It considers factors such as forecasted demand, security stock, and inventory capacity to minimize costs and maintain optimal stock levels.

✨ Features

  • 🧠 Q-Learning Algorithm: Implements Q-Learning for decision-making based on temporal difference learning.
  • 🔄 Dynamic Inventory Management: Adjusts inventory levels based on forecasted consumption dynamically without traditional rules.
  • 🛠️ Customizable Parameters: Adjustable learning rate, discount factor, and exploration rate.
  • 📈 Visualizations: Plots inventory levels, forecast, and order amounts to provide insights into the optimization process.

Installation 🚀

You can install the RLInventoryOpt library directly from GitHub. Follow the instructions below to get started!

Install from GitHub 🌟

To install the library directly from GitHub, use the following command:

pip install RLInventoryOpt

🔧 Usage

Initialize the Model

Create an instance of the QLearningOptimizer class.

To create any model for inventory optimization, you have to follow this:

  1. Create a forecasting model and predict the future consuption.
  2. You have to know the limitations of your system such as security stock, maximum level of stock, initial stock, lead time, and the minimal order quantity.
  3. The actions are limited based from 1 to 6 times the minimal order quantity.
from RLInventoryOpt.qlearning import QLearningOptimizer
import numpy as np

# Example forecasted demand for 6 months
forecast = np.array([400, 325, 356, 210, 150, 400])

# Initial conditions of the system
initial_state = {
 "stock": 800,
 "leadTime": 2,
 "minimumOrder": 100,
 "securityStock": 200,
 "maximalCapacity": 1000
}

# Define the actions
actions = ["no", "m", "2m", "3m", "4m", "5m", "6m"]

# Initialize the optimizer
model = QLearningOptimizer(
 forecast=forecast, 
 initial_stock=initial_state["stock"], 
 security_stock=initial_state["securityStock"],
 capacity=initial_state["maximalCapacity"],
 n_actions=actions, 
 min_order=initial_state["minimumOrder"], 
 lead_time=initial_state["leadTime"],
 alpha=0.1, 
 gamma=0.6, 
 epsilon=0.1
)

# Train the model
model.fit(epochs=1000)

# Predict inventory levels and actions
predictions = model.predict()

# Plot the results
model.plot("bar")

A detailed explanation can be found on this article on Medium: https://lnkd.in/gDEvav59

⚙️ Customization

You can customize the behavior of the agent modifying the parameters for training.

  • alpha (float): Learning rate (default: 0.1)
  • gamma (float): Discount factor (default: 0.6)
  • epsilon (float): Exploration rate (default: 0.1)

☕ Support the Project

If you find this inventory optimization tool helpful and would like to support its continued development, consider buying me a coffee. Your support helps maintain and improve this project!

Buy Me A Coffee

Other Ways to Support

  • ⭐ Star this repository
  • 🍴 Fork it and contribute
  • 📢 Share it with others who might find it useful
  • 🐛 Report issues or suggest new features

Your support, in any form, is greatly appreciated! 🙏

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

rlinventoryopt-0.1.3.tar.gz (10.7 kB view details)

Uploaded Source

Built Distribution

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

rlinventoryopt-0.1.3-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rlinventoryopt-0.1.3.tar.gz
  • Upload date:
  • Size: 10.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for rlinventoryopt-0.1.3.tar.gz
Algorithm Hash digest
SHA256 ffe4029f43a0c33344f9c997237e17bfecf527a444e490b6d2c405c5f5b1c75b
MD5 5c74c7bc06788c23659ebc2b3500ed4b
BLAKE2b-256 1477ac0e3f8f5d928ad39e80f0dce77f0d70201f64b9e9c48428ccb65c3e5039

See more details on using hashes here.

Provenance

The following attestation bundles were made for rlinventoryopt-0.1.3.tar.gz:

Publisher: cd.yaml on sebassaras02/rf_inventory_optimization

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

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

File metadata

  • Download URL: rlinventoryopt-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for rlinventoryopt-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 a91ea2a75e22a9fd974fd56d0540c2cf67418890e804934ca052f7b8b5f128d5
MD5 dfd14e982bfe5c3acf839b03ea0a3e0a
BLAKE2b-256 1c0b5042de89d4a80b13a1e8b15b82a4dd4977258f9a84f12aae54d60530ed4e

See more details on using hashes here.

Provenance

The following attestation bundles were made for rlinventoryopt-0.1.3-py3-none-any.whl:

Publisher: cd.yaml on sebassaras02/rf_inventory_optimization

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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