Skip to content

Demo for a talk about inventory modelling and strategy optimisation in Python

Notifications You must be signed in to change notification settings

LukeStorry/Inventory-Optimisation

Repository files navigation

Inventory-Optimisation-Demo

Example code for a talk about inventory modelling and strategy optimisation in Python.

Using:

Slides viewable here


Overview

Discrete Events Diagram

Output

With only the Purchasing event

availability diagram - only purchasing (goes up)

After adding aged stock clearout

availability diagram - with stock clearout (goes up and down blockily)

After adding sales

availability diagram - with clearout and sales (blocks are smoothed off by sales - realistic diagram)

Result of greedy-epsilon optimisation

availability diagram - optimised (minimal spending, no out-of-stock)

Comparison of different Epsilon values (reward per iteration)

epsilon comparison


Setup & running

Install required packages: pip install -r .\requirements.txt

Run the scripts with: python simulation.py or python optimisation.py


Creating your own optimiser

Either use the simple greedy-epsilon-agent-based optimiser as a starting point, or in a new file:

from simulation import PurchaseOrder, Simulation

# Initial inputs
purchase_orders = [PurchaseOrder(0, 20), PurchaseOrder(100, 100)]

for iteration in range(100):
    simulation = Simulation(purchase_orders)
    simulation.run()
    simulation.plot()

    # Customise this calculation depending on requirements
    cost = sum(simulation.availabilities)
    
    # Calculate a new set of more-optimal inputs
    purchase_orders = [] 

About

Demo for a talk about inventory modelling and strategy optimisation in Python

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages