A Python package for inventory optimization
Reason this release was yanked:
This version of stockpyl contained incomplete setup information and therefore could not be installed correctly
Project description
Stockpyl
Stockpyl is a Python package for inventory optimization. It implements classical single-node inventory models like the economic order quantity (EOQ), newsvendor, and Wagner-Whitin problems. It also contains algorithms for multi-echelon inventory optimization (MEIO) under both stochastic-service model (SSM) and guaranteed-service model (GSM) assumptions.
Most of the models and algorithms implemented in Stockpyl are discussed in the textbook Fundamentals of Supply Chain Theory (FoSCT) by Snyder and Shen, Wiley, 2019, 2nd ed. Most of them are much older; see FoSCT for references to original sources.
For lots of details, read the docs.
Some Examples
Solve the newsvendor problem with a holding (overage) cost of 2, a stockout (underage) cost of 18, and demands that are normally distributed with a mean of 120 and a standard deviation of 10:
>>> from stockpyl.newsvendor import newsvendor_normal
>>> S, cost = newsvendor_normal(holding_cost=2, stockout_cost=18, demand_mean=120, demand_sd=10)
>>> S
132.815515655446
>>> cost
35.09966638649737
Use Chen and Zheng's (1994) algorithm (based on Clark and Scarf (1960)) to optimize a 3-node serial system under the stochastic-service model (SSM):
>>> from stockpyl.ssm_serial import optimize_base_stock_levels
>>> S_star, C_star = optimize_base_stock_levels(
... num_nodes=3,
... echelon_holding_cost=[4, 3, 1],
... lead_time=[1, 1, 2],
... stockout_cost=40,
... demand_mean=10,
... demand_standard_deviation=2
... )
>>> S_star
{1: 12.764978727246302, 2: 23.49686681508743, 3: 46.28013742779933}
>>> C_star
86.02533221942987
Optimize committed service times (CSTs) for a tree network under the guaranteed-service model (GSM) using Graves and Willems' (2000) dynamic programming algorithm:
>>> from stockpyl.gsm_tree import optimize_committed_service_times
>>> from stockpyl.instances import load_instance
>>> # Load a named instance, Example 6.5 from FoSCT.
>>> tree = load_instance("example_6_5")
>>> opt_cst, opt_cost = optimize_committed_service_times(tree)
>>> opt_cst
{1: 0, 3: 0, 2: 0, 4: 1}
>>> opt_cost
8.277916867529369
Resources
Feedback
If you have feedback or encounter problems, please report them on the Stockpyl GitHub Issues Page. (If you are not comfortable using GitHub for this purpose, feel free to e-mail me. My contact info is on my webpage.)
License
Stockpyl is open-source and released under the GPLv3 License.
Citation
If you'd like to cite the Stockpyl package, you can use the following BibTeX entry:
@misc{stockpyl,
title={Stockpyl},
author={Snyder, Lawrence V.},
year={2022},
url={https://github.com/LarrySnyder/stockpyl}
}
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
File details
Details for the file stockpyl-0.0.1.tar.gz
.
File metadata
- Download URL: stockpyl-0.0.1.tar.gz
- Upload date:
- Size: 129.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e14a5f1d05810ab63b6efdf9dbf09f445173ed79b27854ea126bf20562015aa3 |
|
MD5 | b7878c251442e4b5a30f057640620560 |
|
BLAKE2b-256 | 8c76d75789e24cda492f64bcbf2a02bae97d03645b90b85add6a67b891e21d22 |
File details
Details for the file stockpyl-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: stockpyl-0.0.1-py3-none-any.whl
- Upload date:
- Size: 134.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.1 CPython/3.8.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dd96099f8ebab6d1ab09371c5f25ea34b4cce912477b932ac0044724c79a15c1 |
|
MD5 | b040ab0a244736b893de0c6eb5629eab |
|
BLAKE2b-256 | 4b6b070dbb77ca9bb755cf57d83bdbc822c5416ae09e69c21ced4ba9e62b9bad |