Simpy Store - 相关事件
Simpy Store - Dependent Events
我正在尝试模拟从商店获取某样东西取决于其他东西的情况。
假设我有一个生产者正在将物品放入容量有限的商店 S1。这些物品被转移到另一家商店 S2,当且仅当 (1) S1 中有物品 并且 S2 中有空间。
P -> S1 -> S2
问题是我需要从 S1 中删除一个项目,条件是 S2 中有 space。
在代码中:
from simpy import *
env = Environment()
S1 = Store(env, capacity=1)
S2 = Store(env, capacity=1)
def producer():
i = 0
while True:
yield S1.put(i)
print("Producer put item: %s"%i)
i += 1
def s1_to_s2():
while True:
item = yield S1.get()
yield S2.put(item)
env.process(producer())
env.process(s1_to_s2())
env.run(until=20)
产生
Producer put item: 0
Producer put item: 1
Producer put item: 2
我建模的方式让它看起来像是在 S1 和 S2 之间有 1 个额外的存储槽,这是我不想要的。由于我有 2 个存储单元,每个存储单元的容量为 1,因此生产者应该只能插入 2 个单元。
恐怕开箱即用的 SimPy 无法做到这一点。但是,您可以子类化 Store 和相应的事件来模拟商店间的依赖关系。
我正在尝试模拟从商店获取某样东西取决于其他东西的情况。
假设我有一个生产者正在将物品放入容量有限的商店 S1。这些物品被转移到另一家商店 S2,当且仅当 (1) S1 中有物品 并且 S2 中有空间。
P -> S1 -> S2
问题是我需要从 S1 中删除一个项目,条件是 S2 中有 space。
在代码中:
from simpy import *
env = Environment()
S1 = Store(env, capacity=1)
S2 = Store(env, capacity=1)
def producer():
i = 0
while True:
yield S1.put(i)
print("Producer put item: %s"%i)
i += 1
def s1_to_s2():
while True:
item = yield S1.get()
yield S2.put(item)
env.process(producer())
env.process(s1_to_s2())
env.run(until=20)
产生
Producer put item: 0
Producer put item: 1
Producer put item: 2
我建模的方式让它看起来像是在 S1 和 S2 之间有 1 个额外的存储槽,这是我不想要的。由于我有 2 个存储单元,每个存储单元的容量为 1,因此生产者应该只能插入 2 个单元。
恐怕开箱即用的 SimPy 无法做到这一点。但是,您可以子类化 Store 和相应的事件来模拟商店间的依赖关系。