我使用Python Simpy进行模拟
我想从一个单位的原材料(factory.materials)生成产品库存(factory.stock)。 我拿到一单位原料后, 我不想等待一次生成一个成品库存, 我希望每次在一定的时间间隔生成多个库存, 例如,我得到一个单位的原材料,得到树时间的产品库存,每次得到5个产品,间隔6个单位时间
但是我的代码delay()用于延迟时间,但它不起作用。 如果我用收益率来延迟,它会多次得到我的原材料,我只想得到一个单位的原材料
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')
我不确定您想要实现什么,但是
delay
不起作用,因为yield
内部delay
没有屈服于函数外部。具有函数成品率与写入yield env.timeout(x)
是不同的将
delay(2)
行更改为env.timeout(2)
将解决该问题如果你真的想要一个函数来完成它,你可以这样做
我想每2个单位的时间得到一些产品库存在5个循环,然后退出过程。 将延迟(2)更改为环境超时(2),它将不起作用
我使用发电机的产量,它是有效的。当得到一个单位的材料时,每3个单位的时间生产2个库存
相关问题 更多 >
编程相关推荐