首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >“加权”进程使用的SimPy资源量

“加权”进程使用的SimPy资源量
EN

Stack Overflow用户
提问于 2021-08-06 00:15:01
回答 1查看 35关注 0票数 0

我要向SimPy中的资源发送订单,该资源指定该资源将生产的产品数量。

我的问题是,当我发送100个数量的订单时,资源仅用于1个订单,而不是用于100个数量。有没有办法在SimPy中对此进行建模?

我知道如何使用容器和商店而不是资源Resource,但对于我的大型应用程序,我希望它是一种资源,因为不同的产品库存水平将以Container水平存储。此资源将在多个产品之间共享。

以下是我上面问题的模拟简单示例。谢谢!如果我可以添加plan_for_hour_x作为processing_capacity.request(plan_for_hour_x)的参数,就可以解决我的问题,但这似乎是不可能的。

代码语言:javascript
运行
复制
import simpy
env = simpy.Environment()
processing_capacity_per_hour = simpy.Resource(env, capacity=1000)
DEMAND_IN_HOUR_1 = 100

def production_plan(env, processing_capacity, plan_for_hour_x): 
    yield env.timeout(1)
    print(f'The current time is {env.now}')
    with processing_capacity.request() as req:
        yield req
        print(f'Resources in use 1: {processing_capacity.count}')
        yield env.timeout(1)
            
env.process(production_plan(env, 
                            processing_capacity_per_hour, 
                            DEMAND_IN_HOUR_1))
env.run(until=5)
print(f'The ending time is {env.now}')

>>> The current time is 1
>>> Resources in use 1: 1
>>> The ending time is 5
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-08 19:10:52

如果您试图在一次抓取中获取100个资源,则执行以下操作

代码语言:javascript
运行
复制
import simpy
from simpy.events import AllOf
env = simpy.Environment()
processing_capacity_per_hour = simpy.Resource(env, capacity=1000)
DEMAND_IN_HOUR_1 = 100

def production_plan(env, processing_capacity, plan_for_hour_x): 
    yield env.timeout(1)
    print(f'The current time is {env.now}')

    req_list = [processing_capacity.request() for _ in range(plan_for_hour_x)]
    
    yield AllOf(env, req_list)
    print(f'Resources in use: {processing_capacity.count}')
    yield env.timeout(1)

    for req in req_list:
        processing_capacity.release(req)

    print(f'Resources in use: {processing_capacity.count}')
            
env.process(production_plan(env, 
                            processing_capacity_per_hour, 
                            DEMAND_IN_HOUR_1))
env.run(until=5)
print(f'The ending time is {env.now}')

这将打印出来

代码语言:javascript
运行
复制
The current time is 1
Resources in use: 100
Resources in use: 0
The ending time is 5

但是听起来容器可能比资源更好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68674752

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档