Compare commits

...

10 commits

Author SHA1 Message Date
ee8dd41f85 thingies 2023-12-09 18:05:57 +01:00
pablo
a67287eeb7 Saving all material from last year in the archive. 2022-10-06 20:00:36 +02:00
pablo
9a6fa8b4ca Added idea. 2022-10-06 19:55:43 +02:00
pablo
fc681e45f1 Avaldo results, ideas, exam stuff. 2022-09-05 09:19:11 +02:00
pablo
80ced4bcbc A couple of small changes. 2022-07-04 12:10:53 +02:00
pablo
6ad1dab4d2 A lot of stuff. 2022-07-04 11:13:11 +02:00
pablo
a69efa8490 Ignorning obsidian stuff. 2022-07-04 09:53:56 +02:00
pablo
113150e96a A lot of stuff. 2022-05-31 08:04:58 +02:00
pablo
c3e6424148 Changes to case 2. 2022-05-08 20:36:15 +02:00
pablo
9782863647 Small changes. 2022-04-30 13:05:44 +02:00
213 changed files with 115920 additions and 68 deletions

3
.gitignore vendored
View file

@ -1 +1,2 @@
venv/
venv/
.obsidian

22
README.md Normal file
View file

@ -0,0 +1,22 @@
# Applied Optimization and Machine Learning
This repo contains all the materials I use while giving the course Applied
Optimization and Machine Learning techniques and its sibling Practical Data
Science for Operations Management during year 2022/2023.
It contains the following materials:
- Lecture notes: the different notes I used in the classes.
- Cases: the three cases that students had to do during the course. Each case
includes a narrative description, data and some helping code. The folders
also contain the grading details.
- Exam: the exam, along with the grading helper to calculate the final scores
of students.
- Other: a bit of everything.
- Random notes
- Memories I want to keep.
- Interesting materials that I did not directly use during the course.
- Ideas for next year.
The repository also contains all files from previous editions in the `archive`
folder.

17
aot/aot panel.md Normal file
View file

