SimPy 使用逻辑在两个或多个资源之一之间进行选择

SimPy using logic to choose between one of two or more resources

我如何为进程提供从两个或多个不同资源中进行选择的选项?

我需要这样做,因为我将维护活动模拟为流程,资源代表可用于执行维护的共享设施。一些维护活动只能使用一种类型的设施,但其他维护活动更灵活,可以选择使用多种类型的设施。

因此,在 SimPy 术语中,一个进程只能选择一种唯一类型的资源,但其他进程可以从多种唯一类型的资源中进行选择。

对我要实现的目标的粗略解释:

resource_A_req = resource_A.request()

resource_B_req = resource_B.request()

yield resource_A_req or resource_B_req

学习如何使用 FilterStore 是否可以解决我的问题?

yield resource_A_req | resource_B_req 可能适合您。然后您需要检查哪个请求成功并在另一个请求上调用 cancel() 以避免出现问题(在文档中搜索 "condition events")。

FilterStore 也可能有效。有关简短示例,请参阅 this answer