我是Simpy的新用户。我有一个关于如何编码网络过程模型的问题,如图所示:
对于网络,产品需要根据其计划和资源顺序在网络内移动资源。为了将产品移动到下一个资源,需要提供前面的两个资源。否则,产品必须在现有资源中等待(无法释放现有资源)。
此外,每个产品都有一个用于计算通过每个资源的时间的大小(图中的块)。当产品到达块序列的末尾时,它将在另一侧排队并继续作为循环处理。
我在Simpy的教程中学习过,但我不了解建模资源系列的方法。因此,如果有人能告诉我如何解决这个问题,那将非常感激。
import simpy
env = simpy.Environment()
B1 = simpy.Store(env, capacity=1)
B2 = simpy.Store(env, capacity=1)
B3 = simpy.Store(env, capacity=1)
B4 = simpy.Store(env, capacity=1)
B5 = simpy.Store(env, capacity=1)
B6 = simpy.Store(env, capacity=1)
B7 = simpy.Store(env, capacity=1)
B8 = simpy.Store(env, capacity=1)
B9 = simpy.Store(env, capacity=1)
B10 = simpy.Store(env, capacity=1)
B11 = simpy.Store(env, capacity=1)
B12 = simpy.Store(env, capacity=1)
B13 = simpy.Store(env, capacity=1)
B14 = simpy.Store(env, capacity=1)
B15 = simpy.Store(env, capacity=1)
B16 = simpy.Store(env, capacity=1)
B17 = simpy.Store(env, capacity=1)
B18 = simpy.Store(env, capacity=1)
B19 = simpy.Store(env, capacity=1)
B20 = simpy.Store(env, capacity=1)
def product_starter(env, B1, B11):
yield B1.put(1)
yield B11.put(2)
yield env.timeout(10)
yield B1.put(3)
yield B11.put(4)
def block(env, inblock, outblock , timeout):
while True:
product = yield inblock.get()
yield env.timeout(timeout)
yield outblock.put(product)
print('product move')
env.process(product_starter(env, B1, B11))
env.process(block(env, B1, B2, 15))
env.process(block(env, B2, B3, 15))
env.process(block(env, B3, B4, 15))
env.process(block(env, B4, B5, 15))
env.process(block(env, B5, B6, 15))
env.process(block(env, B6, B7, 15))
env.process(block(env, B7, B8, 15))
env.process(block(env, B8, B9, 15))
env.process(block(env, B9, B10, 15))
env.process(block(env, B10, B11, 15))
env.process(block(env, B11, B12, 15))
env.process(block(env, B12, B13, 15))
env.process(block(env, B13, B14, 15))
env.process(block(env, B14, B15, 15))
env.process(block(env, B15, B16, 15))
env.process(block(env, B16, B17, 15))
env.process(block(env, B17, B18, 15))
env.process(block(env, B18, B19, 15))
env.process(block(env, B19, B20, 15))
env.run(until = 100)