@ -0,0 +1,17 @@
| Week | Ready | Main item | S | Classes | Student work | | |
| ---- | ----- | ----------- | --- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --- | --- |
| 1 | Yes | Python Prep | N | - L1: Introduction and motivation of the course<br/> - L2: Simulation, Optimization and Machine Learning in companies | - Python prep | | |
| 2 | Yes | Python Prep | N | - L3: Introduction to simulation: What is it, When do we use it, Types of simulation<br/> - L4: Simulation examples in Python. Introduction to case 1. | - Python prep<br/> - View [Primer: Simulating a pandemic](https://www.youtube.com/watch?v=7OLpKqTriio) <br/>- Read [Agent-based modeling: Methods and techniques for simulating human systems](https://www.pnas.org/content/99/suppl_3/7280) <br/> - Read case 1. | | |
| 3 | | Case 1 | N | - L5: Simulation methodology. <br/> - L6: Simulation-based optimization I. Challenges and issues with simulation. Where to go from here<br/> - S1: Workshop for case 1 | - Work on case 1 <br/> - Review [HASH model market simulation](https://hash.ai/@hash/model-market-python) <br/>- Review [HASH warehouse simulation](https://hash.ai/@hash/warehouse-logistics) | | |
| 4 | | Case 1 | Y | - L7: Introduction to optimization<br/> - L8: Modeling optimization problems<br/> - S2: Workshop for case 1 | - Work on case 1 <br/> - Read Gurobi's [Modelling Basics](https://www.gurobi.com/resource/modeling-basics/) <br/> - Read Neos [taxonomy of optimization problems](https://neos-guide.org/optimization-tree) <br/> - View this video on the [Simplex algorithm](https://www.youtube.com/watch?v=RO5477EKlXE) | | |
| 5 | | Case 1/2 | Y | - L9: Taxonomy of optimization techniques <br/> - L10: Simulation-based optimization II. Introduction to case 2 | - Deliver case 1 <br/> - Read case 2 <br/> - Enjoy watching [simulation-based race car training](https://www.youtube.com/watch?v=-sg-GgoFCP0) <br/> - Read how the [4th most popular database software in the world uses GAs to access data faster.](https://www.postgresql.org/docs/8.0/geqo-intro2.html) | | |
| 6 | | Case 2 | Y | - L11: Challenges in real-world usage. Simulation vs Optimization <br/> - L12: Introduction to Machine Learning <br/> - S3: Workshop for case 2 | - Work on case 2 <br/> - Read this [review on simulation optimization techniques and softwares](https://arxiv.org/pdf/1706.08591.pdf) | | |
| 7 | | Case 2/3 | Y | - L13: Supervised Machine Learning (SML): NIPS<br/> - L14: Typical SML workflow. Introduction to case 3<br/> - S4: Workshop for case 2 | - Work on case 2 <br/> - Read case 3 | | |
| 8 | | Case 3 | Y | - L15: Algorithm deep dive: Decision trees<br/> - L16: Feature Engineering and Model Evaluation<br/> - S5: Workshop for case 3 | - Deliver case 2 <br/> - View this [intro to neural networks](https://www.youtube.com/watch?v=aircAruvnKk&t=10s) and this [intro to random forests](https://www.youtube.com/watch?v=J4Wdy0Wc_xQ) | | |
| 9 | | Case 3 | Y | - L17: Deployment of Models <br/> - L18: Stories from the trenches: applying all of this in the real world<br/> - S6: Workshop for case 3 | - Work on case 3 <br/> - View this video on [why businesses fail at ML](https://www.youtube.com/watch?v=dRJGyhS6gA0) | | |
| 10 | | Case 3 | N | - L19: Where to go from here: further learning and carreer advice<br/> - L20: Final Q&A, exam preparation | - Work on case 3 | | |
| 11 | | | | - Exam | - Deliver case 3 | | |

BIN
aot/cases/case_1/case_1.zip Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,405 @@
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"provenance": [],
"toc_visible": true
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"source": [
"# Introduction to PuLP\n",
"\n",
"For case 1, you will need to define and solve optimization problems. In this notebook, I'll help you understand how to use `pulp`, a Python package for modeling optimization problems. You might want to check the following links:\n",
"\n",
"- Documentation: https://coin-or.github.io/pulp/\n",
"- Homepage: https://github.com/coin-or/pulp\n",
"\n"
],
"metadata": {
"id": "eLvjUuJdzS7z"
}
},
{
"cell_type": "markdown",
"source": [
"# Installing and checking all is in place"
],
"metadata": {
"id": "HFavOEVS0dbY"
}
},
{
"cell_type": "markdown",
"source": [
"The first thing you need to do is to install `pulp`. `pulp` is not in the standard available packages in Colab, so you need to run the following cell once. "
],
"metadata": {
"id": "HgZwpjUG0PsK"
}
},
{
"cell_type": "code",
"source": [
"!pip install pulp"
],
"metadata": {
"id": "ni6Q_YiO0nIm"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"After doing that, you can import the library."
],
"metadata": {
"id": "k9YI0Kzw0qLT"
}
},
{
"cell_type": "code",
"source": [
"import pulp"
],
"metadata": {
"id": "hw6keX7x0tZ1"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"If all is good, running the following command will print a large log testing `pulp`. The last line should read \"OK\"."
],
"metadata": {
"id": "vD_rXehL1KXX"
}
},
{
"cell_type": "code",
"source": [
"pulp.pulpTestAll()"
],
"metadata": {
"id": "Ney2a8mu1JqQ"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Defining and solving problems\n",
"\n",
"The following cells show you the absolute minimum to model and solve a problem with `pulp`. The steps are:\n",
"\n",
"1. Define decision variables\n",
"2. Define the target function\n",
"3. Define the constraints\n",
"4. Assemble the problem\n",
"5. Solve it\n",
"6. Examine results\n",
"\n",
"For more flexibility, options and interesting stuff, please check up the PuLP documentation."
],
"metadata": {
"id": "oiXz40NR1whf"
}
},
{
"cell_type": "markdown",
"source": [
"## Define decision variables"
],
"metadata": {
"id": "nq5bcQs03g0j"
}
},
{
"cell_type": "code",
"source": [
"x = pulp.LpVariable(\n",
" name=\"x\",\n",
" cat=pulp.LpContinuous \n",
" )\n",
"\n",
"y = pulp.LpVariable(\n",
" name=\"y\",\n",
" cat=pulp.LpInteger # This will make the variable integer only\n",
" )\n",
"\n",
"z = pulp.LpVariable(\n",
" name=\"z\",\n",
" cat=pulp.LpBinary # This will make the variable binary (only 0 or 1)\n",
")"
],
"metadata": {
"id": "0SPhww4L3buh"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## Define the target function"
],
"metadata": {
"id": "uhlbq2oO35kp"
}
},
{
"cell_type": "code",
"source": [
"target_function = 10 * x - 5 * y + z"
],
"metadata": {
"id": "pu3Im9DH39CN"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## Define constraints"
],
"metadata": {
"id": "lqD0dD474Izw"
}
},
{
"cell_type": "code",
"source": [
"constraint_1 = x >= 0\n",
"constraint_2 = y >= 0\n",
"constraint_3 = x >= 10\n",
"constraint_4 = y <= 50"
],
"metadata": {
"id": "5Cu51lYj4OUC"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## Assemble the problem\n",
"\n",
"To put all the parts together, you need to declare a problem and specify if you want to minimize or maximize the target function.\n",
"\n",
"Once you have that:\n",
"- First, you \"add\" the target function.\n",
"- After, you \"add\" all the constraints you want to include."
],
"metadata": {
"id": "d5nq94IM4kSU"
}
},
{
"cell_type": "code",
"source": [
"problem = pulp.LpProblem(\"my_silly_problem\", pulp.LpMinimize)\n",
"\n",
"problem += target_function\n",
"\n",
"for constraint in (\n",
" constraint_1,\n",
" constraint_2,\n",
" constraint_3,\n",
" constraint_4\n",
" ):\n",
" problem += constraint"
],
"metadata": {
"id": "yI-Oiwh64mRc"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## Solve it\n",
"\n",
"The problem object is now unsolved. You can call the `solve` method on it to find a solution."
],
"metadata": {
"id": "RJTWfR8-5fBd"
}
},
{
"cell_type": "code",
"source": [
"f\"Status: {pulp.LpStatus[problem.status]}\"\n",
"problem.solve()"
],
"metadata": {
"id": "4Fbltpbp5mRi"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## Examine results\n",
"\n",
"After calling `solve` on a problem, you can access:\n",
"- The status of the problem. It can be solved, but also it might show to be not feasible.\n",
"- The values assigned to each decision variable.\n",
"- The final value for the target function.\n",
"\n"
],
"metadata": {
"id": "0pc9RmrO7FKo"
}
},
{
"cell_type": "code",
"source": [
"print(f\"Status: {pulp.LpStatus[problem.status]}\")\n",
"for v in problem.variables():\n",
" print(v.name, \"=\", v.varValue)\n",
" \n",
"print(pulp.value(problem.objective))"
],
"metadata": {
"id": "8U4xVvUg9W07"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Peanut Butter Example\n",
"\n",
"As an additional example, you can find below the model and solver for the Peanut Butter Sandwich example we discussed on our lectures."
],
"metadata": {
"id": "I2lNaFm2XVK1"
}
},
{
"cell_type": "code",
"source": [
"pb = pulp.LpVariable(\n",
" name=\"Peanut Butter grams\",\n",
" cat=pulp.LpContinuous \n",
" )\n",
"\n",
"b = pulp.LpVariable(\n",
" name=\"Bread grams\",\n",
" cat=pulp.LpContinuous \n",
" )"
],
"metadata": {
"id": "HI4E2dNoXVK4"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"target_function = 5.88 * pb + 2.87 * b"
],
"metadata": {
"id": "PfTxq8R0XVLB"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"no_negative_pb = pb >= 0\n",
"no_negative_b = b >= 0\n",
"max_pb_we_have = pb <= 200\n",
"max_b_we_have = b <= 300\n",
"doctors_dietary_restriction = pb <= 0.13 * b"
],
"metadata": {
"id": "2X1AzQM8XVLD"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"problem = pulp.LpProblem(\"sandwich_problem\", pulp.LpMaximize)\n",
"\n",
"problem += target_function\n",
"\n",
"for constraint in (\n",
" no_negative_pb,\n",
" no_negative_b,\n",
" max_pb_we_have,\n",
" max_b_we_have,\n",
" doctors_dietary_restriction\n",
" ):\n",
" problem += constraint"
],
"metadata": {
"id": "3oEoQXebXVLE"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"f\"Status: {pulp.LpStatus[problem.status]}\"\n",
"problem.solve()\n",
"print(f\"Status: {pulp.LpStatus[problem.status]}\")\n",
"for v in problem.variables():\n",
" print(v.name, \"=\", v.varValue)\n",
" \n",
"print(f\"Final calories: {pulp.value(problem.objective)}\")"
],
"metadata": {
"id": "u1vI73kiXVLF"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"# Case 2\n",
"\n",
"You can use the rest of the notebook to work on the different parts of case 1."
],
"metadata": {
"id": "6kWgbTjU-LaN"
}
},
{
"cell_type": "code",
"source": [
"# Good luck!"
],
"metadata": {
"id": "aYzseTWh-Sal"
},
"execution_count": null,
"outputs": []
}
]
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

File diff suppressed because one or more lines are too long

BIN
aot/cases/case_2/case_2.zip Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
aot/cases/case_3/case_3.zip Normal file

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,175 @@
# Case 3: Improving last mile logistics with Machine Learning
After your last engagement, you have pretty much become the go-to
service provider for advanced quantitative methods. Congratulations!
You have been called again to help a different manager within Beanie Limited:
Estefania Pelaez. Estefania is the city manager for Barcelona. She is in charge
of all commercial and logistic operations that happen in the city.
One of the operations that Beanie Limited runs in Barcelona is their own
last-mile coffee delivery service. The company runs a small fleet of vans and
trucks that delivers small orders of roasted coffee beans (typically,
around 10-100kg of coffee per delivery) to restaurants, cafes, hotels and other
businesses in the city.
The efficiency of the deliveries is important to keep margins profitable for
Beanie Limited. A sloppy management can make the company lose money. Hence,
Estefania is always working on ways to make the operations as smooth as
possible.
Currently, Beanie Limited has rented space in two warehouses: one located in
Zona Franca and another one in Baro de Viver. Complementing that, the company
has a small fleet of combi vans, regular sized vans and one truck, which are
used by Beanie Limited own drivers to deliver the coffee beans from the
warehouses to the customer's facilities.
Orders placed by the customers are predictable and placed with time in advance,
which allows Estefania and her team to plan the deliveries and minimize wasted
effort by the fleet. Since they know which locations they will need to deliver
to, they use a routing software that drafts the routes that each vehicle will
cover each day.
Recently, Estefania recently realized something: deliveries are almost always
taking place too early or too late. After researching with some data, Estefania
found out that there was nothing wrong with the routing software time
estimates: the driving time between locations predicted by the software is
accurate. The real issue is related to what Estefania's team calls the "
engine-off" time.
The engine-off time is the time a driver spends actually dropping off goods in
a client location. It's called engine-off because the clock starts ticking when
the driver takes the keys off the van and stops when the driver starts driving
again.
Currently, Estefania and her team assume an engine-off time of 3 minutes for
all deliveries when building the delivery routes and schedules. But it seems
that this not realistic at all and is causing a lot of trouble with the
schedules. Clients are not happy with delivery times not being respected, some
driver routes end up too early (which means that the same driver could have
covered more clients) and some others run for too long (which means they have
to go back to the warehouse without delivering all the goods requested by the
clients).
If Estefania could know beforehand what would be the engine-off time of
different deliveries, she could improve the route planning to fix all of these
issues. She has been told that Machine Learning could help with this and is
expecting you to find out if and how it can be applied to this problem.
## Detailed Task Definition
- Below you will find tasks organized in four levels.
- You need to write a report document where you answer the questions of the
different levels. This report should be directed towards Estefania, should
give her clear recommendations and should justify these recommendations. It's
important for you to reflect your methodology to back your proposals.
- Each level is worth 2 points out of a total of 10. The 2 missing points will
grade the clarity and structure of your report.
- You need to use a Python notebook to solve all levels. Please attach a
notebook that shows your solution/proposal/analysis. Your notebook should be
runnable "as-is". That means that anyone should be able to run it from
beginning to end without any additional instructions or action required (
except for uploading data from a CSV in the Google Colab environment. That
requires someone to upload the file with a few clicks and it's fine).
- Include your team number, names and student IDs in all your deliverables.
## Data
By joining the customer database together with past deliveries details,
Estefania has built a dataset of execute deliveries. The table contains 9,000
examples of past deliveries and their engine-off times. The exact field
meanings are explained below:
- client_name: the name of the client.
- truck_size: what type of truck was being used. Can be one of Combi, Van or
Truck.
- truck_origin_warehouse: from which Beanie Limited warehouse did the route
start.
- delivery_timestamp: at what date and time was the delivery done (defined as
the moment the engine-off time starts).
- total_weight: total weight of the goods delivery.
- brand_1_coffee_proportion: what percentage of the delivery was of Beanie's
brand #1.
- brand_2_coffee_proportion: what percentage of the delivery was of Beanie's
brand #2.
- brand_3_coffee_proportion: what percentage of the delivery was of Beanie's
brand #3.
- driver_id: the ID of the driver that was driving the route.
- is_fresh_client: whether the client was fresh at the date of the delivery.
Fresh clients are clients that have been doing business with Beanie for less
than 30 days.
- postcode: the postcode of the client location.
- business_category: whether the client is a hotel, a cafe or restaurant or a
coffee retailer.
- floor: the physical position of the client location.
- partnership_level: indicates the partnership level with Beanie. Key Account
are important clients for Beanie Limited. Diamond clients are the top
priority clients for the company.
- box_count: how many distinct boxes were delivered to the client. The coffee
beans bags are grouped into boxes for delivery.
- final_time: the engine-off time, measured in seconds.
## Notebook
Case 3 comes with no helping notebook: this time, you will have to code things
from scratch yourselves. Remember that you are still suposed to write and
deliver a notebook (see the "Detailed Task Definition" section).
A few comments on your notebook:
- I'm a going to constraint you to use [scikit-learn](https://scikit-learn.org/stable/) as a ML library. You can
of course use other useful Python libraries such as pandas, numpy, etc. But
for ML modeling, please go with scikit-learn.
- Below you can find some useful materials which relate to what you need to do
as part of the case:
- [A simple, guided EDA on the Titanic Dataset](https://www.datacamp.com/tutorial/kaggle-machine-learning-eda)
- [A guide on regression performance metrics](https://machinelearningmastery.com/regression-metrics-for-machine-learning/)
and some [material from scikit-learn on the same topic](https://scikit-learn.org/stable/modules/classes.html#regression-metrics)
- An [introduction to cross-validation](https://machinelearningmastery.com/k-fold-cross-validation/)
- A thorough [review on why we need to use baselines](https://blog.ml.cmu.edu/2020/08/31/3-baselines/) in ML
- A simple [introduction to linear regression with scikit-learn](https://stackabuse.com/linear-regression-in-python-with-scikit-learn/)
## Levels
### Level 1
- Assess for Estefania if ML is a good choice for her problem and explain why.
- Perform Exploratory Data Analysis on the given data. Is it clean? Which
variables could be useful to explain the engine-off time? Are there any other
interesting things you can draw from the dataset?
### Level 2
- Present how are you going to measure performance for this problem and how you
will use the available data for testing it.
- Develop a baseline algorithm and evaluate its performance.
### Level 3
- Develop the best model you can make to predict engine-off time.
- Explain your methodology and report on performance.
- Compare your performance to the baseline algorithm. Reflect on what is the
cause of whatever differences can be observed between both.
### Level 4
After presenting your model and results, Estefania has two different questions:
- Estefania would like to learn from the ML algorithm. What are the most
relevant features that define the engine-off time? Can you somehow quantify
how important each is or which are most useful?
- Estefania is interested in learning about next steps. What can be done to
improve even more the model performance and achieve better results?
### SPECIAL
For this case, we are going to run a little competition. There will be a
surprise gift on the last lecture for the team that wins.
The competition consists on getting the best performing model of the course. I
have a hidden part of Estefania's dataset. Besides the data for the case, I have
also added an additional thousand records for which you don't have the engine off
time (so you can make predictions, but you can't compare them against the true
result).
To enter the competition, you will have to send me a csv with a single column named "predictions". Each row should be a record of the extra dataset, delivered in the same order as the predictive features you received. I will measure the RMSE of all deliveries and the team with the lowest RMSE will be the winner.

Binary file not shown.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,7 @@
METRIC: RMSE
team_12 RMSE: 96.45072068592552
team_2 RMSE: 112.43239178382082
team_3 RMSE: 140.60987164535905
team_1 RMSE: 156.38651077473006
team_5 RMSE: 159.27300996653568
beanie_limited RMSE: 396.84362604059373

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
aot/exam/exam.odt Normal file

Binary file not shown.

BIN
aot/exam/exam.pdf Normal file

Binary file not shown.

BIN
aot/exam/grading.ods Normal file

Binary file not shown.

BIN
aot/exam/retake_exam.odt Normal file

Binary file not shown.

BIN
aot/exam/retake_exam.pdf Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,196 @@
# Case 1: Simulating Stock Policies
- Title: Choosing stock policies under uncertainty
- Description: Students role-play their participation as consultants in a
project for Beanie Limited, a coffee beans roasting company. Elisa, the
regional manager for the italian region, is not happy with their inventory
policies for raw beans. The students are asked to analyse the problems posed
by Elisa and apply simulation techniques, together with real data, to
recommend a stock policy for the company's warehouse in the italian region.
Python notebooks with some helpful prepared functions are provided to the
students. The final delivery is a report with their recommendation to the
client company, along with the used code.
Stuff I want them to understand:
- The model/hypothesis/validate
- That in a simulation you set parameters, and you observe results
- To write in a problem-solving manner.
- That there are trade-offs and it's not trivial to find optimal solutions.
Elements of the simulation:
- Demand behavior
- Lead time and standard deviation of provider (or providers)
- Service level
- Punishment for sales lost
Observable effects of policies:
- Mean inventory at hand
- Service level
- Warehousing/Capital Cost
- Lost sales cost
# Case 1: Choosing ordering goods under uncertainty
You are part of an expert simulation team in SimiUPF SL. You have been assigned
to a new project with a client company, Beanie Limited. Beanie Limited is a
coffee roasting company and also distributes raw coffee beans through Europe
and Middle East.
Specifically, you will be working for Elisa Bolzano, the Director of Beanie
Limited's warehouse located in Caserta, near Naples. Elisa is the full
responsible for all the operations in the warehouse. She has requested the help
of the SimiUPF team because she is worried about how certain things are managed
in the warehouse and wants your help.
The Caserta warehouse serves the raw coffee beans distribution business of
Beanie Limited in southern europe and the mediterranean. The warehouse and its
team are responsible for serving clients and also other smaller regional
warehouses from Beanie Limited in this geography. From the warehouse point of
view, they are usually just called "the clients". Whenever one of the clients
needs raw beans, they arrange a transport truck that goes to the warehouse to
pick up a certain amount of goods. Elisa's team fills up the truck with the
requested goods, and then the clients take care of receiving that at their own
locations. Given the size and relevance of the Caserta warehouse, activity is
pretty much constant, with goods leaving the warehouse towards client locations
every day.
The Caserta warehouse itself has only one way to source coffee beans to store
in their warehouse: requesting them to the Beanie Limited central offices in
Diemen, near Amsterdam. Whenever Elisa's team considers that more stock is
needed, they post a Purchase Order to the central office for a certain amount
of beans. The central office arranges the goods and the delivery and, after a
few days, the goods reach Caserta and are stored in the warehouse. The central
office tries to ensure a lead time of 7 days (lead time is the time that passes
between an order being placed and the goods reaching their destination), but
the reality is they do what they can and this time is not always respected.
Stock is a necessary evil (it implies a lot of cost), but Elisa's warehouse
needs it to serve the clients in their region properly. Having too little stock
means the clients need to wait long times to get their goods, which is risky
for the business. On the other hand, having a lot of stock means high warehouse
costs and financial opportunity cost (if Beanie Limited has 1 million € in
coffee beans in a warehouse, that is 1 million € they can't invest somewhere
else to improve their business). Thus, Elisa needs the stock to be as small as
possible, while making sure she is not disappointing clients at the same time
because of stockouts.
Elisa is calling you because 2021 was a terrible year for the warehouse. The
year was a chaotic one, and Elisa's team was not able to run operations
smoothly. Although Elisa is not providing exact numbers, she is very well aware
that the warehouse stock was unnecessarily high at times, and that there were
too many periods where the warehouse was out of stock and clients had to wait
to get their goods.
Elisa thinks the main reason for this is the lack of a clear policy for when to
order and how much to order from Diemen. Her team decides independently when to
do it, and Elisa has a feeling that they are not approaching these decisions
the right way. This means that sometimes they order when there is no need to,
sometimes they don't order when they should, and that the amounts being ordered
might not always be the optimal ones.
Here is where you come in. As simulation experts, Elisa expects from you that
you can help design an ordering policy to fix these issues. Doing this implies
examining data from last year, building a proper simulation to examine the
different factors being involved, and deciding when and how should Elisa's team
order more goods from Diemen.
Elisa expects a report where you share your findings and recommendations in a
clear way that can help her team. Also, Elisa does not trust you blindly: you
need to motivate the reasoning behind your recommendations. Otherwise, she will
not feel comfortable implementing your recommendations and the bosses at
SimiUPF will be mad at you...
## Detailed task definition
- Below you will find four levels of questions. Levels 1 to 3 are compulsory.
Level 4 is optional.
- You need to write a report document where you answer the questions of the
different levels. This report should be directed towards Elisa, should give
her clear recommendations and should justify these recommendations. It's
important for you to reflect your methodology to back your proposals.
- Each level is worth 2 points out of a total of 10. The 2 missing points will
grade the clarity and structure of your report and code.
- You need to use a Python notebook to solve all levels. A helper notebook is
provided. Please attach a notebook that shows your
solution/proposal/analysis.
- Include your team number, names and student IDs in all your deliverables.
## Data
- You are provided with three tables that contain real data from 2021.
- demand_events: this table shows how many beans left the Caserta warehouse
to serve clients. There is some amount leaving every day because the
warehouse serves many small orders from small clients, so there is always
some order being fulfilled. The amount is measured in kilograms, and
represents the total amount that left during that day. Individual orders
are not relevant for this case, so we only look at daily total figures.
- sourcing_events: this table shows the Purchase Orders that Elisa's team
placed to Diemen. For each order, there are two dates: the date when
Elisa's team placed the order, and the date where the beans actually
reached the Caserta warehouse. The difference between those dates is the
real lead time of each order. The amount is measured in kilograms.
- stock_state: this table shows the stock at the warehouse at the end of
each date. As you can guess, the stock for a certain date is the stock of
the previous day, plus the goods that reached Caserta coming from Diemen,
minus the goods that left the warehouse to serve client orders. A
negative stock is not a challenge to the laws of physics: it means
clients are waiting for their requested beans. If one row shows -1.000,
it means that the warehouse is empty, and clients are awaiting a total
amount of 1.000 kgs of beans. If next morning, a 1.000 kgs reach Caserta
from Diemen, those will be used immediately to satisfy those awaiting
clients, and the warehouse stock will become 0.
## Notebook
A notebook with some helping code has been provided. The code contains a small
simulation engine that can help you simulate a year of activity for the
warehouse. The instructions on how to use the code are in the notebook itself.
## Levels
- Level 1
- Elisa wants you to measure the performance of the last year, providing
quantitative metrics. She knows it was a bad year, but hasn't looked at
the real data to summarize how bad it was. Remember that there is a
trade-off: too much stock, is not desired, but running out of stock and
making clients wait is also negative.
- Going one step further, Elisa wants to know: what was done wrong?
- Level 2
- Elisa wants you to propose an ordering policy. This means, that you need
to define a rule that, once each day, should answer the questions: should
we place a Purchase Order to request beans from Diemen today? If yes, how
much should we order?
- Use simulation to present metrics on what is the expected performance
with the policy you are proposing. Remember, you need to convince Elisa
that this is better than what happens today.
- As a specific constraint, Elisa explains that she wants that the
probability of a stockout to be at most of 5% on any given day.
- Level 3
- Right after you finished designing your policy for level 2, Elisa called
with some news: she has just been informed by the management in Diemen
that a new Minimum Order Quantity (MOQ) rule will begin soon. This rule
means that, when the Caserta warehouse places an order to request
material from Diemen, the order should be of at least 500,000 kgs of
beans, and not less than that.
- Elisa wants you to take this into account. Does it affect the policy you
proposed for level 2? If so, you need to come up with a new one that
adapts to this rule and compare it to the previous one.
- Level 4
- Elisa briefly discussed with you in one meeting that there is an option
to come to an agreement with the team in Diemen to improve the lead time
stability. The proposal from Diemen is that, if the target lead time was
set to something higher that the current 7 days target, providing a more
stable delivery would be feasible.
- The specific proposal from Diemen is: if the lead time target is changed
to 15 days, they provide a 100% guarantee that orders will be delivered
in exactly 15 days.
- Elisa would love if you could take some additional time to study this
proposal. What is better for Caserta? The current 7 days target
lead-time, with unstable delivery times? Or a fixed, 15-day lead time?
- The MOQ rule of level 3 still applies.

Binary file not shown.

View file

@ -0,0 +1,366 @@
date,demand_quantity
2021-01-01,54609.49281314914
2021-01-02,36208.63648649295
2021-01-03,77784.17276763407
2021-01-04,76481.81360421646
2021-01-05,52305.87658918292
2021-01-06,57098.56436860317
2021-01-07,41565.68706138541
2021-01-08,81995.500619844
2021-01-09,71041.91466404148
2021-01-10,31787.17080818402
2021-01-11,32735.09633866546
2021-01-12,32855.44553254065
2021-01-13,55420.934082626205
2021-01-14,48883.311263507494
2021-01-15,48368.597773147136
2021-01-16,40225.99478591274
2021-01-17,69003.66723779934
2021-01-18,67378.93368511106
2021-01-19,59444.432628854185
2021-01-20,54441.80415596864
2021-01-21,52796.814721541414
2021-01-22,30193.150803735854
2021-01-23,62328.53756562836
2021-01-24,43690.320158519615
2021-01-25,78451.89473980921
2021-01-26,47794.13927746792
2021-01-27,51454.93947489077
2021-01-28,64633.17690683539
2021-01-29,67371.66310250101
2021-01-30,51137.068372905895
2021-01-31,62192.931782584405
2021-02-01,62381.245234820446
2021-02-02,62744.03145531537
2021-02-03,51305.706023572566
2021-02-04,52618.66719247759
2021-02-05,51961.10865929137
2021-02-06,55154.27434352692
2021-02-07,39799.62917632264
2021-02-08,65486.97890826721
2021-02-09,55355.23228947571
2021-02-10,46211.4777291026
2021-02-11,53132.95392507133
2021-02-12,31537.03525349067
2021-02-13,46447.72089889987
2021-02-14,63731.03176553111
2021-02-15,54454.77009849779
2021-02-16,40659.50720269109
2021-02-17,63493.99813149876
2021-02-18,54931.266644895266
2021-02-19,28278.734877540137
2021-02-20,36379.638867181835
2021-02-21,62202.758260545044
2021-02-22,54523.210135004185
2021-02-23,42395.85236943305
2021-02-24,42934.425415725156
2021-02-25,51494.77047631462
2021-02-26,44220.2960470736
2021-02-27,45670.120416197926
2021-02-28,57107.49381367681
2021-03-01,28972.234058115788
2021-03-02,43048.734607813065
2021-03-03,41505.53405595842
2021-03-04,47926.03548243223
2021-03-05,61278.99549030161
2021-03-06,39044.50052424295
2021-03-07,37142.63665375576
2021-03-08,59385.01021647509
2021-03-09,19622.861200135892
2021-03-10,42875.82033258566
2021-03-11,37298.094228973925
2021-03-12,53411.899019061944
2021-03-13,45345.99865109816
2021-03-14,53211.40616195306
2021-03-15,40974.40081655905
2021-03-16,56025.67583148412
2021-03-17,42957.88421097572
2021-03-18,65464.99283743926
2021-03-19,28628.77720679815
2021-03-20,50873.13077669
2021-03-21,47215.115350042746
2021-03-22,44982.481462385775
2021-03-23,72845.44784612038
2021-03-24,36657.28355561715
2021-03-25,35932.62440127316
2021-03-26,90802.53749884429
2021-03-27,54150.36198995029
2021-03-28,57725.715294590715
2021-03-29,49797.541628930994
2021-03-30,39842.574327318325
2021-03-31,46648.05822011224
2021-04-01,38251.20061495644
2021-04-02,54968.95147105346
2021-04-03,39223.33668121346
2021-04-04,55196.72314245463
2021-04-05,60193.96623402014
2021-04-06,107790.97235982082
2021-04-07,58927.3553815537
2021-04-08,52570.524217849554
2021-04-09,40996.74684261808
2021-04-10,52952.91853803685
2021-04-11,55117.279622249654
2021-04-12,62330.90239991735
2021-04-13,60352.159875666686
2021-04-14,46481.1929993728
2021-04-15,26740.04853400801
2021-04-16,58824.75809726865
2021-04-17,48919.848176294996
2021-04-18,69164.97343682637
2021-04-19,65052.99346838036
2021-04-20,86948.6316872793
2021-04-21,47600.922050548594
2021-04-22,53629.43407349051
2021-04-23,58802.85640700405
2021-04-24,27277.291629712032
2021-04-25,72991.08369503866
2021-04-26,46319.17825995694
2021-04-27,42473.64434623195
2021-04-28,62986.327912551824
2021-04-29,59770.868769586974
2021-04-30,46967.110213491585
2021-05-01,31283.252270527257
2021-05-02,45270.96133039481
2021-05-03,40200.06151139432
2021-05-04,28769.438869243786
2021-05-05,41597.284397045456
2021-05-06,42053.59694349442
2021-05-07,32056.90063878994
2021-05-08,24126.23251230451
2021-05-09,61874.94040944404
2021-05-10,69582.18210731493
2021-05-11,54713.709988929106
2021-05-12,77986.61766717135
2021-05-13,51047.031274850284
2021-05-14,59715.32807151039
2021-05-15,73688.19223261088
2021-05-16,65807.03078052355
2021-05-17,55779.76069593255
2021-05-18,53655.30817237868
2021-05-19,53863.25586084147
2021-05-20,42447.86518825701
2021-05-21,34634.185379985654
2021-05-22,81385.8091352819
2021-05-23,53674.49856663084
2021-05-24,32130.44754196027
2021-05-25,35141.955123039676
2021-05-26,35379.77494659018
2021-05-27,47723.22357446625
2021-05-28,50903.4531491154
2021-05-29,52597.71388776773
2021-05-30,37762.845725518426
2021-05-31,31687.345250434668
2021-06-01,1380.9898989639114
2021-06-02,39384.958015718286
2021-06-03,62407.74873554036
2021-06-04,65856.83339328374
2021-06-05,41159.52864583683
2021-06-06,78292.78851815795
2021-06-07,45085.067801033474
2021-06-08,63969.20178674298
2021-06-09,61865.47920564571
2021-06-10,66481.65277980786
2021-06-11,51663.83884564799
2021-06-12,49462.60941335073
2021-06-13,48907.56631014691
2021-06-14,27822.17014448859
2021-06-15,35277.37023428074
2021-06-16,58563.35766039751
2021-06-17,62202.644540009576
2021-06-18,59361.79725578232
2021-06-19,37617.54204811233
2021-06-20,84719.87850010264
2021-06-21,50153.4959152938
2021-06-22,40323.203680923136
2021-06-23,34962.05953043287
2021-06-24,46613.355492701965
2021-06-25,53246.878843729624
2021-06-26,38693.95753463766
2021-06-27,64529.674857993334
2021-06-28,41126.42916746255
2021-06-29,71984.7315338233
2021-06-30,28888.043384351673
2021-07-01,60293.9028556177
2021-07-02,49816.29840729628
2021-07-03,42812.38643232065
2021-07-04,34909.73927750447
2021-07-05,37591.53584671515
2021-07-06,39469.203591839716
2021-07-07,54396.08709948022
2021-07-08,28047.275778018222
2021-07-09,41834.25913212226
2021-07-10,42604.985980117504
2021-07-11,57706.78926368313
2021-07-12,37965.84096167571
2021-07-13,42719.54678256345
2021-07-14,36541.18442771253
2021-07-15,45179.2123752051
2021-07-16,49107.119659072996
2021-07-17,28547.87933059051
2021-07-18,49714.75688145967
2021-07-19,33936.612529083315
2021-07-20,72130.34325424329
2021-07-21,21218.431770514377
2021-07-22,47114.58552828316
2021-07-23,62864.89434803029
2021-07-24,48265.27576417639
2021-07-25,82856.83438714968
2021-07-26,71619.09933599173
2021-07-27,31313.91831932018
2021-07-28,51702.76017876872
2021-07-29,51759.91074963173
2021-07-30,43399.332699545244
2021-07-31,55424.54037571451
2021-08-01,42225.94672589529
2021-08-02,34807.53319498364
2021-08-03,73469.6548372101
2021-08-04,27209.4505106898
2021-08-05,57237.08622864778
2021-08-06,45169.07725691487
2021-08-07,51028.44462209041
2021-08-08,40990.419651217926
2021-08-09,31432.767517597265
2021-08-10,46704.92168243732
2021-08-11,67447.45628232439
2021-08-12,56060.762852218075
2021-08-13,36096.04292632875
2021-08-14,82159.16133987988
2021-08-15,61384.53830739901
2021-08-16,42921.0220131585
2021-08-17,57574.80918470686
2021-08-18,44223.76579375525
2021-08-19,38112.188923509486
2021-08-20,43302.275718994686
2021-08-21,31995.553894163357
2021-08-22,51456.16324022061
2021-08-23,51376.41164803253
2021-08-24,45624.593753100846
2021-08-25,46734.78195159169
2021-08-26,37565.07483616892
2021-08-27,23554.39766955899
2021-08-28,20604.948141803365
2021-08-29,66334.25895451049
2021-08-30,48047.85418448473
2021-08-31,56191.71390404747
2021-09-01,44859.282252098456
2021-09-02,46030.147501430656
2021-09-03,10703.823438653832
2021-09-04,70343.60042856235
2021-09-05,69607.14131423642
2021-09-06,56931.55211394906
2021-09-07,54663.61348397007
2021-09-08,57725.529008129895
2021-09-09,53757.39275518815
2021-09-10,53480.74906036454
2021-09-11,49602.291868261746
2021-09-12,52985.895433602054
2021-09-13,37411.73715166042
2021-09-14,59155.55398150197
2021-09-15,21991.02211112378
2021-09-16,59508.78533477017
2021-09-17,41544.13170794038
2021-09-18,46878.16624464087
2021-09-19,32469.82943570702
2021-09-20,61806.26905613678
2021-09-21,56074.725664414334
2021-09-22,53483.80545741505
2021-09-23,30077.209266523543
2021-09-24,73070.54849698953
2021-09-25,44118.377703017635
2021-09-26,34134.3360656615
2021-09-27,61619.510801440054
2021-09-28,29334.959480643633
2021-09-29,54840.778405071345
2021-09-30,54861.25954092192
2021-10-01,37666.69406650353
2021-10-02,45514.88974301199
2021-10-03,37872.595956602185
2021-10-04,54862.49528732663
2021-10-05,72168.41067112274
2021-10-06,58411.76789552352
2021-10-07,64450.64193866483
2021-10-08,39846.169995410615
2021-10-09,51012.92307031886
2021-10-10,56193.97181413436
2021-10-11,34065.44429410843
2021-10-12,58206.460717550566
2021-10-13,46487.945645762295
2021-10-14,50076.70184963691
2021-10-15,47580.71432500986
2021-10-16,53915.82908269834
2021-10-17,39606.35607109019
2021-10-18,73790.25224218029
2021-10-19,38407.621781936425
2021-10-20,33404.97538990958
2021-10-21,59931.9601178157
2021-10-22,74486.16955897454
2021-10-23,50195.02837816861
2021-10-24,40073.20302847418
2021-10-25,64626.796001266266
2021-10-26,61727.34307665966
2021-10-27,62187.88733591297
2021-10-28,54214.87801602549
2021-10-29,67142.34221772531
2021-10-30,46487.69937914996
2021-10-31,31086.740684974324
2021-11-01,48278.95337799651
2021-11-02,20718.68300716247
2021-11-03,58138.40065378947
2021-11-04,49722.30296011415
2021-11-05,36742.138456983004
2021-11-06,42736.48890700623
2021-11-07,55356.6885726762
2021-11-08,81832.3429551895
2021-11-09,62338.173681547836
2021-11-10,39202.33687407937
2021-11-11,62786.50002194336
2021-11-12,37726.689751497914
2021-11-13,67033.48460270898
2021-11-14,55366.81040522425
2021-11-15,53898.24191372635
2021-11-16,62845.981914852084
2021-11-17,33833.82833106041
2021-11-18,61076.99869993116
2021-11-19,51228.112090794835
2021-11-20,55635.47027518508
2021-11-21,71803.01115735975
2021-11-22,50315.05762449138
2021-11-23,60710.007411381375
2021-11-24,73249.01607526309
2021-11-25,57699.01149670034
2021-11-26,46798.292724322295
2021-11-27,36359.18817807891
2021-11-28,61511.52093729363
2021-11-29,39284.72872960448
2021-11-30,28462.06773230841
2021-12-01,25809.261932155227
2021-12-02,59425.1826389642
2021-12-03,43014.05369644615
2021-12-04,52769.507877984564
2021-12-05,56657.291422193426
2021-12-06,59175.14433261302
2021-12-07,57450.71229516849
2021-12-08,25887.75148158159
2021-12-09,21300.79633013303
2021-12-10,49686.47609053778
2021-12-11,50683.5775985572
2021-12-12,43090.41843560319
2021-12-13,28815.44447997063
2021-12-14,31445.73933682877
2021-12-15,50964.200286431944
2021-12-16,37689.76522472434
2021-12-17,39270.444361100475
2021-12-18,63767.92920582164
2021-12-19,66245.76864762916
2021-12-20,64310.02645239804
2021-12-21,20186.46628098661
2021-12-22,57829.12348425346
2021-12-23,61209.40407684893
2021-12-24,60229.294569424455
2021-12-25,57790.197713617585
2021-12-26,59848.30412950744
2021-12-27,48843.47435878844
2021-12-28,45483.444566160666
2021-12-29,45361.81436223178
2021-12-30,57103.88645952773
2021-12-31,49479.32345442135
1 date demand_quantity
2 2021-01-01 54609.49281314914
3 2021-01-02 36208.63648649295
4 2021-01-03 77784.17276763407
5 2021-01-04 76481.81360421646
6 2021-01-05 52305.87658918292
7 2021-01-06 57098.56436860317
8 2021-01-07 41565.68706138541
9 2021-01-08 81995.500619844
10 2021-01-09 71041.91466404148
11 2021-01-10 31787.17080818402
12 2021-01-11 32735.09633866546
13 2021-01-12 32855.44553254065
14 2021-01-13 55420.934082626205
15 2021-01-14 48883.311263507494
16 2021-01-15 48368.597773147136
17 2021-01-16 40225.99478591274
18 2021-01-17 69003.66723779934
19 2021-01-18 67378.93368511106
20 2021-01-19 59444.432628854185
21 2021-01-20 54441.80415596864
22 2021-01-21 52796.814721541414
23 2021-01-22 30193.150803735854
24 2021-01-23 62328.53756562836
25 2021-01-24 43690.320158519615
26 2021-01-25 78451.89473980921
27 2021-01-26 47794.13927746792
28 2021-01-27 51454.93947489077
29 2021-01-28 64633.17690683539
30 2021-01-29 67371.66310250101
31 2021-01-30 51137.068372905895
32 2021-01-31 62192.931782584405
33 2021-02-01 62381.245234820446
34 2021-02-02 62744.03145531537
35 2021-02-03 51305.706023572566
36 2021-02-04 52618.66719247759
37 2021-02-05 51961.10865929137
38 2021-02-06 55154.27434352692
39 2021-02-07 39799.62917632264
40 2021-02-08 65486.97890826721
41 2021-02-09 55355.23228947571
42 2021-02-10 46211.4777291026
43 2021-02-11 53132.95392507133
44 2021-02-12 31537.03525349067
45 2021-02-13 46447.72089889987
46 2021-02-14 63731.03176553111
47 2021-02-15 54454.77009849779
48 2021-02-16 40659.50720269109
49 2021-02-17 63493.99813149876
50 2021-02-18 54931.266644895266
51 2021-02-19 28278.734877540137
52 2021-02-20 36379.638867181835
53 2021-02-21 62202.758260545044
54 2021-02-22 54523.210135004185
55 2021-02-23 42395.85236943305
56 2021-02-24 42934.425415725156
57 2021-02-25 51494.77047631462
58 2021-02-26 44220.2960470736
59 2021-02-27 45670.120416197926
60 2021-02-28 57107.49381367681
61 2021-03-01 28972.234058115788
62 2021-03-02 43048.734607813065
63 2021-03-03 41505.53405595842
64 2021-03-04 47926.03548243223
65 2021-03-05 61278.99549030161
66 2021-03-06 39044.50052424295
67 2021-03-07 37142.63665375576
68 2021-03-08 59385.01021647509
69 2021-03-09 19622.861200135892
70 2021-03-10 42875.82033258566
71 2021-03-11 37298.094228973925
72 2021-03-12 53411.899019061944
73 2021-03-13 45345.99865109816
74 2021-03-14 53211.40616195306
75 2021-03-15 40974.40081655905
76 2021-03-16 56025.67583148412
77 2021-03-17 42957.88421097572
78 2021-03-18 65464.99283743926
79 2021-03-19 28628.77720679815
80 2021-03-20 50873.13077669
81 2021-03-21 47215.115350042746
82 2021-03-22 44982.481462385775
83 2021-03-23 72845.44784612038
84 2021-03-24 36657.28355561715
85 2021-03-25 35932.62440127316
86 2021-03-26 90802.53749884429
87 2021-03-27 54150.36198995029
88 2021-03-28 57725.715294590715
89 2021-03-29 49797.541628930994
90 2021-03-30 39842.574327318325
91 2021-03-31 46648.05822011224
92 2021-04-01 38251.20061495644
93 2021-04-02 54968.95147105346
94 2021-04-03 39223.33668121346
95 2021-04-04 55196.72314245463
96 2021-04-05 60193.96623402014
97 2021-04-06 107790.97235982082
98 2021-04-07 58927.3553815537
99 2021-04-08 52570.524217849554
100 2021-04-09 40996.74684261808
101 2021-04-10 52952.91853803685
102 2021-04-11 55117.279622249654
103 2021-04-12 62330.90239991735
104 2021-04-13 60352.159875666686
105 2021-04-14 46481.1929993728
106 2021-04-15 26740.04853400801
107 2021-04-16 58824.75809726865
108 2021-04-17 48919.848176294996
109 2021-04-18 69164.97343682637
110 2021-04-19 65052.99346838036
111 2021-04-20 86948.6316872793
112 2021-04-21 47600.922050548594
113 2021-04-22 53629.43407349051
114 2021-04-23 58802.85640700405
115 2021-04-24 27277.291629712032
116 2021-04-25 72991.08369503866
117 2021-04-26 46319.17825995694
118 2021-04-27 42473.64434623195
119 2021-04-28 62986.327912551824
120 2021-04-29 59770.868769586974
121 2021-04-30 46967.110213491585
122 2021-05-01 31283.252270527257
123 2021-05-02 45270.96133039481
124 2021-05-03 40200.06151139432
125 2021-05-04 28769.438869243786
126 2021-05-05 41597.284397045456
127 2021-05-06 42053.59694349442
128 2021-05-07 32056.90063878994
129 2021-05-08 24126.23251230451
130 2021-05-09 61874.94040944404
131 2021-05-10 69582.18210731493
132 2021-05-11 54713.709988929106
133 2021-05-12 77986.61766717135
134 2021-05-13 51047.031274850284
135 2021-05-14 59715.32807151039
136 2021-05-15 73688.19223261088
137 2021-05-16 65807.03078052355
138 2021-05-17 55779.76069593255
139 2021-05-18 53655.30817237868
140 2021-05-19 53863.25586084147
141 2021-05-20 42447.86518825701
142 2021-05-21 34634.185379985654
143 2021-05-22 81385.8091352819
144 2021-05-23 53674.49856663084
145 2021-05-24 32130.44754196027
146 2021-05-25 35141.955123039676
147 2021-05-26 35379.77494659018
148 2021-05-27 47723.22357446625
149 2021-05-28 50903.4531491154
150 2021-05-29 52597.71388776773
151 2021-05-30 37762.845725518426
152 2021-05-31 31687.345250434668
153 2021-06-01 1380.9898989639114
154 2021-06-02 39384.958015718286
155 2021-06-03 62407.74873554036
156 2021-06-04 65856.83339328374
157 2021-06-05 41159.52864583683
158 2021-06-06 78292.78851815795
159 2021-06-07 45085.067801033474
160 2021-06-08 63969.20178674298
161 2021-06-09 61865.47920564571
162 2021-06-10 66481.65277980786
163 2021-06-11 51663.83884564799
164 2021-06-12 49462.60941335073
165 2021-06-13 48907.56631014691
166 2021-06-14 27822.17014448859
167 2021-06-15 35277.37023428074
168 2021-06-16 58563.35766039751
169 2021-06-17 62202.644540009576
170 2021-06-18 59361.79725578232
171 2021-06-19 37617.54204811233
172 2021-06-20 84719.87850010264
173 2021-06-21 50153.4959152938
174 2021-06-22 40323.203680923136
175 2021-06-23 34962.05953043287
176 2021-06-24 46613.355492701965
177 2021-06-25 53246.878843729624
178 2021-06-26 38693.95753463766
179 2021-06-27 64529.674857993334
180 2021-06-28 41126.42916746255
181 2021-06-29 71984.7315338233
182 2021-06-30 28888.043384351673
183 2021-07-01 60293.9028556177
184 2021-07-02 49816.29840729628
185 2021-07-03 42812.38643232065
186 2021-07-04 34909.73927750447
187 2021-07-05 37591.53584671515
188 2021-07-06 39469.203591839716
189 2021-07-07 54396.08709948022
190 2021-07-08 28047.275778018222
191 2021-07-09 41834.25913212226
192 2021-07-10 42604.985980117504
193 2021-07-11 57706.78926368313
194 2021-07-12 37965.84096167571
195 2021-07-13 42719.54678256345
196 2021-07-14 36541.18442771253
197 2021-07-15 45179.2123752051
198 2021-07-16 49107.119659072996
199 2021-07-17 28547.87933059051
200 2021-07-18 49714.75688145967
201 2021-07-19 33936.612529083315
202 2021-07-20 72130.34325424329
203 2021-07-21 21218.431770514377
204 2021-07-22 47114.58552828316
205 2021-07-23 62864.89434803029
206 2021-07-24 48265.27576417639
207 2021-07-25 82856.83438714968
208 2021-07-26 71619.09933599173
209 2021-07-27 31313.91831932018
210 2021-07-28 51702.76017876872
211 2021-07-29 51759.91074963173
212 2021-07-30 43399.332699545244
213 2021-07-31 55424.54037571451
214 2021-08-01 42225.94672589529
215 2021-08-02 34807.53319498364
216 2021-08-03 73469.6548372101
217 2021-08-04 27209.4505106898
218 2021-08-05 57237.08622864778
219 2021-08-06 45169.07725691487
220 2021-08-07 51028.44462209041
221 2021-08-08 40990.419651217926
222 2021-08-09 31432.767517597265
223 2021-08-10 46704.92168243732
224 2021-08-11 67447.45628232439
225 2021-08-12 56060.762852218075
226 2021-08-13 36096.04292632875
227 2021-08-14 82159.16133987988
228 2021-08-15 61384.53830739901
229 2021-08-16 42921.0220131585
230 2021-08-17 57574.80918470686
231 2021-08-18 44223.76579375525
232 2021-08-19 38112.188923509486
233 2021-08-20 43302.275718994686
234 2021-08-21 31995.553894163357
235 2021-08-22 51456.16324022061
236 2021-08-23 51376.41164803253
237 2021-08-24 45624.593753100846
238 2021-08-25 46734.78195159169
239 2021-08-26 37565.07483616892
240 2021-08-27 23554.39766955899
241 2021-08-28 20604.948141803365
242 2021-08-29 66334.25895451049
243 2021-08-30 48047.85418448473
244 2021-08-31 56191.71390404747
245 2021-09-01 44859.282252098456
246 2021-09-02 46030.147501430656
247 2021-09-03 10703.823438653832
248 2021-09-04 70343.60042856235
249 2021-09-05 69607.14131423642
250 2021-09-06 56931.55211394906
251 2021-09-07 54663.61348397007
252 2021-09-08 57725.529008129895
253 2021-09-09 53757.39275518815
254 2021-09-10 53480.74906036454
255 2021-09-11 49602.291868261746
256 2021-09-12 52985.895433602054
257 2021-09-13 37411.73715166042
258 2021-09-14 59155.55398150197
259 2021-09-15 21991.02211112378
260 2021-09-16 59508.78533477017
261 2021-09-17 41544.13170794038
262 2021-09-18 46878.16624464087
263 2021-09-19 32469.82943570702
264 2021-09-20 61806.26905613678
265 2021-09-21 56074.725664414334
266 2021-09-22 53483.80545741505
267 2021-09-23 30077.209266523543
268 2021-09-24 73070.54849698953
269 2021-09-25 44118.377703017635
270 2021-09-26 34134.3360656615
271 2021-09-27 61619.510801440054
272 2021-09-28 29334.959480643633
273 2021-09-29 54840.778405071345
274 2021-09-30 54861.25954092192
275 2021-10-01 37666.69406650353
276 2021-10-02 45514.88974301199
277 2021-10-03 37872.595956602185
278 2021-10-04 54862.49528732663
279 2021-10-05 72168.41067112274
280 2021-10-06 58411.76789552352
281 2021-10-07 64450.64193866483
282 2021-10-08 39846.169995410615
283 2021-10-09 51012.92307031886
284 2021-10-10 56193.97181413436
285 2021-10-11 34065.44429410843
286 2021-10-12 58206.460717550566
287 2021-10-13 46487.945645762295
288 2021-10-14 50076.70184963691
289 2021-10-15 47580.71432500986
290 2021-10-16 53915.82908269834
291 2021-10-17 39606.35607109019
292 2021-10-18 73790.25224218029
293 2021-10-19 38407.621781936425
294 2021-10-20 33404.97538990958
295 2021-10-21 59931.9601178157
296 2021-10-22 74486.16955897454
297 2021-10-23 50195.02837816861
298 2021-10-24 40073.20302847418
299 2021-10-25 64626.796001266266
300 2021-10-26 61727.34307665966
301 2021-10-27 62187.88733591297
302 2021-10-28 54214.87801602549
303 2021-10-29 67142.34221772531
304 2021-10-30 46487.69937914996
305 2021-10-31 31086.740684974324
306 2021-11-01 48278.95337799651
307 2021-11-02 20718.68300716247
308 2021-11-03 58138.40065378947
309 2021-11-04 49722.30296011415
310 2021-11-05 36742.138456983004
311 2021-11-06 42736.48890700623
312 2021-11-07 55356.6885726762
313 2021-11-08 81832.3429551895
314 2021-11-09 62338.173681547836
315 2021-11-10 39202.33687407937
316 2021-11-11 62786.50002194336
317 2021-11-12 37726.689751497914
318 2021-11-13 67033.48460270898
319 2021-11-14 55366.81040522425
320 2021-11-15 53898.24191372635
321 2021-11-16 62845.981914852084
322 2021-11-17 33833.82833106041
323 2021-11-18 61076.99869993116
324 2021-11-19 51228.112090794835
325 2021-11-20 55635.47027518508
326 2021-11-21 71803.01115735975
327 2021-11-22 50315.05762449138
328 2021-11-23 60710.007411381375
329 2021-11-24 73249.01607526309
330 2021-11-25 57699.01149670034
331 2021-11-26 46798.292724322295
332 2021-11-27 36359.18817807891
333 2021-11-28 61511.52093729363
334 2021-11-29 39284.72872960448
335 2021-11-30 28462.06773230841
336 2021-12-01 25809.261932155227
337 2021-12-02 59425.1826389642
338 2021-12-03 43014.05369644615
339 2021-12-04 52769.507877984564
340 2021-12-05 56657.291422193426
341 2021-12-06 59175.14433261302
342 2021-12-07 57450.71229516849
343 2021-12-08 25887.75148158159
344 2021-12-09 21300.79633013303
345 2021-12-10 49686.47609053778
346 2021-12-11 50683.5775985572
347 2021-12-12 43090.41843560319
348 2021-12-13 28815.44447997063
349 2021-12-14 31445.73933682877
350 2021-12-15 50964.200286431944
351 2021-12-16 37689.76522472434
352 2021-12-17 39270.444361100475
353 2021-12-18 63767.92920582164
354 2021-12-19 66245.76864762916
355 2021-12-20 64310.02645239804
356 2021-12-21 20186.46628098661
357 2021-12-22 57829.12348425346
358 2021-12-23 61209.40407684893
359 2021-12-24 60229.294569424455
360 2021-12-25 57790.197713617585
361 2021-12-26 59848.30412950744
362 2021-12-27 48843.47435878844
363 2021-12-28 45483.444566160666
364 2021-12-29 45361.81436223178
365 2021-12-30 57103.88645952773
366 2021-12-31 49479.32345442135

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,61 @@
request_date,delivery_date,amount
2021-06-18,2021-06-24,361622.08421162824
2021-04-08,2021-04-17,404943.20818378055
2021-08-02,2021-08-10,372079.3749313439
2021-03-23,2021-03-28,324410.8683704191
2021-07-14,2021-07-19,467167.83305448893
2021-03-02,2021-03-09,280731.9688885999
2021-07-18,2021-07-26,369123.2301230304
2021-02-18,2021-02-27,384645.34262920194
2021-01-21,2021-01-25,310407.1921732673
2021-08-12,2021-08-21,366174.22830054327
2021-11-02,2021-11-09,391623.2685507731
2021-07-13,2021-07-21,345458.2161390513
2021-06-01,2021-06-10,360467.175317622
2021-10-20,2021-10-31,336289.0502818366
2021-07-21,2021-07-29,381876.17957110034
2021-10-06,2021-10-11,314261.8504829489
2021-11-15,2021-11-22,308806.6478588278
2021-09-05,2021-09-14,330698.694265319
2021-12-26,2022-01-04,407311.3676167535
2021-01-16,2021-01-25,214247.55937424488
2021-04-20,2021-04-26,269445.2778637154
2021-01-22,2021-01-27,479246.85314207803
2021-02-02,2021-02-11,347470.77377278876
2021-11-26,2021-12-01,302533.4097257286
2021-08-23,2021-09-01,381700.4232063111
2021-03-31,2021-04-09,277635.5674830633
2021-06-03,2021-06-10,190836.06099482052
2021-06-30,2021-07-07,352714.6964695578
2021-08-10,2021-08-18,281208.5043011291
2021-08-04,2021-08-10,336022.8514088414
2021-01-05,2021-01-10,351041.68228418275
2021-04-29,2021-05-06,338705.4533610672
2021-06-14,2021-06-22,216774.79936204778
2021-06-21,2021-07-01,331075.5096480785
2021-12-01,2021-12-07,358629.8535678753
2021-12-13,2021-12-23,237124.0787089357
2021-12-17,2021-12-22,229278.15299078176
2021-10-17,2021-10-22,258928.96346443848
2021-11-28,2021-12-05,378532.9798112182
2021-06-10,2021-06-16,197717.59182534326
2021-02-22,2021-02-27,384000.6974037471
2021-11-30,2021-12-11,355168.6944729242
2021-02-03,2021-02-10,312383.0537738918
2021-04-13,2021-04-25,231816.99643375044
2021-06-07,2021-06-13,276881.9915723157
2021-12-03,2021-12-07,380847.56715868326
2021-11-29,2021-12-09,412123.5063860729
2021-03-29,2021-04-04,261409.7021051771
2021-01-28,2021-02-05,404557.69495151856
2021-07-04,2021-07-09,374522.25600175356
2021-01-13,2021-01-20,328894.06129062787
2021-09-29,2021-10-04,280742.72595198866
2021-10-18,2021-10-25,291048.90802077635
2021-04-09,2021-04-16,449418.2981764818
2021-04-14,2021-04-22,341098.18303366995
2021-05-08,2021-05-17,416941.3633993643
2021-05-19,2021-05-27,345255.5746514472
2021-07-26,2021-08-03,299525.71274023474
2021-10-24,2021-10-31,367817.7882031555
2021-01-14,2021-01-21,471478.60787775513
1 request_date delivery_date amount
2 2021-06-18 2021-06-24 361622.08421162824
3 2021-04-08 2021-04-17 404943.20818378055
4 2021-08-02 2021-08-10 372079.3749313439
5 2021-03-23 2021-03-28 324410.8683704191
6 2021-07-14 2021-07-19 467167.83305448893
7 2021-03-02 2021-03-09 280731.9688885999
8 2021-07-18 2021-07-26 369123.2301230304
9 2021-02-18 2021-02-27 384645.34262920194
10 2021-01-21 2021-01-25 310407.1921732673
11 2021-08-12 2021-08-21 366174.22830054327
12 2021-11-02 2021-11-09 391623.2685507731
13 2021-07-13 2021-07-21 345458.2161390513
14 2021-06-01 2021-06-10 360467.175317622
15 2021-10-20 2021-10-31 336289.0502818366
16 2021-07-21 2021-07-29 381876.17957110034
17 2021-10-06 2021-10-11 314261.8504829489
18 2021-11-15 2021-11-22 308806.6478588278
19 2021-09-05 2021-09-14 330698.694265319
20 2021-12-26 2022-01-04 407311.3676167535
21 2021-01-16 2021-01-25 214247.55937424488
22 2021-04-20 2021-04-26 269445.2778637154
23 2021-01-22 2021-01-27 479246.85314207803
24 2021-02-02 2021-02-11 347470.77377278876
25 2021-11-26 2021-12-01 302533.4097257286
26 2021-08-23 2021-09-01 381700.4232063111
27 2021-03-31 2021-04-09 277635.5674830633
28 2021-06-03 2021-06-10 190836.06099482052
29 2021-06-30 2021-07-07 352714.6964695578
30 2021-08-10 2021-08-18 281208.5043011291
31 2021-08-04 2021-08-10 336022.8514088414
32 2021-01-05 2021-01-10 351041.68228418275
33 2021-04-29 2021-05-06 338705.4533610672
34 2021-06-14 2021-06-22 216774.79936204778
35 2021-06-21 2021-07-01 331075.5096480785
36 2021-12-01 2021-12-07 358629.8535678753
37 2021-12-13 2021-12-23 237124.0787089357
38 2021-12-17 2021-12-22 229278.15299078176
39 2021-10-17 2021-10-22 258928.96346443848
40 2021-11-28 2021-12-05 378532.9798112182
41 2021-06-10 2021-06-16 197717.59182534326
42 2021-02-22 2021-02-27 384000.6974037471
43 2021-11-30 2021-12-11 355168.6944729242
44 2021-02-03 2021-02-10 312383.0537738918
45 2021-04-13 2021-04-25 231816.99643375044
46 2021-06-07 2021-06-13 276881.9915723157
47 2021-12-03 2021-12-07 380847.56715868326
48 2021-11-29 2021-12-09 412123.5063860729
49 2021-03-29 2021-04-04 261409.7021051771
50 2021-01-28 2021-02-05 404557.69495151856
51 2021-07-04 2021-07-09 374522.25600175356
52 2021-01-13 2021-01-20 328894.06129062787
53 2021-09-29 2021-10-04 280742.72595198866
54 2021-10-18 2021-10-25 291048.90802077635
55 2021-04-09 2021-04-16 449418.2981764818
56 2021-04-14 2021-04-22 341098.18303366995
57 2021-05-08 2021-05-17 416941.3633993643
58 2021-05-19 2021-05-27 345255.5746514472
59 2021-07-26 2021-08-03 299525.71274023474
60 2021-10-24 2021-10-31 367817.7882031555
61 2021-01-14 2021-01-21 471478.60787775513

View file

@ -0,0 +1,366 @@
date,amount_in_stock
2021-01-01,647479.2516513831
2021-01-02,611270.6151648902
2021-01-03,533486.4423972561
2021-01-04,457004.6287930397
2021-01-05,404698.75220385677
2021-01-06,347600.1878352536
2021-01-07,306034.5007738682
2021-01-08,224039.00015402416
2021-01-09,152997.08548998268
2021-01-10,472251.5969659814
2021-01-11,439516.50062731595
2021-01-12,406661.0550947753
2021-01-13,351240.1210121491
2021-01-14,302356.80974864156
2021-01-15,253988.21197549443
2021-01-16,213762.2171895817
2021-01-17,144758.54995178233
2021-01-18,77379.61626667128
2021-01-19,17935.183637817092
2021-01-20,292387.4407724763
2021-01-21,711069.23392869
2021-01-22,680876.0831249541
2021-01-23,618547.5455593257
2021-01-24,574857.225400806
2021-01-25,710652.8900352417
2021-01-26,662858.7507577738
2021-01-27,1090650.664424961
2021-01-28,1026017.4875181256
2021-01-29,958645.8244156246
2021-01-30,907508.7560427187
2021-01-31,845315.8242601342
2021-02-01,782934.5790253138
2021-02-02,720190.5475699984
2021-02-03,668884.8415464258
2021-02-04,616266.1743539482
2021-02-05,968862.7606461754
2021-02-06,913708.4863026484
2021-02-07,873908.8571263258
2021-02-08,808421.8782180586
2021-02-09,753066.6459285829
2021-02-10,1019238.2219733722
2021-02-11,1313576.0418210896
2021-02-12,1282039.0065675988
2021-02-13,1235591.2856686988
2021-02-14,1171860.2539031678
2021-02-15,1117405.48380467
2021-02-16,1076745.9766019788
2021-02-17,1013251.97847048
2021-02-18,958320.7118255846
2021-02-19,930041.9769480445
2021-02-20,893662.3380808627
2021-02-21,831459.5798203176
2021-02-22,776936.3696853134
2021-02-23,734540.5173158804
2021-02-24,691606.0919001552
2021-02-25,640111.3214238406
2021-02-26,595891.025376767
2021-02-27,934221.6023643162
2021-02-28,877114.1085506395
2021-03-01,848141.8744925237
2021-03-02,805093.1398847107
2021-03-03,763587.6058287523
2021-03-04,715661.57034632
2021-03-05,654382.5748560184
2021-03-06,615338.0743317754
2021-03-07,578195.4376780196
2021-03-08,518810.4274615445
2021-03-09,779919.5351500085
2021-03-10,737043.7148174229
2021-03-11,699745.620588449
2021-03-12,646333.721569387
2021-03-13,600987.7229182889
2021-03-14,547776.3167563358
2021-03-15,506801.91593977675
2021-03-16,450776.2401082926
2021-03-17,407818.3558973169
2021-03-18,342353.36305987765
2021-03-19,313724.5858530795
2021-03-20,262851.4550763895
2021-03-21,215636.33972634672
2021-03-22,170653.85826396095
2021-03-23,97808.41041784057
2021-03-24,61151.12686222342
2021-03-25,25218.502460950258
2021-03-26,-65584.03503789403
2021-03-27,-119734.39702784433
2021-03-28,146950.75604798403
2021-03-29,97153.21441905304
2021-03-30,57310.64009173471
2021-03-31,10662.581871622475
2021-04-01,-27588.618743333966
2021-04-02,-82557.57021438742
2021-04-03,-121780.90689560089
2021-04-04,84432.07206712157
2021-04-05,24238.10583310143
2021-04-06,-83552.86652671939
2021-04-07,-142480.2219082731
2021-04-08,-195050.74612612266
2021-04-09,41588.074514322594
2021-04-10,-11364.844023714257
2021-04-11,-66482.1236459639
2021-04-12,-128813.02604588126
2021-04-13,-189165.18592154793
2021-04-14,-235646.37892092072
2021-04-15,-262386.42745492875
2021-04-16,128207.1126242844
2021-04-17,484230.47263176995
2021-04-18,415065.4991949436
2021-04-19,350012.5057265632
2021-04-20,263063.87403928395
2021-04-21,215462.95198873535
2021-04-22,502931.7009489148
2021-04-23,444128.84454191074
2021-04-24,416851.5529121987
2021-04-25,575677.4656509105
2021-04-26,798803.565254669
2021-04-27,756329.9209084371
2021-04-28,693343.5929958853
2021-04-29,633572.7242262983
2021-04-30,586605.6140128067
2021-05-01,555322.3617422794
2021-05-02,510051.40041188453
2021-05-03,469851.3389004902
2021-05-04,441081.9000312464
2021-05-05,399484.615634201
2021-05-06,696136.4720517738
2021-05-07,664079.5714129838
2021-05-08,639953.3389006793
2021-05-09,578078.3984912352
2021-05-10,508496.2163839203
2021-05-11,453782.5063949912
2021-05-12,375795.88872781984
2021-05-13,324748.85745296953
2021-05-14,265033.5293814591
2021-05-15,191345.33714884822
2021-05-16,125538.30636832467
2021-05-17,486699.9090717564
2021-05-18,433044.6008993777
2021-05-19,379181.34503853624
2021-05-20,336733.4798502792
2021-05-21,302099.29447029356
2021-05-22,220713.48533501168
2021-05-23,167038.98676838083
2021-05-24,134908.53922642054
2021-05-25,99766.58410338087
2021-05-26,64386.80915679069
2021-05-27,361919.1602337716
2021-05-28,311015.7070846562
2021-05-29,258417.9931968885
2021-05-30,220655.1474713701
2021-05-31,188967.8022209354
2021-06-01,187586.8123219715
2021-06-02,148201.8543062532
2021-06-03,85794.10557071284
2021-06-04,19937.2721774291
2021-06-05,-21222.25646840773
2021-06-06,-99515.04498656568
2021-06-07,-144600.11278759915
2021-06-08,-208569.31457434213
2021-06-09,-270434.79377998784
2021-06-10,-146080.38556497518
2021-06-11,-197744.22441062317
2021-06-12,-247206.8338239739
2021-06-13,-19232.408561805147
2021-06-14,-47054.57870629374
2021-06-15,-82331.94894057448
2021-06-16,56822.28522437127
2021-06-17,-5380.359315638307
2021-06-18,-64742.15657142063
2021-06-19,-102359.69861953295
2021-06-20,-187079.5771196356
2021-06-21,-237233.0730349294
2021-06-22,-60781.477353804774
2021-06-23,-95743.53688423763
2021-06-24,219265.19183468865
2021-06-25,166018.31299095904
2021-06-26,127324.35545632138
2021-06-27,62794.68059832805
2021-06-28,21668.2514308655
2021-06-29,-50316.4801029578
2021-06-30,-79204.52348730947
2021-07-01,191577.08330515135
2021-07-02,141760.78489785508
2021-07-03,98948.39846553442
2021-07-04,64038.65918802995
2021-07-05,26447.1233413148
2021-07-06,-13022.080250524916
2021-07-07,285296.5291195527
2021-07-08,257249.25334153447
2021-07-09,589937.2502111658
2021-07-10,547332.2642310483
2021-07-11,489625.47496736515
2021-07-12,451659.6340056894
2021-07-13,408940.087223126
2021-07-14,372398.90279541345
2021-07-15,327219.6904202084
2021-07-16,278112.5707611354
2021-07-17,249564.69143054486
2021-07-18,199849.93454908518
2021-07-19,633081.1550744908
2021-07-20,560950.8118202476
2021-07-21,885190.5961887846
2021-07-22,838076.0106605014
2021-07-23,775211.1163124711
2021-07-24,726945.8405482947
2021-07-25,644089.006161145
2021-07-26,941593.1369481836
2021-07-27,910279.2186288635
2021-07-28,858576.4584500947
2021-07-29,1188692.7272715634
2021-07-30,1145293.3945720182
2021-07-31,1089868.8541963038
2021-08-01,1047642.9074704085
2021-08-02,1012835.3742754249
2021-08-03,1238891.4321784496
2021-08-04,1211681.9816677598
2021-08-05,1154444.895439112
2021-08-06,1109275.8181821972
2021-08-07,1058247.3735601068
2021-08-08,1017256.953908889
2021-08-09,985824.1863912917
2021-08-10,1275142.1161176958
2021-08-11,1207694.6598353714
2021-08-12,1151633.8969831534
2021-08-13,1115537.8540568247
2021-08-14,1033378.6927169448
2021-08-15,971994.1544095458
2021-08-16,929073.1323963873
2021-08-17,871498.3232116804
2021-08-18,1108483.0617190541
2021-08-19,1070370.8727955446
2021-08-20,1027068.5970765499
2021-08-21,1361247.2714829298
2021-08-22,1309791.1082427092
2021-08-23,1258414.6965946767
2021-08-24,1212790.1028415759
2021-08-25,1166055.3208899843
2021-08-26,1128490.2460538154
2021-08-27,1104935.8483842565
2021-08-28,1084330.9002424532
2021-08-29,1017996.6412879428
2021-08-30,969948.7871034581
2021-08-31,913757.0731994106
2021-09-01,1250598.2141536232
2021-09-02,1204568.0666521925
2021-09-03,1193864.2432135388
2021-09-04,1123520.6427849764
2021-09-05,1053913.50147074
2021-09-06,996981.9493567909
2021-09-07,942318.3358728208
2021-09-08,884592.806864691
2021-09-09,830835.4141095028
2021-09-10,777354.6650491382
2021-09-11,727752.3731808765
2021-09-12,674766.4777472744
2021-09-13,637354.7405956141
2021-09-14,908897.880879431
2021-09-15,886906.8587683073
2021-09-16,827398.073433537
2021-09-17,785853.9417255967
2021-09-18,738975.7754809558
2021-09-19,706505.9460452488
2021-09-20,644699.676989112
2021-09-21,588624.9513246977
2021-09-22,535141.1458672826
2021-09-23,505063.9366007591
2021-09-24,431993.38810376957
2021-09-25,387875.01040075195
2021-09-26,353740.67433509044
2021-09-27,292121.1635336504
2021-09-28,262786.2040530068
2021-09-29,207945.42564793542
2021-09-30,153084.1661070135
2021-10-01,115417.47204050998
2021-10-02,69902.58229749798
2021-10-03,32029.986340895797
2021-10-04,257910.21700555782
2021-10-05,185741.80633443507
2021-10-06,127330.03843891155
2021-10-07,62879.39650024672
2021-10-08,23033.226504836108
2021-10-09,-27979.69656548275
2021-10-10,-84173.66837961711
2021-10-11,196022.73780922336
2021-10-12,137816.2770916728
2021-10-13,91328.3314459105
2021-10-14,41251.62959627359
2021-10-15,-6329.08472873627
2021-10-16,-60244.91381143461
2021-10-17,-99851.2698825248
2021-10-18,-173641.52212470508
2021-10-19,-212049.14390664152
2021-10-20,-245454.1192965511
2021-10-21,-305386.0794143668
2021-10-22,-120943.28550890283
2021-10-23,-171138.31388707145
2021-10-24,-211211.51691554562
2021-10-25,15210.595103964442
2021-10-26,-46516.747972695215
2021-10-27,-108704.63530860818
2021-10-28,-162919.51332463368
2021-10-29,-230061.855542359
2021-10-30,-276549.55492150894
2021-10-31,60181.492596672266
2021-11-01,11902.539218675753
2021-11-02,-8816.14378848672
2021-11-03,-66954.54444227618
2021-11-04,-116676.84740239033
2021-11-05,-153418.98585937332
2021-11-06,-196155.47476637954
2021-11-07,-251512.16333905573
2021-11-08,-333344.50629424525
2021-11-09,-4059.411425020022
2021-11-10,-43261.74829909939
2021-11-11,-106048.24832104275
2021-11-12,-143774.93807254065
2021-11-13,-210808.42267524963
2021-11-14,-266175.2330804739
2021-11-15,-320073.4749942003
2021-11-16,-382919.4569090524
2021-11-17,-416753.2852401128
2021-11-18,-477830.28394004394
2021-11-19,-529058.3960308388
2021-11-20,-584693.8663060239
2021-11-21,-656496.8774633836
2021-11-22,-398005.2872290472
2021-11-23,-458715.2946404286
2021-11-24,-531964.3107156917
2021-11-25,-589663.322212392
2021-11-26,-636461.6149367143
2021-11-27,-672820.8031147933
2021-11-28,-734332.3240520869
2021-11-29,-773617.0527816914
2021-11-30,-802079.1205139998
2021-12-01,-525354.9727204265
2021-12-02,-584780.1553593907
2021-12-03,-627794.2090558368
2021-12-04,-680563.7169338213
2021-12-05,-358688.0285447965
2021-12-06,-417863.17287740955
2021-12-07,-94466.31801389478
2021-12-08,-120354.06949547637
2021-12-09,270468.6405604635
2021-12-10,220782.1644699257
2021-12-11,525267.2813442927
2021-12-12,482176.8629086895
2021-12-13,453361.41842871887
2021-12-14,421915.6790918901
2021-12-15,370951.4788054582
2021-12-16,333261.71358073386
2021-12-17,293991.26921963337
2021-12-18,230223.3400138117
2021-12-19,163977.57136618256
2021-12-20,99667.54491378451
2021-12-21,79481.0786327979
2021-12-22,250930.1081393262
2021-12-23,426844.782771413
2021-12-24,366615.4882019885
2021-12-25,308825.2904883709
2021-12-26,248976.98635886348
2021-12-27,200133.51200007505
2021-12-28,154650.06743391437
2021-12-29,109288.25307168259
2021-12-30,52184.36661215486
2021-12-31,2705.043157733511
1 date amount_in_stock
2 2021-01-01 647479.2516513831
3 2021-01-02 611270.6151648902
4 2021-01-03 533486.4423972561
5 2021-01-04 457004.6287930397
6 2021-01-05 404698.75220385677
7 2021-01-06 347600.1878352536
8 2021-01-07 306034.5007738682
9 2021-01-08 224039.00015402416
10 2021-01-09 152997.08548998268
11 2021-01-10 472251.5969659814
12 2021-01-11 439516.50062731595
13 2021-01-12 406661.0550947753
14 2021-01-13 351240.1210121491
15 2021-01-14 302356.80974864156
16 2021-01-15 253988.21197549443
17 2021-01-16 213762.2171895817
18 2021-01-17 144758.54995178233
19 2021-01-18 77379.61626667128
20 2021-01-19 17935.183637817092
21 2021-01-20 292387.4407724763
22 2021-01-21 711069.23392869
23 2021-01-22 680876.0831249541
24 2021-01-23 618547.5455593257
25 2021-01-24 574857.225400806
26 2021-01-25 710652.8900352417
27 2021-01-26 662858.7507577738
28 2021-01-27 1090650.664424961
29 2021-01-28 1026017.4875181256
30 2021-01-29 958645.8244156246
31 2021-01-30 907508.7560427187
32 2021-01-31 845315.8242601342
33 2021-02-01 782934.5790253138
34 2021-02-02 720190.5475699984
35 2021-02-03 668884.8415464258
36 2021-02-04 616266.1743539482
37 2021-02-05 968862.7606461754
38 2021-02-06 913708.4863026484
39 2021-02-07 873908.8571263258
40 2021-02-08 808421.8782180586
41 2021-02-09 753066.6459285829
42 2021-02-10 1019238.2219733722
43 2021-02-11 1313576.0418210896
44 2021-02-12 1282039.0065675988
45 2021-02-13 1235591.2856686988
46 2021-02-14 1171860.2539031678
47 2021-02-15 1117405.48380467
48 2021-02-16 1076745.9766019788
49 2021-02-17 1013251.97847048
50 2021-02-18 958320.7118255846
51 2021-02-19 930041.9769480445
52 2021-02-20 893662.3380808627
53 2021-02-21 831459.5798203176
54 2021-02-22 776936.3696853134
55 2021-02-23 734540.5173158804
56 2021-02-24 691606.0919001552
57 2021-02-25 640111.3214238406
58 2021-02-26 595891.025376767
59 2021-02-27 934221.6023643162
60 2021-02-28 877114.1085506395
61 2021-03-01 848141.8744925237
62 2021-03-02 805093.1398847107
63 2021-03-03 763587.6058287523
64 2021-03-04 715661.57034632
65 2021-03-05 654382.5748560184
66 2021-03-06 615338.0743317754
67 2021-03-07 578195.4376780196
68 2021-03-08 518810.4274615445
69 2021-03-09 779919.5351500085
70 2021-03-10 737043.7148174229
71 2021-03-11 699745.620588449
72 2021-03-12 646333.721569387
73 2021-03-13 600987.7229182889
74 2021-03-14 547776.3167563358
75 2021-03-15 506801.91593977675
76 2021-03-16 450776.2401082926
77 2021-03-17 407818.3558973169
78 2021-03-18 342353.36305987765
79 2021-03-19 313724.5858530795
80 2021-03-20 262851.4550763895
81 2021-03-21 215636.33972634672
82 2021-03-22 170653.85826396095
83 2021-03-23 97808.41041784057
84 2021-03-24 61151.12686222342
85 2021-03-25 25218.502460950258
86 2021-03-26 -65584.03503789403
87 2021-03-27 -119734.39702784433
88 2021-03-28 146950.75604798403
89 2021-03-29 97153.21441905304
90 2021-03-30 57310.64009173471
91 2021-03-31 10662.581871622475
92 2021-04-01 -27588.618743333966
93 2021-04-02 -82557.57021438742
94 2021-04-03 -121780.90689560089
95 2021-04-04 84432.07206712157
96 2021-04-05 24238.10583310143
97 2021-04-06 -83552.86652671939
98 2021-04-07 -142480.2219082731
99 2021-04-08 -195050.74612612266
100 2021-04-09 41588.074514322594
101 2021-04-10 -11364.844023714257
102 2021-04-11 -66482.1236459639
103 2021-04-12 -128813.02604588126
104 2021-04-13 -189165.18592154793
105 2021-04-14 -235646.37892092072
106 2021-04-15 -262386.42745492875
107 2021-04-16 128207.1126242844
108 2021-04-17 484230.47263176995
109 2021-04-18 415065.4991949436
110 2021-04-19 350012.5057265632
111 2021-04-20 263063.87403928395
112 2021-04-21 215462.95198873535
113 2021-04-22 502931.7009489148
114 2021-04-23 444128.84454191074
115 2021-04-24 416851.5529121987
116 2021-04-25 575677.4656509105
117 2021-04-26 798803.565254669
118 2021-04-27 756329.9209084371
119 2021-04-28 693343.5929958853
120 2021-04-29 633572.7242262983
121 2021-04-30 586605.6140128067
122 2021-05-01 555322.3617422794
123 2021-05-02 510051.40041188453
124 2021-05-03 469851.3389004902
125 2021-05-04 441081.9000312464
126 2021-05-05 399484.615634201
127 2021-05-06 696136.4720517738
128 2021-05-07 664079.5714129838
129 2021-05-08 639953.3389006793
130 2021-05-09 578078.3984912352
131 2021-05-10 508496.2163839203
132 2021-05-11 453782.5063949912
133 2021-05-12 375795.88872781984
134 2021-05-13 324748.85745296953
135 2021-05-14 265033.5293814591
136 2021-05-15 191345.33714884822
137 2021-05-16 125538.30636832467
138 2021-05-17 486699.9090717564
139 2021-05-18 433044.6008993777
140 2021-05-19 379181.34503853624
141 2021-05-20 336733.4798502792
142 2021-05-21 302099.29447029356
143 2021-05-22 220713.48533501168
144 2021-05-23 167038.98676838083
145 2021-05-24 134908.53922642054
146 2021-05-25 99766.58410338087
147 2021-05-26 64386.80915679069
148 2021-05-27 361919.1602337716
149 2021-05-28 311015.7070846562
150 2021-05-29 258417.9931968885
151 2021-05-30 220655.1474713701
152 2021-05-31 188967.8022209354
153 2021-06-01 187586.8123219715
154 2021-06-02 148201.8543062532
155 2021-06-03 85794.10557071284
156 2021-06-04 19937.2721774291
157 2021-06-05 -21222.25646840773
158 2021-06-06 -99515.04498656568
159 2021-06-07 -144600.11278759915
160 2021-06-08 -208569.31457434213
161 2021-06-09 -270434.79377998784
162 2021-06-10 -146080.38556497518
163 2021-06-11 -197744.22441062317
164 2021-06-12 -247206.8338239739
165 2021-06-13 -19232.408561805147
166 2021-06-14 -47054.57870629374
167 2021-06-15 -82331.94894057448
168 2021-06-16 56822.28522437127
169 2021-06-17 -5380.359315638307
170 2021-06-18 -64742.15657142063
171 2021-06-19 -102359.69861953295
172 2021-06-20 -187079.5771196356
173 2021-06-21 -237233.0730349294
174 2021-06-22 -60781.477353804774
175 2021-06-23 -95743.53688423763
176 2021-06-24 219265.19183468865
177 2021-06-25 166018.31299095904
178 2021-06-26 127324.35545632138
179 2021-06-27 62794.68059832805
180 2021-06-28 21668.2514308655
181 2021-06-29 -50316.4801029578
182 2021-06-30 -79204.52348730947
183 2021-07-01 191577.08330515135
184 2021-07-02 141760.78489785508
185 2021-07-03 98948.39846553442
186 2021-07-04 64038.65918802995
187 2021-07-05 26447.1233413148
188 2021-07-06 -13022.080250524916
189 2021-07-07 285296.5291195527
190 2021-07-08 257249.25334153447
191 2021-07-09 589937.2502111658
192 2021-07-10 547332.2642310483
193 2021-07-11 489625.47496736515
194 2021-07-12 451659.6340056894
195 2021-07-13 408940.087223126
196 2021-07-14 372398.90279541345
197 2021-07-15 327219.6904202084
198 2021-07-16 278112.5707611354
199 2021-07-17 249564.69143054486
200 2021-07-18 199849.93454908518
201 2021-07-19 633081.1550744908
202 2021-07-20 560950.8118202476
203 2021-07-21 885190.5961887846
204 2021-07-22 838076.0106605014
205 2021-07-23 775211.1163124711
206 2021-07-24 726945.8405482947
207 2021-07-25 644089.006161145
208 2021-07-26 941593.1369481836
209 2021-07-27 910279.2186288635
210 2021-07-28 858576.4584500947
211 2021-07-29 1188692.7272715634
212 2021-07-30 1145293.3945720182
213 2021-07-31 1089868.8541963038
214 2021-08-01 1047642.9074704085
215 2021-08-02 1012835.3742754249
216 2021-08-03 1238891.4321784496
217 2021-08-04 1211681.9816677598
218 2021-08-05 1154444.895439112
219 2021-08-06 1109275.8181821972
220 2021-08-07 1058247.3735601068
221 2021-08-08 1017256.953908889
222 2021-08-09 985824.1863912917
223 2021-08-10 1275142.1161176958
224 2021-08-11 1207694.6598353714
225 2021-08-12 1151633.8969831534
226 2021-08-13 1115537.8540568247
227 2021-08-14 1033378.6927169448
228 2021-08-15 971994.1544095458
229 2021-08-16 929073.1323963873
230 2021-08-17 871498.3232116804
231 2021-08-18 1108483.0617190541
232 2021-08-19 1070370.8727955446
233 2021-08-20 1027068.5970765499
234 2021-08-21 1361247.2714829298
235 2021-08-22 1309791.1082427092
236 2021-08-23 1258414.6965946767
237 2021-08-24 1212790.1028415759
238 2021-08-25 1166055.3208899843
239 2021-08-26 1128490.2460538154
240 2021-08-27 1104935.8483842565
241 2021-08-28 1084330.9002424532
242 2021-08-29 1017996.6412879428
243 2021-08-30 969948.7871034581
244 2021-08-31 913757.0731994106
245 2021-09-01 1250598.2141536232
246 2021-09-02 1204568.0666521925
247 2021-09-03 1193864.2432135388
248 2021-09-04 1123520.6427849764
249 2021-09-05 1053913.50147074
250 2021-09-06 996981.9493567909
251 2021-09-07 942318.3358728208
252 2021-09-08 884592.806864691
253 2021-09-09 830835.4141095028
254 2021-09-10 777354.6650491382
255 2021-09-11 727752.3731808765
256 2021-09-12 674766.4777472744
257 2021-09-13 637354.7405956141
258 2021-09-14 908897.880879431
259 2021-09-15 886906.8587683073
260 2021-09-16 827398.073433537
261 2021-09-17 785853.9417255967
262 2021-09-18 738975.7754809558
263 2021-09-19 706505.9460452488
264 2021-09-20 644699.676989112
265 2021-09-21 588624.9513246977
266 2021-09-22 535141.1458672826
267 2021-09-23 505063.9366007591
268 2021-09-24 431993.38810376957
269 2021-09-25 387875.01040075195
270 2021-09-26 353740.67433509044
271 2021-09-27 292121.1635336504
272 2021-09-28 262786.2040530068
273 2021-09-29 207945.42564793542
274 2021-09-30 153084.1661070135
275 2021-10-01 115417.47204050998
276 2021-10-02 69902.58229749798
277 2021-10-03 32029.986340895797
278 2021-10-04 257910.21700555782
279 2021-10-05 185741.80633443507
280 2021-10-06 127330.03843891155
281 2021-10-07 62879.39650024672
282 2021-10-08 23033.226504836108
283 2021-10-09 -27979.69656548275
284 2021-10-10 -84173.66837961711
285 2021-10-11 196022.73780922336
286 2021-10-12 137816.2770916728
287 2021-10-13 91328.3314459105
288 2021-10-14 41251.62959627359
289 2021-10-15 -6329.08472873627
290 2021-10-16 -60244.91381143461
291 2021-10-17 -99851.2698825248
292 2021-10-18 -173641.52212470508
293 2021-10-19 -212049.14390664152
294 2021-10-20 -245454.1192965511
295 2021-10-21 -305386.0794143668
296 2021-10-22 -120943.28550890283
297 2021-10-23 -171138.31388707145
298 2021-10-24 -211211.51691554562
299 2021-10-25 15210.595103964442
300 2021-10-26 -46516.747972695215
301 2021-10-27 -108704.63530860818
302 2021-10-28 -162919.51332463368
303 2021-10-29 -230061.855542359
304 2021-10-30 -276549.55492150894
305 2021-10-31 60181.492596672266
306 2021-11-01 11902.539218675753
307 2021-11-02 -8816.14378848672
308 2021-11-03 -66954.54444227618
309 2021-11-04 -116676.84740239033
310 2021-11-05 -153418.98585937332
311 2021-11-06 -196155.47476637954
312 2021-11-07 -251512.16333905573
313 2021-11-08 -333344.50629424525
314 2021-11-09 -4059.411425020022
315 2021-11-10 -43261.74829909939
316 2021-11-11 -106048.24832104275
317 2021-11-12 -143774.93807254065
318 2021-11-13 -210808.42267524963
319 2021-11-14 -266175.2330804739
320 2021-11-15 -320073.4749942003
321 2021-11-16 -382919.4569090524
322 2021-11-17 -416753.2852401128
323 2021-11-18 -477830.28394004394
324 2021-11-19 -529058.3960308388
325 2021-11-20 -584693.8663060239
326 2021-11-21 -656496.8774633836
327 2021-11-22 -398005.2872290472
328 2021-11-23 -458715.2946404286
329 2021-11-24 -531964.3107156917
330 2021-11-25 -589663.322212392
331 2021-11-26 -636461.6149367143
332 2021-11-27 -672820.8031147933
333 2021-11-28 -734332.3240520869
334 2021-11-29 -773617.0527816914
335 2021-11-30 -802079.1205139998
336 2021-12-01 -525354.9727204265
337 2021-12-02 -584780.1553593907
338 2021-12-03 -627794.2090558368
339 2021-12-04 -680563.7169338213
340 2021-12-05 -358688.0285447965
341 2021-12-06 -417863.17287740955
342 2021-12-07 -94466.31801389478
343 2021-12-08 -120354.06949547637
344 2021-12-09 270468.6405604635
345 2021-12-10 220782.1644699257
346 2021-12-11 525267.2813442927
347 2021-12-12 482176.8629086895
348 2021-12-13 453361.41842871887
349 2021-12-14 421915.6790918901
350 2021-12-15 370951.4788054582
351 2021-12-16 333261.71358073386
352 2021-12-17 293991.26921963337
353 2021-12-18 230223.3400138117
354 2021-12-19 163977.57136618256
355 2021-12-20 99667.54491378451
356 2021-12-21 79481.0786327979
357 2021-12-22 250930.1081393262
358 2021-12-23 426844.782771413
359 2021-12-24 366615.4882019885
360 2021-12-25 308825.2904883709
361 2021-12-26 248976.98635886348
362 2021-12-27 200133.51200007505
363 2021-12-28 154650.06743391437
364 2021-12-29 109288.25307168259
365 2021-12-30 52184.36661215486
366 2021-12-31 2705.043157733511

View file

@ -0,0 +1,10 @@
reorder_point_factor,purchase_size_factor,service_level_mean,service_level_median,service_level_std,service_level_count,mean_stock_level_mean,mean_stock_level_median,mean_stock_level_std,mean_stock_level_count,purchase_order_count_mean,purchase_order_count_median,purchase_order_count_std,purchase_order_count_count
0.8,0.8,0.0684931506849315,0.0726027397260274,0.0222201370969798,10,-1594714.1742160032,-1530433.4046675265,285066.2951297739,10,50.2,50.0,1.3984117975602024,10
0.8,1.0,0.5816438356164383,0.6520547945205479,0.25980427056171707,10,-20433.232547621035,66493.16878082216,231209.05072598366,10,49.4,49.5,0.9660917830792962,10
0.8,1.2,0.9356164383561645,0.9534246575342465,0.040805672352052756,10,260408.40724531026,264591.4202889103,34451.38595202987,10,42.5,42.5,0.5270462766947288,10
1.0,0.8,0.11863013698630136,0.10547945205479452,0.06135803865213693,10,-1360077.266559611,-1421026.0243578043,341686.4813035888,10,50.7,50.5,1.3374935098492577,10
1.0,1.0,0.6550684931506849,0.7821917808219179,0.2787601486044031,10,63898.06455496148,158892.80360797068,215553.80705682412,10,49.3,49.5,1.1595018087284057,10
1.0,1.2,0.9904109589041095,0.9945205479452055,0.011854570763239407,10,360626.1147252074,359297.0984386411,24074.260208145475,10,42.1,42.0,0.5676462121975469,10
1.2,0.8,0.14684931506849314,0.11095890410958904,0.1127785478486988,10,-1471541.3243492458,-1590944.9289921233,402072.5562878826,10,50.1,50.5,1.7919573407620821,10
1.2,1.0,0.8868493150684932,0.963013698630137,0.15021679044253444,10,289885.33637142787,340960.57915301056,116064.12202102688,10,49.9,50.0,0.7378647873726214,10
1.2,1.2,0.996986301369863,1.0,0.007126799274932135,10,464072.69404238986,464252.8407907331,35729.24312964791,10,42.0,42.0,0.6666666666666669,10
1 reorder_point_factor purchase_size_factor service_level_mean service_level_median service_level_std service_level_count mean_stock_level_mean mean_stock_level_median mean_stock_level_std mean_stock_level_count purchase_order_count_mean purchase_order_count_median purchase_order_count_std purchase_order_count_count
2 0.8 0.8 0.0684931506849315 0.0726027397260274 0.0222201370969798 10 -1594714.1742160032 -1530433.4046675265 285066.2951297739 10 50.2 50.0 1.3984117975602024 10
3 0.8 1.0 0.5816438356164383 0.6520547945205479 0.25980427056171707 10 -20433.232547621035 66493.16878082216 231209.05072598366 10 49.4 49.5 0.9660917830792962 10
4 0.8 1.2 0.9356164383561645 0.9534246575342465 0.040805672352052756 10 260408.40724531026 264591.4202889103 34451.38595202987 10 42.5 42.5 0.5270462766947288 10
5 1.0 0.8 0.11863013698630136 0.10547945205479452 0.06135803865213693 10 -1360077.266559611 -1421026.0243578043 341686.4813035888 10 50.7 50.5 1.3374935098492577 10
6 1.0 1.0 0.6550684931506849 0.7821917808219179 0.2787601486044031 10 63898.06455496148 158892.80360797068 215553.80705682412 10 49.3 49.5 1.1595018087284057 10
7 1.0 1.2 0.9904109589041095 0.9945205479452055 0.011854570763239407 10 360626.1147252074 359297.0984386411 24074.260208145475 10 42.1 42.0 0.5676462121975469 10
8 1.2 0.8 0.14684931506849314 0.11095890410958904 0.1127785478486988 10 -1471541.3243492458 -1590944.9289921233 402072.5562878826 10 50.1 50.5 1.7919573407620821 10
9 1.2 1.0 0.8868493150684932 0.963013698630137 0.15021679044253444 10 289885.33637142787 340960.57915301056 116064.12202102688 10 49.9 50.0 0.7378647873726214 10
10 1.2 1.2 0.996986301369863 1.0 0.007126799274932135 10 464072.69404238986 464252.8407907331 35729.24312964791 10 42.0 42.0 0.6666666666666669 10

View file

@ -0,0 +1,26 @@
reorder_point_factor,purchase_size_factor,service_level_mean,service_level_median,service_level_std,service_level_count,mean_stock_level_mean,mean_stock_level_median,mean_stock_level_std,mean_stock_level_count,purchase_order_count_mean,purchase_order_count_median,purchase_order_count_std,purchase_order_count_count
0.8,1.0,0.5629041095890411,0.5630136986301371,0.25173917949278124,100,-17208.65752949769,31032.43630715287,200730.55535889775,100,49.05,49.0,1.166666666666668,100
0.8,1.05,0.804986301369863,0.8452054794520547,0.14385248604678155,100,155614.19545368513,176960.00812669177,89250.77498164216,100,47.39,47.0,0.7900262110470866,100
0.8,1.1,0.8659726027397261,0.8876712328767123,0.09160908657556802,100,198680.3804320387,207071.20423920936,54616.27896318188,100,45.45,45.0,0.7017294652672376,100
0.8,1.15,0.924082191780822,0.9342465753424658,0.042773373946112477,100,240782.04918482568,243459.64652624974,29223.097332241305,100,43.46,43.5,0.7305733185227711,100
0.8,1.2,0.9414794520547946,0.9493150684931506,0.03451593530365504,100,261676.29869938738,264285.581551831,25131.022316170343,100,41.83,42.0,0.6971080231639825,100
0.9,1.0,0.6648493150684932,0.6945205479452055,0.21570939170830844,100,73024.72198996953,104935.78104756039,163647.97407003478,100,49.32,49.0,0.8862587350511948,100
0.9,1.05,0.8186575342465754,0.8753424657534246,0.16907143140798406,100,182114.7427397742,214236.05435841338,108978.10420990313,100,47.46,47.0,0.9147500624584167,100
0.9,1.1,0.9226849315068493,0.9397260273972603,0.06860053019119008,100,257549.83941332222,264802.2368256551,46594.05059506942,100,45.65,46.0,0.7833494518006421,100
0.9,1.15,0.9611506849315069,0.9726027397260274,0.040083238669095175,100,297073.0555063267,302993.9769790715,33827.59431750586,100,43.63,44.0,0.7057484028184599,100
0.9,1.2,0.9742739726027397,0.9808219178082191,0.020594090521446923,100,316243.2068669456,319849.0246099904,23997.41545045925,100,42.05,42.0,0.6871842709362761,100
1.0,1.0,0.6921643835616439,0.7698630136986302,0.2448481301495943,100,101882.22346645949,160026.78900577017,180014.0847194441,100,49.41,49.0,1.0739806066379143,100
1.0,1.05,0.8867945205479453,0.936986301369863,0.1266759950750295,100,246218.68552190147,273469.8906422792,85390.22913704212,100,47.72,48.0,0.7923880286064316,100
1.0,1.1,0.9432054794520548,0.9698630136986301,0.07141874718689835,100,301924.2700638766,316299.9013534653,59963.75704883238,100,45.76,46.0,0.7123726184201268,100
1.0,1.15,0.9764109589041096,0.9863013698630136,0.02872101571594946,100,340290.7186400273,343600.27244723897,34849.39399657999,100,43.88,44.0,0.7286350876186868,100
1.0,1.2,0.9906575342465753,0.9945205479452055,0.0113001726894409,100,369036.41037286026,371895.01996879186,24001.498220542777,100,42.05,42.0,0.6256309946079575,100
1.1,1.0,0.7282465753424657,0.7479452054794521,0.2260275046018253,100,139083.56089769275,162758.51029021217,168922.45751711642,100,49.45,49.5,1.0576799462440758,100
1.1,1.05,0.9035068493150685,0.9671232876712329,0.16213843415295967,100,289746.11535166804,320941.33405487105,114866.00516221055,100,47.71,48.0,0.7951240294584386,100
1.1,1.1,0.9613698630136986,0.989041095890411,0.0655565291501118,100,350031.4173621522,367119.16888596804,60281.0758667702,100,45.9,46.0,0.7719841941125448,100
1.1,1.15,0.9912054794520548,0.9972602739726028,0.017645347308402025,100,396603.9442134802,400346.3145094304,29483.57515994371,100,44.0,44.0,0.7247430753394793,100
1.1,1.2,0.9956164383561643,1.0,0.007052473418545561,100,417138.91165137023,418615.9689806167,23055.605401908946,100,42.1,42.0,0.6741998624632427,100
1.2,1.0,0.7846575342465754,0.8698630136986301,0.2252867428579435,100,193695.8595228242,242047.6119066357,194075.09374543617,100,49.79,50.0,1.121822110891404,100
1.2,1.05,0.9479178082191781,0.9780821917808219,0.09026491930718351,100,346443.9102815047,358689.5454693798,87392.79621129965,100,48.05,48.0,0.7436600722307887,100
1.2,1.1,0.9872602739726026,0.9972602739726028,0.025089991771959474,100,411297.4581000472,416474.64406344807,44380.80426082012,100,46.0,46.0,0.7106690545187017,100
1.2,1.15,0.9916438356164383,1.0,0.022282747753160106,100,441406.6727818038,448100.49807167007,38234.435371301166,100,44.19,44.0,0.7063206700139026,100
1.2,1.2,0.9969589041095891,1.0,0.007179214412726819,100,468382.008571895,474174.00471737224,28487.211871335898,100,42.35,42.0,0.6723244767373897,100
1 reorder_point_factor purchase_size_factor service_level_mean service_level_median service_level_std service_level_count mean_stock_level_mean mean_stock_level_median mean_stock_level_std mean_stock_level_count purchase_order_count_mean purchase_order_count_median purchase_order_count_std purchase_order_count_count
2 0.8 1.0 0.5629041095890411 0.5630136986301371 0.25173917949278124 100 -17208.65752949769 31032.43630715287 200730.55535889775 100 49.05 49.0 1.166666666666668 100
3 0.8 1.05 0.804986301369863 0.8452054794520547 0.14385248604678155 100 155614.19545368513 176960.00812669177 89250.77498164216 100 47.39 47.0 0.7900262110470866 100
4 0.8 1.1 0.8659726027397261 0.8876712328767123 0.09160908657556802 100 198680.3804320387 207071.20423920936 54616.27896318188 100 45.45 45.0 0.7017294652672376 100
5 0.8 1.15 0.924082191780822 0.9342465753424658 0.042773373946112477 100 240782.04918482568 243459.64652624974 29223.097332241305 100 43.46 43.5 0.7305733185227711 100
6 0.8 1.2 0.9414794520547946 0.9493150684931506 0.03451593530365504 100 261676.29869938738 264285.581551831 25131.022316170343 100 41.83 42.0 0.6971080231639825 100
7 0.9 1.0 0.6648493150684932 0.6945205479452055 0.21570939170830844 100 73024.72198996953 104935.78104756039 163647.97407003478 100 49.32 49.0 0.8862587350511948 100
8 0.9 1.05 0.8186575342465754 0.8753424657534246 0.16907143140798406 100 182114.7427397742 214236.05435841338 108978.10420990313 100 47.46 47.0 0.9147500624584167 100
9 0.9 1.1 0.9226849315068493 0.9397260273972603 0.06860053019119008 100 257549.83941332222 264802.2368256551 46594.05059506942 100 45.65 46.0 0.7833494518006421 100
10 0.9 1.15 0.9611506849315069 0.9726027397260274 0.040083238669095175 100 297073.0555063267 302993.9769790715 33827.59431750586 100 43.63 44.0 0.7057484028184599 100
11 0.9 1.2 0.9742739726027397 0.9808219178082191 0.020594090521446923 100 316243.2068669456 319849.0246099904 23997.41545045925 100 42.05 42.0 0.6871842709362761 100
12 1.0 1.0 0.6921643835616439 0.7698630136986302 0.2448481301495943 100 101882.22346645949 160026.78900577017 180014.0847194441 100 49.41 49.0 1.0739806066379143 100
13 1.0 1.05 0.8867945205479453 0.936986301369863 0.1266759950750295 100 246218.68552190147 273469.8906422792 85390.22913704212 100 47.72 48.0 0.7923880286064316 100
14 1.0 1.1 0.9432054794520548 0.9698630136986301 0.07141874718689835 100 301924.2700638766 316299.9013534653 59963.75704883238 100 45.76 46.0 0.7123726184201268 100
15 1.0 1.15 0.9764109589041096 0.9863013698630136 0.02872101571594946 100 340290.7186400273 343600.27244723897 34849.39399657999 100 43.88 44.0 0.7286350876186868 100
16 1.0 1.2 0.9906575342465753 0.9945205479452055 0.0113001726894409 100 369036.41037286026 371895.01996879186 24001.498220542777 100 42.05 42.0 0.6256309946079575 100
17 1.1 1.0 0.7282465753424657 0.7479452054794521 0.2260275046018253 100 139083.56089769275 162758.51029021217 168922.45751711642 100 49.45 49.5 1.0576799462440758 100
18 1.1 1.05 0.9035068493150685 0.9671232876712329 0.16213843415295967 100 289746.11535166804 320941.33405487105 114866.00516221055 100 47.71 48.0 0.7951240294584386 100
19 1.1 1.1 0.9613698630136986 0.989041095890411 0.0655565291501118 100 350031.4173621522 367119.16888596804 60281.0758667702 100 45.9 46.0 0.7719841941125448 100
20 1.1 1.15 0.9912054794520548 0.9972602739726028 0.017645347308402025 100 396603.9442134802 400346.3145094304 29483.57515994371 100 44.0 44.0 0.7247430753394793 100
21 1.1 1.2 0.9956164383561643 1.0 0.007052473418545561 100 417138.91165137023 418615.9689806167 23055.605401908946 100 42.1 42.0 0.6741998624632427 100
22 1.2 1.0 0.7846575342465754 0.8698630136986301 0.2252867428579435 100 193695.8595228242 242047.6119066357 194075.09374543617 100 49.79 50.0 1.121822110891404 100
23 1.2 1.05 0.9479178082191781 0.9780821917808219 0.09026491930718351 100 346443.9102815047 358689.5454693798 87392.79621129965 100 48.05 48.0 0.7436600722307887 100
24 1.2 1.1 0.9872602739726026 0.9972602739726028 0.025089991771959474 100 411297.4581000472 416474.64406344807 44380.80426082012 100 46.0 46.0 0.7106690545187017 100
25 1.2 1.15 0.9916438356164383 1.0 0.022282747753160106 100 441406.6727818038 448100.49807167007 38234.435371301166 100 44.19 44.0 0.7063206700139026 100
26 1.2 1.2 0.9969589041095891 1.0 0.007179214412726819 100 468382.008571895 474174.00471737224 28487.211871335898 100 42.35 42.0 0.6723244767373897 100

View file

@ -0,0 +1,71 @@
reorder_point_factor,purchase_size_factor,service_level_mean,service_level_median,service_level_std,service_level_count,mean_stock_level_mean,mean_stock_level_median,mean_stock_level_std,mean_stock_level_count,purchase_order_count_mean,purchase_order_count_median,purchase_order_count_std,purchase_order_count_count
0.8,1.05,0.7859726027397261,0.8260273972602741,0.1598362225708639,100,144208.47823315178,169318.30356595665,100514.74254469664,100,47.4,47.0,0.8164965809277261,100
0.8,1.06,0.794958904109589,0.8301369863013699,0.1403919914831539,100,153586.2551041631,173418.410864591,78290.88655784576,100,47.11,47.0,0.7371114795831993,100
0.8,1.07,0.8067671232876712,0.8315068493150686,0.1339955549137507,100,161441.590865957,172098.93199610294,72690.59543201819,100,46.56,47.0,0.7291893935852132,100
0.8,1.08,0.8381917808219178,0.8493150684931507,0.10243407881742274,100,180757.48462696798,185912.87023764107,63117.92391789514,100,46.47,46.0,0.7843803447642761,100
0.8,1.09,0.8667671232876712,0.8808219178082193,0.08505385831720369,100,198896.08671044532,205127.32601251808,47198.21828806646,100,45.77,46.0,0.664466064983872,100
0.8,1.1,0.878027397260274,0.9054794520547945,0.09679462977911307,100,207399.79024280803,225251.01385664742,55542.82909581238,100,45.52,46.0,0.7032392583932264,100
0.8,1.11,0.8961643835616439,0.9123287671232877,0.06811908370060707,100,218048.13332393923,226635.2932288471,41083.817034265245,100,45.0,45.0,0.7654139963827331,100
0.8,1.12,0.9054246575342466,0.9178082191780822,0.05473703917338135,100,226233.79870989014,228435.7464824344,33790.75003378518,100,44.75,45.0,0.770346898114313,100
0.8,1.13,0.9113972602739726,0.9219178082191781,0.057722017942900286,100,229820.05176361586,234205.64538325084,37180.29105911812,100,44.41,44.0,0.6371495868001452,100
0.8,1.14,0.9096164383561645,0.9260273972602739,0.06476061395141362,100,229451.0061609741,236898.16887785456,39996.703715484575,100,43.98,44.0,0.6192207550093444,100
0.9,1.05,0.799068493150685,0.8589041095890411,0.17478733730560359,100,170856.8688515813,195706.0585029618,107559.81482477198,100,47.66,48.0,0.7278028371042323,100
0.9,1.06,0.8728493150684932,0.9178082191780822,0.14035816656132336,100,214583.50564701803,237766.20853748685,91537.75933622228,100,47.16,47.0,0.9180567971690441,100
0.9,1.07,0.8863835616438357,0.9246575342465753,0.13202268131162476,100,225962.8131575521,248956.4255873827,87091.59551249178,100,46.85,47.0,0.7703468981143126,100
0.9,1.08,0.8878356164383561,0.9109589041095891,0.1034915126220675,100,231793.74733914566,241230.59100630687,65364.238707012075,100,46.37,46.0,0.7608474807008903,100
0.9,1.09,0.910958904109589,0.9342465753424658,0.0848895391251729,100,247414.19854095648,259646.62831328082,56859.363211731616,100,46.14,46.0,0.829019135649309,100
0.9,1.1,0.9097808219178083,0.936986301369863,0.09263505453625975,100,248051.95584330414,261613.48309493947,62298.32416064076,100,45.61,46.0,0.8027100562117265,100
0.9,1.11,0.9249041095890411,0.9493150684931506,0.06777942231931827,100,259875.5154301237,265650.987470857,44837.543279018144,100,45.24,45.0,0.7123726184201262,100
0.9,1.12,0.9426575342465753,0.958904109589041,0.054991006506983194,100,276332.38956547884,283931.61956175056,40395.41216420654,100,44.78,45.0,0.7327821620165825,100
0.9,1.13,0.9434794520547944,0.9657534246575343,0.05636688915712585,100,277312.20724561514,285598.0109710443,42114.061861274546,100,44.54,44.0,0.6422812876966388,100
0.9,1.14,0.9461369863013698,0.9671232876712329,0.05949943242463646,100,281586.1900728949,292772.94372766616,44568.637852341606,100,44.05,44.0,0.7436600722307894,100
0.95,1.05,0.8504657534246576,0.8876712328767123,0.1426216962196151,100,209502.91100042395,231229.60137442837,98473.14510338863,100,47.62,48.0,0.7885544888073256,100
0.95,1.06,0.8763561643835617,0.9205479452054794,0.13371982345233996,100,232132.86769214022,253984.80407355353,85226.62571623079,100,47.18,47.0,0.7571877794400369,100
0.95,1.07,0.8897534246575343,0.9232876712328767,0.11000276133429772,100,244444.98080390875,258917.87933101476,70323.6063035861,100,46.75,47.0,0.7833494518006393,100
0.95,1.08,0.9206301369863015,0.958904109589041,0.09976094450434589,100,265926.47402984084,283736.9000909083,66614.08688632757,100,46.37,46.0,0.812217316792107,100
0.95,1.09,0.9294794520547945,0.958904109589041,0.08543716778698167,100,274030.97554696375,285147.23292353324,56892.76092575346,100,46.01,46.0,0.7452882297839849,100
0.95,1.1,0.9287123287671233,0.9547945205479451,0.08003250087101145,100,274078.3527874601,283856.4572754771,56690.76457159778,100,45.64,46.0,0.6744994402884967,100
0.95,1.11,0.9364383561643835,0.9561643835616438,0.06526268605058627,100,280881.6829739677,296677.6782650106,49506.88718738129,100,45.34,45.0,0.6391281940932124,100
0.95,1.12,0.9556438356164384,0.973972602739726,0.07386818268433056,100,298727.4002688783,311051.6643517049,55230.95325025695,100,44.94,45.0,0.6327748733981471,100
0.95,1.13,0.9625479452054795,0.9753424657534246,0.03853770121887277,100,303624.8432092603,305964.4471615079,33997.45186113061,100,44.56,45.0,0.6562827673397108,100
0.95,1.14,0.965041095890411,0.9808219178082191,0.04503533313503058,100,309887.30047959444,316649.4679522059,37629.163123648126,100,44.27,44.0,0.6942039987778751,100
1.0,1.05,0.878054794520548,0.9232876712328767,0.12456329754626162,100,239357.93264631205,263694.2998236382,80089.22781996857,100,47.79,48.0,0.8680059581790576,100
1.0,1.06,0.8947123287671234,0.941095890410959,0.1355028323290669,100,255749.40900901722,285246.23294684856,94956.97950416044,100,47.34,47.0,0.7683118053909035,100
1.0,1.07,0.9047945205479452,0.9438356164383561,0.13250530459875723,100,264039.6231237091,286009.00904912734,90347.19839737378,100,46.86,47.0,0.7787584005740479,100
1.0,1.08,0.9243287671232876,0.952054794520548,0.08231970120182112,100,281449.77736003743,293460.12722831377,61529.54372494277,100,46.59,47.0,0.726065917924618,100
1.0,1.09,0.9343013698630136,0.9643835616438357,0.08847012172074435,100,291842.87457335443,304680.33844471246,67944.88567969218,100,45.95,46.0,0.74366007223079,100
1.0,1.1,0.9562739726027396,0.9753424657534246,0.05972417397215357,100,312685.41726779164,317915.94000983867,49197.89880376956,100,45.67,46.0,0.7792122414154682,100
1.0,1.11,0.968958904109589,0.9808219178082191,0.03477533957582285,100,323801.7037949509,331782.3224302352,37926.45459276231,100,45.43,45.0,0.781800563578795,100
1.0,1.12,0.9685479452054794,0.9835616438356164,0.04226908937517442,100,325205.9243724567,337201.9597184559,45250.733446382925,100,44.9,45.0,0.6890192121758836,100
1.0,1.13,0.9677808219178082,0.9808219178082191,0.04733685887394322,100,330657.6603956923,337075.92965660174,42421.01611114322,100,44.6,45.0,0.7247430753394793,100
1.0,1.14,0.9823013698630138,0.9917808219178083,0.02489902195487209,100,346636.5895811218,351643.50356452586,32724.192897340898,100,44.11,44.0,0.6947857747012907,100
1.05,1.05,0.9096712328767123,0.9506849315068493,0.1268551724970295,100,275036.8994307617,290241.47330518905,92189.74314580947,100,47.76,48.0,0.8542230210530327,100
1.05,1.06,0.9146575342465754,0.9561643835616438,0.12009700618062043,100,283383.00552277366,305048.07351176,96246.65543086598,100,47.27,47.0,0.7365631354644712,100
1.05,1.07,0.9413972602739726,0.9698630136986301,0.09003060152571733,100,303722.93403703946,313331.6029302139,73057.08547382594,100,46.91,47.0,0.7533762390570582,100
1.05,1.08,0.9469315068493152,0.9780821917808219,0.0793003279699756,100,317055.4136440441,329838.54958045797,63485.26929871185,100,46.59,47.0,0.7666666666666667,100
1.05,1.09,0.9626575342465753,0.9835616438356164,0.050483002706923574,100,327783.50728198123,337811.29494201415,48868.03042293043,100,46.26,46.0,0.7603826787755086,100
1.05,1.1,0.9624109589041097,0.9794520547945205,0.05435562429151819,100,331620.04862504784,339715.6067690905,51905.17082289278,100,45.78,46.0,0.7464393593398702,100
1.05,1.11,0.9697534246575343,0.989041095890411,0.04971307496436453,100,340227.99533744523,351120.098823712,49956.8593361718,100,45.43,45.0,0.7420283421851632,100
1.05,1.12,0.9702739726027397,0.9863013698630136,0.05158788657894017,100,343659.58516506077,353342.32752993377,44689.97958762292,100,45.05,45.0,0.7299508769967222,100
1.05,1.13,0.9841643835616438,0.9917808219178083,0.021220325968317567,100,362923.71636342397,367782.8510066926,30511.492738523157,100,44.68,45.0,0.7089613971340485,100
1.05,1.14,0.9803287671232878,0.989041095890411,0.03439019008566572,100,358818.66979266173,366030.73615185026,38779.97603060032,100,44.42,44.0,0.6693883835866954,100
1.1,1.05,0.8774520547945205,0.9493150684931506,0.16332896109997266,100,262116.4533938322,307218.83635365096,137001.0438185493,100,47.65,48.0,0.845367650579594,100
1.1,1.06,0.93,0.9575342465753425,0.08998299067660721,100,308184.9288191942,315262.4431269691,76531.77678714157,100,47.33,47.0,0.7114503609961922,100
1.1,1.07,0.9332054794520548,0.9767123287671233,0.1133241844881452,100,316339.8582983121,343388.79801796563,88723.83399772066,100,47.18,47.0,0.7704124567628391,100
1.1,1.08,0.9466849315068494,0.9767123287671233,0.09839032697603153,100,331184.26416084,349136.8427766626,81927.62325661813,100,46.52,47.0,0.8346050901867643,100
1.1,1.09,0.9556164383561644,0.989041095890411,0.10547415073320952,100,344293.7967364825,363724.13265618257,85256.01192642892,100,46.26,46.0,0.7333333333333325,100
1.1,1.1,0.9733150684931507,0.9945205479452055,0.06351837655542099,100,363147.94176298834,374326.82103307196,57145.65533432398,100,45.75,46.0,0.6256309946079563,100
1.1,1.11,0.9746849315068493,0.9917808219178083,0.04402911492630584,100,363388.1927891669,373491.37867364136,49274.54501585131,100,45.5,45.0,0.6435381994422805,100
1.1,1.12,0.9793972602739726,0.9917808219178083,0.03915141511936552,100,370890.05170730536,376338.38252097333,44302.65600471223,100,45.1,45.0,0.7035264706814484,100
1.1,1.13,0.9804109589041096,0.9945205479452055,0.03243412017637617,100,377327.82974791917,381348.09184570936,38488.17279855358,100,44.76,45.0,0.7123726184201263,100
1.1,1.14,0.9886849315068492,0.9945205479452055,0.017334789000443024,100,384809.10717216856,390844.7511152257,31093.991487524258,100,44.51,44.0,0.6589707309451781,100
1.2,1.05,0.9171780821917808,0.9726027397260274,0.13067274741673798,100,322060.45665888296,340538.9200925699,105710.6766863121,100,47.92,48.0,0.8490041700769674,100
1.2,1.06,0.9489041095890411,0.9917808219178083,0.09929085079019878,100,355803.9539068448,384192.0333909353,97019.18401447838,100,47.61,48.0,0.7771353768420244,100
1.2,1.07,0.9564109589041097,0.9917808219178083,0.07656699649287621,100,364057.84548111144,389141.36283888033,75902.53849836365,100,47.31,47.0,0.6918720031095832,100
1.2,1.08,0.9602465753424657,0.989041095890411,0.08505995544913891,100,373446.1741382272,386689.89061583555,83449.85958080231,100,46.81,47.0,0.6918720031095821,100
1.2,1.09,0.9672054794520548,0.9945205479452055,0.08413140089715565,100,390837.72881569655,407689.56891719927,79174.94776761712,100,46.26,46.0,0.7194273817250479,100
1.2,1.1,0.9738356164383561,0.9972602739726028,0.060117001280751294,100,398871.1618030684,414081.79698469874,60975.215674990715,100,46.23,46.0,0.6794977348874467,100
1.2,1.11,0.9765205479452055,0.9972602739726028,0.05166994864627592,100,404329.81311479496,423147.71118130337,66661.79450110722,100,45.64,46.0,0.6744994402884964,100
1.2,1.12,0.9849315068493151,0.9972602739726028,0.04728618617716756,100,424054.9128070699,431696.0971162426,53638.952963032265,100,45.25,45.0,0.7436600722307911,100
1.2,1.13,0.991041095890411,0.9986301369863013,0.018392476408138413,100,428392.03453004366,434494.4380003613,39705.52165661862,100,44.91,45.0,0.6528105515090998,100
1.2,1.14,0.992986301369863,1.0,0.01664151932365369,100,438627.18168542744,445798.6518808934,35926.80443305188,100,44.45,44.0,0.6871842709362769,100
1 reorder_point_factor purchase_size_factor service_level_mean service_level_median service_level_std service_level_count mean_stock_level_mean mean_stock_level_median mean_stock_level_std mean_stock_level_count purchase_order_count_mean purchase_order_count_median purchase_order_count_std purchase_order_count_count
2 0.8 1.05 0.7859726027397261 0.8260273972602741 0.1598362225708639 100 144208.47823315178 169318.30356595665 100514.74254469664 100 47.4 47.0 0.8164965809277261 100
3 0.8 1.06 0.794958904109589 0.8301369863013699 0.1403919914831539 100 153586.2551041631 173418.410864591 78290.88655784576 100 47.11 47.0 0.7371114795831993 100
4 0.8 1.07 0.8067671232876712 0.8315068493150686 0.1339955549137507 100 161441.590865957 172098.93199610294 72690.59543201819 100 46.56 47.0 0.7291893935852132 100
5 0.8 1.08 0.8381917808219178 0.8493150684931507 0.10243407881742274 100 180757.48462696798 185912.87023764107 63117.92391789514 100 46.47 46.0 0.7843803447642761 100
6 0.8 1.09 0.8667671232876712 0.8808219178082193 0.08505385831720369 100 198896.08671044532 205127.32601251808 47198.21828806646 100 45.77 46.0 0.664466064983872 100
7 0.8 1.1 0.878027397260274 0.9054794520547945 0.09679462977911307 100 207399.79024280803 225251.01385664742 55542.82909581238 100 45.52 46.0 0.7032392583932264 100
8 0.8 1.11 0.8961643835616439 0.9123287671232877 0.06811908370060707 100 218048.13332393923 226635.2932288471 41083.817034265245 100 45.0 45.0 0.7654139963827331 100
9 0.8 1.12 0.9054246575342466 0.9178082191780822 0.05473703917338135 100 226233.79870989014 228435.7464824344 33790.75003378518 100 44.75 45.0 0.770346898114313 100
10 0.8 1.13 0.9113972602739726 0.9219178082191781 0.057722017942900286 100 229820.05176361586 234205.64538325084 37180.29105911812 100 44.41 44.0 0.6371495868001452 100
11 0.8 1.14 0.9096164383561645 0.9260273972602739 0.06476061395141362 100 229451.0061609741 236898.16887785456 39996.703715484575 100 43.98 44.0 0.6192207550093444 100
12 0.9 1.05 0.799068493150685 0.8589041095890411 0.17478733730560359 100 170856.8688515813 195706.0585029618 107559.81482477198 100 47.66 48.0 0.7278028371042323 100
13 0.9 1.06 0.8728493150684932 0.9178082191780822 0.14035816656132336 100 214583.50564701803 237766.20853748685 91537.75933622228 100 47.16 47.0 0.9180567971690441 100
14 0.9 1.07 0.8863835616438357 0.9246575342465753 0.13202268131162476 100 225962.8131575521 248956.4255873827 87091.59551249178 100 46.85 47.0 0.7703468981143126 100
15 0.9 1.08 0.8878356164383561 0.9109589041095891 0.1034915126220675 100 231793.74733914566 241230.59100630687 65364.238707012075 100 46.37 46.0 0.7608474807008903 100
16 0.9 1.09 0.910958904109589 0.9342465753424658 0.0848895391251729 100 247414.19854095648 259646.62831328082 56859.363211731616 100 46.14 46.0 0.829019135649309 100
17 0.9 1.1 0.9097808219178083 0.936986301369863 0.09263505453625975 100 248051.95584330414 261613.48309493947 62298.32416064076 100 45.61 46.0 0.8027100562117265 100
18 0.9 1.11 0.9249041095890411 0.9493150684931506 0.06777942231931827 100 259875.5154301237 265650.987470857 44837.543279018144 100 45.24 45.0 0.7123726184201262 100
19 0.9 1.12 0.9426575342465753 0.958904109589041 0.054991006506983194 100 276332.38956547884 283931.61956175056 40395.41216420654 100 44.78 45.0 0.7327821620165825 100
20 0.9 1.13 0.9434794520547944 0.9657534246575343 0.05636688915712585 100 277312.20724561514 285598.0109710443 42114.061861274546 100 44.54 44.0 0.6422812876966388 100
21 0.9 1.14 0.9461369863013698 0.9671232876712329 0.05949943242463646 100 281586.1900728949 292772.94372766616 44568.637852341606 100 44.05 44.0 0.7436600722307894 100
22 0.95 1.05 0.8504657534246576 0.8876712328767123 0.1426216962196151 100 209502.91100042395 231229.60137442837 98473.14510338863 100 47.62 48.0 0.7885544888073256 100
23 0.95 1.06 0.8763561643835617 0.9205479452054794 0.13371982345233996 100 232132.86769214022 253984.80407355353 85226.62571623079 100 47.18 47.0 0.7571877794400369 100
24 0.95 1.07 0.8897534246575343 0.9232876712328767 0.11000276133429772 100 244444.98080390875 258917.87933101476 70323.6063035861 100 46.75 47.0 0.7833494518006393 100
25 0.95 1.08 0.9206301369863015 0.958904109589041 0.09976094450434589 100 265926.47402984084 283736.9000909083 66614.08688632757 100 46.37 46.0 0.812217316792107 100
26 0.95 1.09 0.9294794520547945 0.958904109589041 0.08543716778698167 100 274030.97554696375 285147.23292353324 56892.76092575346 100 46.01 46.0 0.7452882297839849 100
27 0.95 1.1 0.9287123287671233 0.9547945205479451 0.08003250087101145 100 274078.3527874601 283856.4572754771 56690.76457159778 100 45.64 46.0 0.6744994402884967 100
28 0.95 1.11 0.9364383561643835 0.9561643835616438 0.06526268605058627 100 280881.6829739677 296677.6782650106 49506.88718738129 100 45.34 45.0 0.6391281940932124 100
29 0.95 1.12 0.9556438356164384 0.973972602739726 0.07386818268433056 100 298727.4002688783 311051.6643517049 55230.95325025695 100 44.94 45.0 0.6327748733981471 100
30 0.95 1.13 0.9625479452054795 0.9753424657534246 0.03853770121887277 100 303624.8432092603 305964.4471615079 33997.45186113061 100 44.56 45.0 0.6562827673397108 100
31 0.95 1.14 0.965041095890411 0.9808219178082191 0.04503533313503058 100 309887.30047959444 316649.4679522059 37629.163123648126 100 44.27 44.0 0.6942039987778751 100
32 1.0 1.05 0.878054794520548 0.9232876712328767 0.12456329754626162 100 239357.93264631205 263694.2998236382 80089.22781996857 100 47.79 48.0 0.8680059581790576 100
33 1.0 1.06 0.8947123287671234 0.941095890410959 0.1355028323290669 100 255749.40900901722 285246.23294684856 94956.97950416044 100 47.34 47.0 0.7683118053909035 100
34 1.0 1.07 0.9047945205479452 0.9438356164383561 0.13250530459875723 100 264039.6231237091 286009.00904912734 90347.19839737378 100 46.86 47.0 0.7787584005740479 100
35 1.0 1.08 0.9243287671232876 0.952054794520548 0.08231970120182112 100 281449.77736003743 293460.12722831377 61529.54372494277 100 46.59 47.0 0.726065917924618 100
36 1.0 1.09 0.9343013698630136 0.9643835616438357 0.08847012172074435 100 291842.87457335443 304680.33844471246 67944.88567969218 100 45.95 46.0 0.74366007223079 100
37 1.0 1.1 0.9562739726027396 0.9753424657534246 0.05972417397215357 100 312685.41726779164 317915.94000983867 49197.89880376956 100 45.67 46.0 0.7792122414154682 100
38 1.0 1.11 0.968958904109589 0.9808219178082191 0.03477533957582285 100 323801.7037949509 331782.3224302352 37926.45459276231 100 45.43 45.0 0.781800563578795 100
39 1.0 1.12 0.9685479452054794 0.9835616438356164 0.04226908937517442 100 325205.9243724567 337201.9597184559 45250.733446382925 100 44.9 45.0 0.6890192121758836 100
40 1.0 1.13 0.9677808219178082 0.9808219178082191 0.04733685887394322 100 330657.6603956923 337075.92965660174 42421.01611114322 100 44.6 45.0 0.7247430753394793 100
41 1.0 1.14 0.9823013698630138 0.9917808219178083 0.02489902195487209 100 346636.5895811218 351643.50356452586 32724.192897340898 100 44.11 44.0 0.6947857747012907 100
42 1.05 1.05 0.9096712328767123 0.9506849315068493 0.1268551724970295 100 275036.8994307617 290241.47330518905 92189.74314580947 100 47.76 48.0 0.8542230210530327 100
43 1.05 1.06 0.9146575342465754 0.9561643835616438 0.12009700618062043 100 283383.00552277366 305048.07351176 96246.65543086598 100 47.27 47.0 0.7365631354644712 100
44 1.05 1.07 0.9413972602739726 0.9698630136986301 0.09003060152571733 100 303722.93403703946 313331.6029302139 73057.08547382594 100 46.91 47.0 0.7533762390570582 100
45 1.05 1.08 0.9469315068493152 0.9780821917808219 0.0793003279699756 100 317055.4136440441 329838.54958045797 63485.26929871185 100 46.59 47.0 0.7666666666666667 100
46 1.05 1.09 0.9626575342465753 0.9835616438356164 0.050483002706923574 100 327783.50728198123 337811.29494201415 48868.03042293043 100 46.26 46.0 0.7603826787755086 100
47 1.05 1.1 0.9624109589041097 0.9794520547945205 0.05435562429151819 100 331620.04862504784 339715.6067690905 51905.17082289278 100 45.78 46.0 0.7464393593398702 100
48 1.05 1.11 0.9697534246575343 0.989041095890411 0.04971307496436453 100 340227.99533744523 351120.098823712 49956.8593361718 100 45.43 45.0 0.7420283421851632 100
49 1.05 1.12 0.9702739726027397 0.9863013698630136 0.05158788657894017 100 343659.58516506077 353342.32752993377 44689.97958762292 100 45.05 45.0 0.7299508769967222 100
50 1.05 1.13 0.9841643835616438 0.9917808219178083 0.021220325968317567 100 362923.71636342397 367782.8510066926 30511.492738523157 100 44.68 45.0 0.7089613971340485 100
51 1.05 1.14 0.9803287671232878 0.989041095890411 0.03439019008566572 100 358818.66979266173 366030.73615185026 38779.97603060032 100 44.42 44.0 0.6693883835866954 100
52 1.1 1.05 0.8774520547945205 0.9493150684931506 0.16332896109997266 100 262116.4533938322 307218.83635365096 137001.0438185493 100 47.65 48.0 0.845367650579594 100
53 1.1 1.06 0.93 0.9575342465753425 0.08998299067660721 100 308184.9288191942 315262.4431269691 76531.77678714157 100 47.33 47.0 0.7114503609961922 100
54 1.1 1.07 0.9332054794520548 0.9767123287671233 0.1133241844881452 100 316339.8582983121 343388.79801796563 88723.83399772066 100 47.18 47.0 0.7704124567628391 100
55 1.1 1.08 0.9466849315068494 0.9767123287671233 0.09839032697603153 100 331184.26416084 349136.8427766626 81927.62325661813 100 46.52 47.0 0.8346050901867643 100
56 1.1 1.09 0.9556164383561644 0.989041095890411 0.10547415073320952 100 344293.7967364825 363724.13265618257 85256.01192642892 100 46.26 46.0 0.7333333333333325 100
57 1.1 1.1 0.9733150684931507 0.9945205479452055 0.06351837655542099 100 363147.94176298834 374326.82103307196 57145.65533432398 100 45.75 46.0 0.6256309946079563 100
58 1.1 1.11 0.9746849315068493 0.9917808219178083 0.04402911492630584 100 363388.1927891669 373491.37867364136 49274.54501585131 100 45.5 45.0 0.6435381994422805 100
59 1.1 1.12 0.9793972602739726 0.9917808219178083 0.03915141511936552 100 370890.05170730536 376338.38252097333 44302.65600471223 100 45.1 45.0 0.7035264706814484 100
60 1.1 1.13 0.9804109589041096 0.9945205479452055 0.03243412017637617 100 377327.82974791917 381348.09184570936 38488.17279855358 100 44.76 45.0 0.7123726184201263 100
61 1.1 1.14 0.9886849315068492 0.9945205479452055 0.017334789000443024 100 384809.10717216856 390844.7511152257 31093.991487524258 100 44.51 44.0 0.6589707309451781 100
62 1.2 1.05 0.9171780821917808 0.9726027397260274 0.13067274741673798 100 322060.45665888296 340538.9200925699 105710.6766863121 100 47.92 48.0 0.8490041700769674 100
63 1.2 1.06 0.9489041095890411 0.9917808219178083 0.09929085079019878 100 355803.9539068448 384192.0333909353 97019.18401447838 100 47.61 48.0 0.7771353768420244 100
64 1.2 1.07 0.9564109589041097 0.9917808219178083 0.07656699649287621 100 364057.84548111144 389141.36283888033 75902.53849836365 100 47.31 47.0 0.6918720031095832 100
65 1.2 1.08 0.9602465753424657 0.989041095890411 0.08505995544913891 100 373446.1741382272 386689.89061583555 83449.85958080231 100 46.81 47.0 0.6918720031095821 100
66 1.2 1.09 0.9672054794520548 0.9945205479452055 0.08413140089715565 100 390837.72881569655 407689.56891719927 79174.94776761712 100 46.26 46.0 0.7194273817250479 100
67 1.2 1.1 0.9738356164383561 0.9972602739726028 0.060117001280751294 100 398871.1618030684 414081.79698469874 60975.215674990715 100 46.23 46.0 0.6794977348874467 100
68 1.2 1.11 0.9765205479452055 0.9972602739726028 0.05166994864627592 100 404329.81311479496 423147.71118130337 66661.79450110722 100 45.64 46.0 0.6744994402884964 100
69 1.2 1.12 0.9849315068493151 0.9972602739726028 0.04728618617716756 100 424054.9128070699 431696.0971162426 53638.952963032265 100 45.25 45.0 0.7436600722307911 100
70 1.2 1.13 0.991041095890411 0.9986301369863013 0.018392476408138413 100 428392.03453004366 434494.4380003613 39705.52165661862 100 44.91 45.0 0.6528105515090998 100
71 1.2 1.14 0.992986301369863 1.0 0.01664151932365369 100 438627.18168542744 445798.6518808934 35926.80443305188 100 44.45 44.0 0.6871842709362769 100

Binary file not shown.

View file

@ -7,17 +7,17 @@ manufacturing and supply chain organization of Beanie Limited in Europe and
reports directly to Beanie Limited's CEO.
Given Charles role, he gets involved in larger, strategical and long-term
decisions when we compare with Elisa. One of the hot topics that is currently
in Charles mind is the next plan for coffee beans reception in European docks.
Charles' office has reached out to you to prepare a report to assist in this
highly important decision by using optimisation techniques.
decisions when we compare with Elisa's domain. One of the hot topics that is
currently in Charles mind is the next plan for coffee beans reception in
European docks. Charles' office has reached out to you to prepare a report to
assist in this highly important decision by using optimisation techniques.
As you are probably aware, coffee beans are not grown in Europe. World
As you are probably aware of, coffee beans are not grown in Europe. World
production is divided across South/Central America, Africa and South East Asia.
Beanie Limited purchases all of its coffee beans from different providers in
America, mainly in Brasil and Colombia (these two countries account for almost
40% of the world production). Beanie Limited procurement teams execute
purchases with local providers at hose locations and then the coffee beans are
purchases with local providers at those locations and then the coffee beans are
shipped in container cargo ships to European docks.
Docks are a natural bottleneck in supply chains. Dock capacity in europe is
@ -47,7 +47,7 @@ Europe:
- Valencia
- Genoa
In the upcoming months, Charles team must sign contracts with some of these
In the upcoming months, Charles' team must sign contracts with some of these
docks to ensure incoming capacity for the coffee beans coming from America.
This means they will agree with the docks on the expected handled volumes and
thus they must decide with which docks they want to work and how much volume
@ -75,6 +75,9 @@ costs are as low as possible.
- You need to use a Python notebook to solve all levels. A helper notebook is
provided. Please attach a notebook that shows your
solution/proposal/analysis.
- For the areas of the report where you have built an optimization model,
please provide a formal definition of the problem in mathematical terms. This
sould include the target function, decision variables and constraints.
- Include your team number, names and student IDs in all your deliverables.
## Data
@ -84,66 +87,106 @@ A few facts:
- Charles' team estimates that Beanie Limited will need to receive 1,500,000
metric tons of coffee beans in European docks during next year.
- The category being negotiated is 40 feet containers. 40 feet containers have
a a capacity of 66 cubic meters.
a capacity of 66 cubic meters.
- One cubic meter of coffee beans weights approximately 450 kgrs.
Charles' team has shared with you a table with the prices proposed by the
different docks for 40ft containers. You can also find the maximum capacity
that the dock is willing to provide to Beanie Limited (the capacity is
described as a count of 40ft containers).
Charles' team has shared with you a table (prices_and_capacities.csv) with the
next year's prices proposed by the different docks for 40ft containers. You can
also find the maximum capacity that the dock is willing to provide to Beanie
Limited (the capacity is described as a count of 40ft containers).
## Notebook
A notebook with some helping code has been provided. The code contains examples
on how to use `pulp`, a python package for modeling and solving optimization
problems. You can use it to get familiar with how to solve linear, integer and
mixed programming problems.
## Levels
Level 1
### Level 1
Explore historical data and current proposals. Do you think there is a chance
to reduce costs? Why?
Examine the data provided below and current proposals data. Do you think there
is a chance to reduce costs? Why? And will next year's total cost lower?
Level 2
You can assume that last year, around 80% of Beanie Limited's containers
entered through Rotterdam and the remaining 20% through Amsterdam. Total volume
was around 24000 40ft containers. Although they don't have more granular
numbers at hand, Charles mentioned that they had a total expense of 13,700,00€
on docks fees.
### Level 2
With the price and capacity data provided for each dock, Charles would like you
to find out what is the optimal distribution across the different options for
next year. He is expecting you to provide the exact numbers, as well as the
expected costs that would result from your proposal.
Level 3
### Level 3
As it tends to be in these projects, sometimes new information appears in the
middle of the project. Charles' team has reached out to let you know that they
have some additional details from the different ports. The following docks have
a sign-up fee. This means that, if Beanie Limited wants to do any business with
them at all, they need to pay this fee. This fee is only paid once and is
independent of the container volume that goes through the dock.
have some additional details from the different ports.
The following docks have a sign-up fee. This means that, if Beanie Limited
wants to do any business with them at all, they need to pay this fee. This fee
is only paid once and is independent of the container volume that goes through
the dock.
- Algeciras: 800,000€
- Marseille: 500,000€
- Antwerp: 1,000,000€
Also, after presenting your initial results from level 2, Charles is very happy
with your work, although there is something bothering him. Even though your
proposal sounds reasonable, he is concerned that splitting the operations
between too many docks might make land logistics operations too complex and end
up causing higher costs in their truck transportation that cancel the potential
savings that could be obtained in docks operations.
Charles doesn't have numbers currently, so there is no way to tackle this
properly in an empirical way. To have the necessary information to think about
this in the future, he would like you to repeat your analysis with a new
condition in place: to only use a maximum of 3 docks in your proposal. Charles
wants to know what would be the optimal decision while restricting the used
docks to that number.
Charles wants you to reassess the situation with the new data and provide the
adequate solution with the new options. He also would like to understand how
these changes impact the solution you provided for level 2 and the overall
results for Beanie Limited.
Level 4
### Level 4
After presenting your results from level 3, Charles is very happy with your
work, although there is something bothering him. Even though your proposal
sounds reasonable, he is concerned that splitting the operations between too
many docks might make European land logistics operations too complex and end up
causing higher costs in their truck transportation that cancel the potential
savings that cana be obtained in docks operations.
Now that it seemed you finally had a proper proposal in place, Charles is
calling again with more concerns and asking you to go the extra mile with a
final assessment.
Charles doesn't have numbers currently, so there is no way to tackle this
properly. To have the necessary information to think about this in the future,
he would like you to repeat your analysis with a new condition in place: to
only use a maximum of 3 docks in your proposal. Charles wants to know what
would be the optimal decision while restricting the used docks to that number.
Apparently, some rumours have reached Charles ears. It seems that some new
regulations in Spain might affect taxes related to dock activities. Charles
believes this could have an impact on the prices in Valencia and Algeciras,
putting pressure on them to increase their prices because additional taxes
would increase their own costs. The issue is: Charles doesn't know for sure
what will happen. His expert opinion is that the following is possible:
Finally, to spice things up, one of the analysts in Charles' team also calls
you to inform that the management from the Rotterdam docks has warned Beanie
Limited that they have a new minimum volume policy in place. They will only
make business with Beanie Limited if they commit to handle, at least, 30000
thousand containers through Rotterdam.
- For Valencia, Charles thinks the price can end up somewhere between today's
price (310€/40ft) and 390€/40ft. He says the probability of any price is in
that range is equal.
- For Algeciras, Charles thinks the price can end up somewhere between today's
price (280€/40ft) and 330€/40ft. Again, he says the probability of any price
is in that range is equal.
Charles heard you did a great job by using simulation techniques with Elisa in
your previous project. Charles' can't request you to do any simulation work as
part of the current engagement, because that would be out of the scoped that
was agreed upon. But nevertheless, he would appreciate if you could explain to
him how would you use simulation to make the decision with these new
uncertainty in place. What would be your methodology? What kind of results
could you provide to him?
With that information, he might decide to spend some more money with Simiupf to
pursue that stream of work. And that would definetely make your bosses very
happy!

Binary file not shown.

View file

@ -0,0 +1,601 @@
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "case_2_student_notebook.ipynb",
"provenance": [],
"toc_visible": true,
"collapsed_sections": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"source": [
"# Introduction to PuLP\n",
"\n",
"For case 2, you will need to define and solve optimization problems. In this notebook, I'll help you understand how to use `pulp`, a Python package for modeling optimization problems. You might want to check the following links:\n",
"\n",
"- Documentation: https://coin-or.github.io/pulp/\n",
"- Homepage: https://github.com/coin-or/pulp\n",
"\n"
],
"metadata": {
"id": "eLvjUuJdzS7z"
}
},
{
"cell_type": "markdown",
"source": [
"# Installing and checking all is in place"
],
"metadata": {
"id": "HFavOEVS0dbY"
}
},
{
"cell_type": "markdown",
"source": [
"The first thing you need to do is to install `pulp`. `pulp` is not in the standard available packages in Colab, so you need to run the following cell once. "
],
"metadata": {
"id": "HgZwpjUG0PsK"
}
},
{
"cell_type": "code",
"source": [
"!pip install pulp"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ni6Q_YiO0nIm",
"outputId": "405d3f57-4502-4ed5-dcb9-d3204b585bb8"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Collecting pulp\n",
" Downloading PuLP-2.6.0-py3-none-any.whl (14.2 MB)\n",
"\u001b[K |████████████████████████████████| 14.2 MB 8.9 MB/s \n",
"\u001b[?25hInstalling collected packages: pulp\n",
"Successfully installed pulp-2.6.0\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"After doing that, you can import the library."
],
"metadata": {
"id": "k9YI0Kzw0qLT"
}
},
{
"cell_type": "code",
"source": [
"import pulp"
],
"metadata": {
"id": "hw6keX7x0tZ1"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"If all is good, running the following command will print a large log testing `pulp`. The last line should read \"OK\"."
],
"metadata": {
"id": "vD_rXehL1KXX"
}
},
{
"cell_type": "code",
"source": [
"pulp.pulpTestAll()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "Ney2a8mu1JqQ",
"outputId": "a6b32d96-b163-4fc5-b4fc-3d5673e5a40a"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stderr",
"text": [
"ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss.........."
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"\t Test that logic put in place for deprecation handling of indexs works\n",
"\t Testing 'indexs' param continues to work for LpVariable.dicts\n",
"\t Testing 'indexs' param continues to work for LpVariable.matrix\n",
"\t Testing 'indices' argument works in LpVariable.dicts\n",
"\t Testing 'indices' param continues to work for LpVariable.matrix\n",
"\t Testing invalid status\n",
"\t Testing continuous LP solution - export dict\n",
"\t Testing export dict for LP\n",
"\t Testing export dict MIP\n",
"\t Testing maximize continuous LP solution\n",
"\t Testing continuous LP solution - export JSON\n",
"\t Testing continuous LP solution - export solver dict\n",
"\t Testing continuous LP solution - export solver JSON\n"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
".........."
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"\t Testing reading MPS files - binary variable, no constraint names\n",
"\t Testing reading MPS files - integer variable\n",
"\t Testing reading MPS files - maximize\n",
"\t Testing invalid var names\n",
"\t Testing logPath argument\n",
"\t Testing makeDict general behavior\n",
"\t Testing makeDict default value behavior\n",
"\t Testing measuring optimization time\n"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"............."
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"\t Testing the availability of the function pulpTestAll\n",
"\t Testing zero subtraction\n",
"\t Testing inconsistent lp solution\n",
"\t Testing continuous LP solution\n",
"\t Testing maximize continuous LP solution\n",
"\t Testing unbounded continuous LP solution\n",
"\t Testing Long Names\n",
"\t Testing repeated Names\n",
"\t Testing zero constraint\n",
"\t Testing zero objective\n",
"\t Testing LpVariable (not LpAffineExpression) objective\n",
"\t Testing Long lines in LP\n",
"\t Testing LpAffineExpression divide\n"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"............."
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"\t Testing MIP solution\n",
"\t Testing MIP solution with floats in objective\n",
"\t Testing Initial value in MIP solution\n",
"\t Testing fixing value in MIP solution\n",
"\t Testing MIP relaxation\n",
"\t Testing feasibility problem (no objective)\n",
"\t Testing an infeasible problem\n",
"\t Testing an integer infeasible problem\n",
"\t Testing another integer infeasible problem\n",
"\t Testing column based modelling\n",
"\t Testing dual variables and slacks reporting\n"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"..........ssssssssssssssssssssssssssssssssssssssssssssssssssssss"
]
},
{
"output_type": "stream",
"name": "stdout",
"text": [
"\t Testing fractional constraints\n",
"\t Testing elastic constraints (no change)\n",
"\t Testing elastic constraints (freebound)\n",
"\t Testing elastic constraints (penalty unchanged)\n",
"\t Testing elastic constraints (penalty unbounded)\n",
"\t Testing timeLimit argument\n"
]
},
{
"output_type": "stream",
"name": "stderr",
"text": [
"ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss\n",
"----------------------------------------------------------------------\n",
"Ran 840 tests in 15.681s\n",
"\n",
"OK (skipped=784)\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Defining and solving problems\n",
"\n",
"The following cells show you the absolute minimum to model and solve a problem with `pulp`. The steps are:\n",
"\n",
"1. Define decision variables\n",
"2. Define the target function\n",
"3. Define the constraints\n",
"4. Assemble the problem\n",
"5. Solve it\n",
"6. Examine results\n",
"\n",
"For more flexibility, options and interesting stuff, please check up the PuLP documentation."
],
"metadata": {
"id": "oiXz40NR1whf"
}
},
{
"cell_type": "markdown",
"source": [
"## Define decision variables"
],
"metadata": {
"id": "nq5bcQs03g0j"
}
},
{
"cell_type": "code",
"source": [
"x = pulp.LpVariable(\n",
" name=\"x\",\n",
" cat=pulp.LpContinuous \n",
" )\n",
"\n",
"y = pulp.LpVariable(\n",
" name=\"y\",\n",
" cat=pulp.LpInteger # This will make the variable integer only\n",
" )\n",
"\n",
"z = pulp.LpVariable(\n",
" name=\"z\",\n",
" cat=pulp.LpBinary # This will make the variable binary (only 0 or 1)\n",
")"
],
"metadata": {
"id": "0SPhww4L3buh"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## Define the target function"
],
"metadata": {
"id": "uhlbq2oO35kp"
}
},
{
"cell_type": "code",
"source": [
"target_function = 10 * x - 5 * y + z"
],
"metadata": {
"id": "pu3Im9DH39CN"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## Define constraints"
],
"metadata": {
"id": "lqD0dD474Izw"
}
},
{
"cell_type": "code",
"source": [
"constraint_1 = x >= 0\n",
"constraint_2 = y >= 0\n",
"constraint_3 = x >= 10\n",
"constraint_4 = y <= 50"
],
"metadata": {
"id": "5Cu51lYj4OUC"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## Assemble the problem\n",
"\n",
"To put all the parts together, you need to declare a problem and specify if you want to minimize or maximize the target function.\n",
"\n",
"Once you have that:\n",
"- First, you \"add\" the target function.\n",
"- After, you \"add\" all the constraints you want to include."
],
"metadata": {
"id": "d5nq94IM4kSU"
}
},
{
"cell_type": "code",
"source": [
"problem = pulp.LpProblem(\"my_silly_problem\", pulp.LpMinimize)\n",
"\n",
"problem += target_function\n",
"\n",
"for constraint in (\n",
" constraint_1,\n",
" constraint_2,\n",
" constraint_3,\n",
" constraint_4\n",
" ):\n",
" problem += constraint"
],
"metadata": {
"id": "yI-Oiwh64mRc"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"## Solve it\n",
"\n",
"The problem object is now unsolved. You can call the `solve` method on it to find a solution."
],
"metadata": {
"id": "RJTWfR8-5fBd"
}
},
{
"cell_type": "code",
"source": [
"f\"Status: {pulp.LpStatus[problem.status]}\"\n",
"problem.solve()"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "4Fbltpbp5mRi",
"outputId": "07f9c959-e9b0-4fe7-e7ea-c698703111ff"
},
"execution_count": null,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"1"
]
},
"metadata": {},
"execution_count": 9
}
]
},
{
"cell_type": "markdown",
"source": [
"## Examine results\n",
"\n",
"After calling `solve` on a problem, you can access:\n",
"- The status of the problem. It can be solved, but also it might show to be not feasible.\n",
"- The values assigned to each decision variable.\n",
"- The final value for the target function.\n",
"\n"
],
"metadata": {
"id": "0pc9RmrO7FKo"
}
},
{
"cell_type": "code",
"source": [
"print(f\"Status: {pulp.LpStatus[problem.status]}\")\n",
"for v in problem.variables():\n",
" print(v.name, \"=\", v.varValue)\n",
" \n",
"print(pulp.value(problem.objective))"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "8U4xVvUg9W07",
"outputId": "32a330f1-65ab-4903-f29b-368f2bacaf94"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Status: Optimal\n",
"x = 10.0\n",
"y = 50.0\n",
"z = 0.0\n",
"-150.0\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Peanut Butter Example\n",
"\n",
"As an additional example, you can find below the model and solver for the Peanut Butter Sandwich example we discussed on lecture 6."
],
"metadata": {
"id": "I2lNaFm2XVK1"
}
},
{
"cell_type": "code",
"source": [
"pb = pulp.LpVariable(\n",
" name=\"Peanut Butter grams\",\n",
" cat=pulp.LpContinuous \n",
" )\n",
"\n",
"b = pulp.LpVariable(\n",
" name=\"Bread grams\",\n",
" cat=pulp.LpContinuous \n",
" )"
],
"metadata": {
"id": "HI4E2dNoXVK4"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"target_function = 5.88 * pb + 2.87 * b"
],
"metadata": {
"id": "PfTxq8R0XVLB"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"no_negative_pb = pb >= 0\n",
"no_negative_b = b >= 0\n",
"max_pb_we_have = pb <= 200\n",
"max_b_we_have = b <= 300\n",
"doctors_dietary_restriction = pb <= 0.13 * b"
],
"metadata": {
"id": "2X1AzQM8XVLD"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"problem = pulp.LpProblem(\"sandwich_problem\", pulp.LpMaximize)\n",
"\n",
"problem += target_function\n",
"\n",
"for constraint in (\n",
" no_negative_pb,\n",
" no_negative_b,\n",
" max_pb_we_have,\n",
" max_b_we_have,\n",
" doctors_dietary_restriction\n",
" ):\n",
" problem += constraint"
],
"metadata": {
"id": "3oEoQXebXVLE"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "code",
"source": [
"f\"Status: {pulp.LpStatus[problem.status]}\"\n",
"problem.solve()\n",
"print(f\"Status: {pulp.LpStatus[problem.status]}\")\n",
"for v in problem.variables():\n",
" print(v.name, \"=\", v.varValue)\n",
" \n",
"print(f\"Final calories: {pulp.value(problem.objective)}\")"
],
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"outputId": "d873d58d-6d9e-459e-d66f-127f436b1aab",
"id": "u1vI73kiXVLF"
},
"execution_count": null,
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"Status: Optimal\n",
"Bread_grams = 300.0\n",
"Peanut_Butter_grams = 39.0\n",
"1090.32\n"
]
}
]
},
{
"cell_type": "markdown",
"source": [
"# Case 2\n",
"\n",
"You can use the rest of the notebook to work on the different parts of case 2."
],
"metadata": {
"id": "6kWgbTjU-LaN"
}
},
{
"cell_type": "code",
"source": [
"# Good luck!"
],
"metadata": {
"id": "aYzseTWh-Sal"
},
"execution_count": null,
"outputs": []
}
]
}

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more