SupplyNetPy:一个用于任意供应链与库存网络高保真建模与仿真的开源Python库

arXiv cs.AI 工具

摘要

SupplyNetPy 是一个开源 Python 库,用于对任意供应链网络进行高保真建模与离散事件仿真,支持多层级结构、补货策略、易逝库存、中断以及随机需求。它旨在通过编程化仿真支持设计空间探索、假设分析和数字孪生。

arXiv:2607.09745v1 公告类型:新论文 摘要:本文介绍 SupplyNetPy,一个开源、文档完善的 Python 库,用于对具有任意多层结构的供应链网络进行建模与离散事件仿真。它支持多种补货策略、易逝库存、节点中断以及随机需求和提前期。所有组件均可通过继承进行扩展。用户将供应链描述为带有节点和链接属性的图,而库负责处理仿真,提供日志以及详细的节点和网络级性能报告。本文阐述了 SupplyNetPy 的动机、设计、主要特性与架构,并附有详细的验证结果(对照分析基准、商业工具及已发表的案例研究)。SupplyNetPy 开发的一个关键动机是实现复杂模型的编程化生成与仿真,从而支持设计空间探索、假设分析、训练数据生成以及供应链数字孪生。
查看原文
查看缓存全文

缓存时间: 2026/07/14 04:17

# 一个用于高保真建模与仿真任意供应链及库存网络的开源 Python 库
来源:https://arxiv.org/html/2607.09745
Tushar Lone¹ 和 Neha Karanjkar¹  
¹ 印度理工学院果阿分校数学与计算机科学学院,印度果阿  
本文是作者在 2026 年冬季仿真会议录用论文的预印本。

###### 摘要

本文介绍了 SupplyNetPy,一个开源、文档完善的 Python 库,用于对具有任意多级结构的供应链网络进行建模和离散事件仿真。它支持多种补货策略、易腐库存、节点中断以及随机需求和提前期。所有组件均可通过继承进行扩展。用户将供应链描述为具有节点和链路属性的图,而库负责处理仿真,提供日志以及详尽的节点和网络级性能报告。本文阐述了 SupplyNetPy 的动机、设计、关键特性和架构,以及详细的验证结果(与解析基准、商业工具和已发表的案例研究进行对比)。开发 SupplyNetPy 的一个关键动机是能够以编程方式生成和仿真复杂模型,从而支持设计空间探索、假设分析、训练数据生成以及供应链数字孪生。

## 1 引言

