🥥Python仿真二级供应链测试安全库存模型
Python | 概率 | 统计 | 供应链测试 | 安全库存模型 | 数学 | 正态分布 | 格雷夫斯和威廉斯模型 | Sympy
供应链与库存优化
供应链的定义因引用的来源而异,但它们都有相同的基本思想。 供应链被定义为“相互连接和相互依赖的组织网络,相互合作,共同控制、管理和改善从供应商到最终用户的材料和信息流。” 供应链的规模和复杂程度各不相同,有些只有几级,有些则有数级。 例如,一个供应链可能由原材料供应商、制造工厂和向消费者销售的零售商组成,如图 1 所示。但是,另一条供应链可能由多个供应商组成,每个供应商都有几个独立的制造流程。 组件、将这些组件组装成成品的制造商、多个配送中心以及全国各地向消费者销售的零售商,如图 2 所示
数学公式、分布和模型
安全库存公式
在给定所需的循环服务水平的情况下,应持有的安全库存水平的方程式在中给出。 假设供应商的补货提前期和客户需求均呈正态分布,并采用持续审查补货政策。 我们将在等式中使用以下符号
SS=Z⋅LσD2+D2σL2
正态分布
正态(或高斯)分布是一种连续概率分布,以其“钟形”形状而闻名,以分布均值 µ 为中心,标准差为 σ,标准正态分布是 µ = 0 且 σ = 1 的特殊情况。 随机变量 X 在实线上的概率密度函数为正态分布,均值为 µ 和标准差 σ
f(x)=2πσ1e−21(σx−μ)2
格雷夫斯和威廉斯模型
$$ d_{i}(t)=\sum_{(i, j) \in A} \phi_{i j} d_{j}(t) $$
保证服务时间
模型结构
仿真模型
库存模拟示例
RANDOM_SEED = 42
PT_MEAN = 10.0
PT_SIGMA = 2.0
MTTF = 300.0
BREAK_MEAN = 1 / MTTF
REPAIR_TIME = 30.0
JOB_DURATION = 30.0
NUM_MACHINES = 10
WEEKS = 4
SIM_TIME = WEEKS * 7 * 24 * 60
def time_per_part():
return random.normalvariate(PT_MEAN, PT_SIGMA)
def time_to_failure():
return random.expovariate(BREAK_MEAN)
class Machine(object):
def __init__(self, env, name, repairman):
self.env = env
self.name = name
self.parts_made = 0
self.broken = False
self.process = env.process(self.working(repairman))
env.process(self.break_machine())
def working(self, repairman):
while True:
done_in = time_per_part()
while done_in:
try:
start = self.env.now
yield self.env.timeout(done_in)
done_in = 0
except Interrupt:
self.broken = True
done_in -= self.env.now - start
with repairman.request(priority=1) as req:
yield req
yield self.env.timeout(REPAIR_TIME)
self.broken = False
# Part is done.
self.parts_made += 1
def break_machine(self):
while True:
yield self.env.timeout(time_to_failure())
if not self.broken:
self.process.interrupt()
def other_jobs(env, repairman):
while True:
done_in = JOB_DURATION
while done_in:
with repairman.request(priority=2) as req:
yield req
try:
start = env.now
yield env.timeout(done_in)
done_in = 0
except Interrupt:
done_in -= env.now - start
模型代码
Last updated