A pure python Supply Chain Adaptation and Resilience simulation tool
Project description
SCAR SIM
Supply Chain Adaptation and Resilience Simulator
Setup
Make sure you have Python 3.11.x (or higher) installed on your system. You can download it here.
Installation
pip install -e ./scar_sim
Basic Usage
from scar_sim.entity import Facility, Arc, Node
from scar_sim.order import Order
from scar_sim.simulation import Simulation
simulation = Simulation()
# Create nodes
supplier_0 = simulation.add_object(
Facility(
processing_min_time=0.8,
processing_avg_time=1.0,
processing_sd_time=0.02,
processing_cashflow_per_unit=-50,
metadata={
"loc": "cn_ningbo",
"otype": "node_supplier",
},
)
)
factory_1 = simulation.add_object(
Facility(
processing_min_time=0.2,
processing_avg_time=0.4,
processing_sd_time=0.1,
processing_cashflow_per_unit=-15,
metadata={
"loc": "us_ks_kc",
"otype": "node_factory",
},
)
)
# Create arcs between nodes
arc_0_1 = simulation.add_object(
Arc(
origin_node=supplier_0,
destination_node=factory_1,
processing_min_time=2.0,
processing_avg_time=2.0,
processing_sd_time=0.05,
processing_cashflow_per_unit=-10,
metadata={
"loc": "oc_pa",
"otype": "arc_ocean",
},
)
)
order = simulation.add_object(
Order(
origin_node=supplier_0,
destination_node=factory_1,
units=1,
planned_path=simulation.graph.get_optimal_path(
supplier_0, factory_1, "cashflow"
),
)
)
simulation.add_event(
time_delta=0.0,
func=order.start,
)
simulation.run(max_time=10.0)
print(simulation.orders[0].history[-1]) #=>
# {
# 'time': 2.9971,
# 'time_delta': 0.0,
# 'order_id': 3,
# 'current_obj_id': 1,
# 'meta': {
# 'loc': 'us_ks_kc',
# 'otype': 'node_factory',
# 'time': 2
# },
# 'status': 'completed',
# 'cashflow': 0.0
# }
Getting Started
scar_sim contains ...
Development
To avoid extra development overhead, we expect all developers to use a unix based environment (Linux or Mac). If you use Windows, please use WSL2.
For development, we test using Docker so we can lock system deps and swap out python versions easily. However, you can also use a virtual environment if you prefer. We provide a test script and a prettify script to help with development.
Making Changes
- Fork the repo and clone it locally.
- Make your modifications.
- Use Docker or a virtual environment to run tests and make sure they pass.
- Prettify your code.
- DO NOT GENERATE DOCS.
- We will generate the docs and update the version number when we are ready to release a new version.
- Only commit relevant changes and add clear commit messages.
- Atomic commits are preferred.
- Submit a pull request.
Docker
Make sure Docker is installed and running.
-
Create a docker container and drop into a shell
./run.sh
-
Run all tests (see ./utils/test.sh)
./run.sh test
-
Prettify the code (see ./utils/prettify.sh)
./run.sh prettify
-
Note: You can and should modify the
Dockerfileto test different python versions.
Virtual Environment
- Create a virtual environment
python3.XX -m venv venv- Replace
3.XXwith your python version (3.11 or higher)
- Replace
- Activate the virtual environment
source venv/bin/activate
- Install the development requirements
pip install -r requirements/dev.txt
- Run Tests
./utils/test.sh
- Prettify Code
./utils/prettify.sh
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file scar_sim-0.0.1.tar.gz.
File metadata
- Download URL: scar_sim-0.0.1.tar.gz
- Upload date:
- Size: 13.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e03a3a906ec6470a05b18ab776aacfa56aefae172e5d75368c57b595752dff9e
|
|
| MD5 |
0024b5d2344714e202c9665366e186c4
|
|
| BLAKE2b-256 |
7714bc7d11800c93fc41e85c97caafde82bfa448ccffef870fefcc3f83d628f3
|
File details
Details for the file scar_sim-0.0.1-py3-none-any.whl.
File metadata
- Download URL: scar_sim-0.0.1-py3-none-any.whl
- Upload date:
- Size: 15.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
542e62a89740f5de4fccbf49b74ba7071ec52de4c486ba7264f35306eee2d929
|
|
| MD5 |
fb9903a38e0cac99d9b1a17590e774b1
|
|
| BLAKE2b-256 |
02ca2b01da531bd28f0a8cf51f44777fbe7c99be318442037b996dd4181395a6
|