一个代理的并行活动
Parallel activities for one agent
有没有办法让每个代理发生并行服务 and/or 延迟,然后继续使用花费时间最长的 activity。例如,如果我有一个可以同时进行绘制和服务的代理,每个代理都需要一个具有不同处理时间的不同资源池,但是当花费时间最长的进程结束时,代理将继续前进。
在 1 个服务元素内动态设置延迟持续时间和所需资源可能最简单:
计算您的代理在每种情况下将使用的持续时间(绘画 = 5 分钟,服务 = 10 分钟)--> 使用较长的值作为服务延迟
同时,使代理需要 1 名油漆工和 1 名服务工程师作为资源。
唯一的缺点:你的画家也会停留 10 分钟。
替代方法可能涉及创建您自己的、完全基于代理的设置,并使用捕获和释放
使用 Split 块将您的代理拆分为两个并行任务(服务块),然后使用 Combine 将它们再次组合回去(使用 Combine 块输出原始代理 1)。
您还可以在 split/combine 区域周围使用 RestrictedAreaStart 和 RestrictedAreaEnd 块(容量 1)以确保其他代理不能 'jump in' 而最长的并行进程仍然是 运行 (但较短的已经完成了)。
类似于下面的内容(带有资源池)。
有没有办法让每个代理发生并行服务 and/or 延迟,然后继续使用花费时间最长的 activity。例如,如果我有一个可以同时进行绘制和服务的代理,每个代理都需要一个具有不同处理时间的不同资源池,但是当花费时间最长的进程结束时,代理将继续前进。
在 1 个服务元素内动态设置延迟持续时间和所需资源可能最简单:
计算您的代理在每种情况下将使用的持续时间(绘画 = 5 分钟,服务 = 10 分钟)--> 使用较长的值作为服务延迟
同时,使代理需要 1 名油漆工和 1 名服务工程师作为资源。
唯一的缺点:你的画家也会停留 10 分钟。
替代方法可能涉及创建您自己的、完全基于代理的设置,并使用捕获和释放
使用 Split 块将您的代理拆分为两个并行任务(服务块),然后使用 Combine 将它们再次组合回去(使用 Combine 块输出原始代理 1)。
您还可以在 split/combine 区域周围使用 RestrictedAreaStart 和 RestrictedAreaEnd 块(容量 1)以确保其他代理不能 'jump in' 而最长的并行进程仍然是 运行 (但较短的已经完成了)。
类似于下面的内容(带有资源池)。