当前位置: 首页 > 知识库问答 >
问题:

AnyLogic:根据条件选择特定的资源集

梅飞宇
2023-03-14

我用AnyLogic创建了一个简单的模型(见截图)。现在我想添加一个条件,选择服务块中的两个资源集中的一个。例如,以下场景应适用:如果队列中有5个以上的部件,工作人员3和工作人员4应执行服务。如果有的话

共有2个答案

闻人弘雅
2023-03-14

一种简单的方法是使用抓取延迟(和完成后释放)块,而不是服务。在抓取之前,您可以将条件放入选择输出块中。这样地:

乜心思
2023-03-14

首先,您不需要队列,因为服务块已经有一个队列...因此,对于资源选择条件中的这个特定示例,您将执行以下操作:

service.queueSize()>5 ? (worker3.containsUnit(unit) || worker4.containsUnit(unit))
:
(worker1.containsUnit(unit) || worker2.containsUnit(unit))

你可以换服务。带有队列的queueSize()。如果您坚持使用队列,则使用size()。之后,您需要确保在需要时重新计算条件,对于这个特定的示例,我认为您只需要在服务块的退出操作时重新计算它们:

self.recalculateResourceChoiceConditions();
 类似资料:
  • 在一个AnyLogic项目中,在“抓住”块中,我需要从资源集中自定义地选择资源。在“抢占”的属性选项卡中阻止字段“resource Sets”,选中值和标志“Customize resource Choice”。在“资源选择条件”代码部分,我需要做出如下选择: 我如何检查一个资源单元是否来自给定的资源池,然后根据资源的特性区分它们?谢谢你。最诚挚的问候。

  • 我试图创建一个Seize块,根据通过该块的代理类型,从不同的资源池中进行选择。 我的第一次尝试是在抓取块中创建资源集参数的动态引用,如图所示: 资源集中动态值的图像 其中Extensibles和Camabajas3e是资源池的名称。 但我得到了错误:“类型不匹配:无法从ResourcePool转换到ResourcePool[] 我的第二次尝试是将两个资源池都包括在列表中,而是使用参数“资源选择条件

  • 问题内容: 我有一个名为@status的变量,该变量在此select语句之前设置: 我只想选择if列,否则我想为shipwith选择null。我该如何完成? 问题答案:

  • 我有三张桌子 表A 我需要根据传递的参数将TableA连接到TableB或TableC。ie 我尝试了以下查询 但是,这是给语法错误。有人能帮忙吗? 解决方案:

  • 问题内容: 我有这样的桌子 我需要选择何时类型为0,何时类型为1,何时类型为N … 我怎样才能做到这一点? 问题答案:

  • 我正在解决一个作业车间调度问题,我有20个作业(代理)和5台机器(资源),每个作业作为访问机器的特定顺序。我的问题是:我如何确保每个作业都遵循它的顺序。 这就是我所做的。一个称为“作业”的代理和5个代理,每个代理对应一台机器。一个与每个服务块相关联的资源池。在集合enterblocks中,我选择了5个enter块。 在代理“jobs”中,我有这个。从数据库文件读取的与每个作业相关联的参数,以及我在