现代供应链是复杂、动态的网络,覆盖全球,且极易受到中断的影响。在持续波动的环境下,其设计、优化和管理需要能够处理复杂性并吸收实时信息的分析工具。近期 2026 年的地缘政治局势以及对航运通道(如霍尔木兹海峡)的干扰,已对全球经济产生了深远的冲击波。大宗商品价格、运输提前期和库存成本的变化方式难以预测。这强烈凸显了对稳健的供应链分析和管理工具的需求。现代供应链的复杂行为、全球规模以及随机性限制了纯粹解析模型、电子表格或人类直觉的管理范围。仿真建模已变得不可或缺,而将实时数据同化到模型中(即基于仿真的供应链数字孪生)已变得既可行又至关重要[4 (https://arxiv.org/html/2607.09745#bib.bib5), 11 (https://arxiv.org/html/2607.09745#bib.bib6)]。

商业仿真工具如 Arena (https://www.arenasimulation.com/) 和 AnyLogic (https://www.anylogic.com/) 通常用于建模和分析供应链,特别是在库存管理、物流和韧性等领域。这些工具提供了用于建模离散事件系统(如流程和共享资源)的通用组件,但可能没有专门针对供应链的组件库。专门用于供应链建模的工具示例包括 AnyLogistix (https://www.anylogistix.com/) 和 miniSCOT (https://github.com/amzn/supply-chain-simulation-environment/),它们提供了供应链特定的组件。然而,专门针对供应链的开源库非常少。这些包括 supplychainpy (https://github.com/KevinFasusi/supplychainpy)、miniSCOT 和 SunFlow (https://github.com/aitechtools/SunFlow)。这些开源替代方案不支持任意网络(仅支持单级)。其中一些不支持仿真(使用解析方法和电子表格),或者维护不善,使得它们难以被视为商业工具的可行替代品。现有工具的详细回顾见第 2 节 (https://arxiv.org/html/2607.09745#S2)。目前缺乏一个维护良好、文档完善、专门针对任意供应链网络离散事件仿真的开源库。实践者通常退而求其次,使用诸如 SimPy (https://simpy.readthedocs.io/) 的通用 DES 框架,并从头构建所有供应链逻辑[13 (https://arxiv.org/html/2607.09745#bib.bib4)],这需要大量的开发和验证工作。一个提供即用型、可组合供应链构建模块的开源库减少了这一负担,支持社区驱动的维护和可扩展性,并能够无缝集成 Python 丰富的生态系统,用于优化、机器学习和数据分析。这激励了我们开发 SupplyNetPy。

### 1.1 SupplyNetPy 及其特性概述

SupplyNetPy 是一个开源的 Python 库,用于对供应链网络进行表现力建模和离散事件仿真。它可以通过 Python 包索引安装:`pip install supplynetpy`,详细文档、用户指南和完整示例可在 https://supplychainsimulation.github.io/SupplyNetPy 获取,源代码托管在 GitHub[8 (https://arxiv.org/html/2607.09745#bib.bib17)]。它是使用 SimPy (https://simpy.readthedocs.io/) 作为核心构建的组件库,用于执行事件驱动仿真[16 (https://arxiv.org/html/2607.09745#bib.bib12)]。

用户将供应链描述为一个图:节点代表供应链实体,链路代表它们之间的运输连接。用户可以指定节点属性(如库存容量、补货策略、再订购点、用于中断建模的故障分布以及易腐库存的货架期)和链路属性(如运输成本和提前期分布)。该库处理所有仿真机制,并提供详细的事件日志以及节点和网络级的性能统计数据。关键特性包括支持中断建模和韧性分析。易腐库存通过先进先出(FIFO)方式支持按单位过期跟踪和浪费成本核算,使得该库对食品供应链、牛奶配送网络、疫苗冷链和医药供应链等用例具有吸引力。该库还提供了几种内置的库存补货策略和供应商选择策略,所有这些都可以通过继承进行扩展。仿真自动生成详尽的节点和网络级性能报告,涵盖库存水平、缺货、浪费、成本、收入和服务指标。

该库已通过与解析基准、商业仿真工具(AnyLogistix)在确定性配置下的单元测试以及来自案例研究的已发表结果进行对比,得到了全面验证。设计、架构和详细的验证结果见第 3 节 (https://arxiv.org/html/2607.09745#S3) 至第 5 节 (https://arxiv.org/html/2607.09745#S5)。

除了开源开发的普遍优势(社区贡献、长期可维护性和透明性)之外,以下因素也是开发 SupplyNetPy 的关键动机。

- • **大规模程序化模型生成。** 在 SupplyNetPy 中,供应链是一个带有节点和链路属性的 Python 图,因此一个脚本可以自动生成并仿真数千种不同的网络配置。这使得能够为机器学习模型构建训练数据集,这些模型学习供应链行为作为网络结构和参数的函数,并且对于训练图结构元模型(如图神经网络)尤其有吸引力。此类工作流在使用图形用户界面或专有脚本工具的情况下很难或无法实现。
- • **可扩展性。** SupplyNetPy 中的每个实体都是一个 Python 类。通过子类化添加新的节点类型、补货策略、供应商选择策略和运输模型,而无需修改库本身。当前实现尚不支持连续物料流(例如,作为链路的管道)、多产品共享库存或高级物流功能(如车队管理和车辆路径规划)。这些可以作为派生类逐步添加。当前范围和计划扩展在第 6 节 (https://arxiv.org/html/2607.09745#S6) 中描述。
- • **与 Python 生态系统的灵活集成。** 由于 SupplyNetPy 生成标准的 Python 对象,它可以直接与现有的 Python 库集成,用于优化(例如,SciPy)、可视化(例如,Matplotlib)、机器学习(例如,PyTorch)和 GUI 开发。SimPy 内置的实时仿真模式开箱即用地支持实时数据同化和数字孪生应用。用户可以直接在这个开放、文档完善的库之上构建特定于应用的接口和工作流。

## 2 相关工作

多种工具支持供应链仿真建模。近期关于它们跨供应链应用领域使用的调查可在[9 (https://arxiv.org/html/2607.09745#bib.bib2)](GitHub 仓库 (https://github.com/SupplyChainSimulation/InventOpt/tree/main/review))中找到。本文比较的工具是供应链仿真中使用最广泛的,分为三组,涵盖了相关的设计空间:商业工具(AnyLogic, Arena, Simio, FlexSim, AnyLogistix)、通用开源仿真库(SimPy, Repast)和开源供应链专用库(miniSCOT, supplychainpy, SunFlow, Stockpyl)。

包括 AnyLogic[2 (https://arxiv.org/html/2607.09745#bib.bib9)]、Arena[3 (https://arxiv.org/html/2607.09745#bib.bib11)]、Simio[15 (https://arxiv.org/html/2607.09745#bib.bib8)] 和 FlexSim[7 (https://arxiv.org/html/2607.09745#bib.bib10)] 在内的商业仿真工具被广泛用于建模和分析供应链,特别是在库存管理、物流和韧性方面。AnyLogic 支持 DES、基于智能体的仿真和系统动力学建模,并经常应用于库存和物流问题,利用 OptQuest 进行优化。由同一家公司开发的 AnyLogistix[1 (https://arxiv.org/html/2607.09745#bib.bib16)] 是一个专门用于供应链仿真和优化的工具,使用户能够通过可视化界面建模复杂的供应链,运行网络优化场景,并评估系统在不确定性下的性能。Arena 和 FlexSim 是适用于广泛供应链问题的商业 DES 工具。Simio 同时支持 DES 和基于智能体的仿真来建模物流等供应链方面。这些工具提供丰富的图形环境、内置优化和基于地理信息系统的可视化,但它们是专有的,具有特定于平台的脚本接口。

开源库如 SimPy[16 (https://arxiv.org/html/2607.09745#bib.bib12)] 和 Repast[14 (https://arxiv.org/html/2607.09745#bib.bib15)] 可以建模包括库存、物流和韧性在内的供应链方面,并提供更大的定制性。然而,用户必须从头开始开发所有供应链组件,这需要大量的编程工作。SimPy 是一个基于 Python 的 DES 库,Repast 主要设计用于基于智能体的建模,但也有一个基于 Python 的版本。

几个开源库针对供应链建模问题的子集。由亚马逊开发的 miniSCOT[12 (https://arxiv.org/html/2607.09745#bib.bib13)] 支持 DES 并提供供应链特定组件,但缺乏全面的文档,并且自 2021 年以来未积极维护。supplychainpy[18 (https://arxiv.org/html/2607.09745#bib.bib14)] 支持蒙特卡洛仿真并自动化基于电子表格的解析工作流,但不支持 DES。SunFlow[19 (https://arxiv.org/html/2607.09745#bib.bib7)] 是一个基于 Python 的库,用于供应链网络的解析建模,以最小化成本和优化网络流,不支持 DES。Stockpyl[17 (https://arxiv.org/html/2607.09745#bib.bib18)] 是一个开源的 Python 库,用于使用时间步进仿真方法进行库存仿真和分析,支持可配置的补货策略以及节点和网络级性能指标。然而,它主要侧重于解析库存优化,不支持事件驱动仿真或通过继承实现自定义补货策略。表 1 (https://arxiv.org/html/2607.09745#S2.T1) 总结了这些工具与 SupplyNetPy 的关键特性。表中的评估标准列概述了定义 SupplyNetPy 预期范围的关键特性。据我们所知,市场上需要一个维护良好的开源 Python 库,将 DES 与供应链特定组件相结合,并支持完全程序化的模型构建。SupplyNetPy 的开发正是为了填补这一空白。

表 1:仿真建模工具比较。
| 工具 | 开源 | 供应链特定组件 | 仿真方法 | GIS 支持 | 性能报告 |
|------|------|----------------|----------|----------|----------|
| SupplyNetPy | ✓ | ✓ | DES | 否 | ✓ |
| miniSCOT | ✓ | ✓ | DES | 否 | 否 |
| supplychainpy | ✓ | ✓ | 蒙特卡洛 | 否 | ✓ |
| SunFlow | ✓ | ✓ | 解析 | 否 | 否 |
| Stockpyl | ✓ | ✓ | 时间步进 | 否 | ✓ |
| SimPy | ✓ | 否 | DES | 否 | 否 |
| Repast | ✓ | 否 | DES/ABS/SD | 否 | 否 |
| Arena | 否 | 否 | DES | ✓ | ✓ |
| AnyLogic | 否 | 否 | DES/ABS/SD | ✓ | ✓ |
| AnyLogistix | 否 | ✓ | DES | ✓ | ✓ |
| Simio | 否 | 否 | DES/ABS | ✓ | ✓ |
| FlexSim | 否 | 否 | DES | 否 | ✓ |

## 3 SupplyNetPy:架构与实现

SupplyNetPy 是一个 Python 库,由精心设计并经过预验证的组件类组成,这些类可以配置并连接在一起,以描述具有任意结构的复杂供应链网络。这将建模抽象从构建和调试仿真模型提升到仅需描述链的结构和属性。该库的组件集、建模参数、库存补货策略和性能指标均基于对近期供应链仿真文献的结构化综述。初始版本出现在我们早期的 InventOpt 工作中[9 (https://arxiv.org/html/2607.09745#bib.bib2)],更全面的讨论将在本工作即将发布的扩展版本中呈现。

(见标题)

(见标题)

图 1:SupplyNetPy 在线文档截图,显示 API 指南和使用示例。  
URL:https://supplychainsimulation.github.io/SupplyNetPy。

### 3.1 架构与组件

SupplyNetPy 中的供应链被建模为一个有向图,包含两种基本对象:节点和链路。节点代表供应链实体,分为三大类:源节点(生产或供应货物的制造商和供应商)、中间库存持有节点(储存和转运产品的分销商和零售商)以及消耗产品且没有下游连接的叶需求节点。定义良好的结构规则约束着图:供应商没有上游库存来源,需求节点没有下游汇点。图不必是树形;一个库存节点可以连接到多个上游制造商或供应商,并具有可配置的供应商选择策略来从中选择。链路建模节点之间的有向运输边。详细的应用程序编程接口指南,描述所有类及其层次结构,可在官方文档中找到。主要类如下:

- **Node**:所有供应链实体的基类。存储通用属性:唯一标识符、名称、节点类型和地理位置。通过可配置的故障概率(`failure_p`)和用于中断持续时间及恢复时间的 Python 可调用对象,支持随机中断建模。
- **Supplier**:模拟原材料或成品的来源。支持有限和无限库存模式。默认行为以可配置的速率开采或生产物品。
- **Manufacturer**:扩展 `Node` 以添加制造行为。从连接的 `Supplier` 订购原材料,以可配置的批次大小组装产品,并持有成品库存供下游分销。
- **InventoryNode**:模拟任何持有库存并从上游供应商补货的中间节点。用于实例化分销商和零售商。管理库存、处理下游订单,并根据可配置的...

相似文章

PedNStream: 可扩展的行人交通管理网络流仿真

arXiv cs.AI

PedNStream 是一个开源的 Python 模拟器,使用 Link Transmission Model 进行宏观行人网络流模拟,专为大规模人群管理设计,内置用于干预的控制器接口,如门控和路线引导。

欧盟开源十年网络发展规划工具

Hacker News Top

欧盟已将基于PyPSA-Eur的十年网络发展规划工具Open-TYNDP开源,旨在提高欧洲能源规划的透明度和利益相关方参与度。

针对韧性制造业供应链的技能约束模型预测控制

arXiv cs.AI

本文提出了一种针对韧性制造业供应链的技能约束模型预测控制方法,其中培训决策影响未来的认证产能。该控制器求解有限时域混合整数规划,并在合成场景上进行评估,结果表明当瓶颈可预测时预测控制有效,但并非普遍优越。