【发布时间】:2021-03-08 03:40:49
【问题描述】:
我使用 Python Simpy 进行模拟。
我想从一个原材料单位(factory.materials)生成产品库存(factory.stock)。 在我拿到一个单位的原材料后, 我不想等待一次生成成品库存, 我想每次以一定的时间间隔生成多个库存, 比如我拿到一个单位的原材料,拿到树时间产品库存,每次拿到5个产品,间隔6个单位时间。
但是我的代码delay()是用来延迟时间的,但是不起作用。 如果我使用yield来延迟,它将多次获得我的原材料,而我只想获得一个单位的原材料。
import simpy
class Factory():
def __init__(self, env):
self.materials = simpy.Container(env, capacity = 10000, init = 9000)
self.stock = simpy.FilterStore(env, capacity = 10000)
def create_stock(env, factory):
while True:
print('time:{0} materials:{1} stock:{2}'.format(env.now,factory.materials.level,len(factory.stock.items)))
yield factory.materials.get(1)
for i in range(5):
for j in range(2):
factory.stock.put({'order_id': 'order_id', 'id':j})
delay(2)
yield env.timeout(1)
def delay(how_long):
yield env.timeout(how_long)
env = simpy.Environment()
factory = Factory(env)
on_process = env.process(create_stock(env, factory))
print('start...')
env.run(until = 30)
print('end')
【问题讨论】:
标签: python simulation simpy