符合Wait对象中某些条件的Anylogic-Releeasing代理

问题描述

我有一家生产某些产品的工厂,并且在工厂中,基本上有3种不同的产品。我正在尝试对操作图进行编码,以便如果某个产品具有一定数量的进货订单,则将产品从“等待”对象中释放出来,然后释放的产品将进入代表生产的Delay对象。

该产品是具有名称参数的代理,并且有三个产品A,B,C。是否有实现该产品的方法
总结一下,有三种产品都保存在一个Wait对象中。我要实现这样的一种情况:如果有数量为3的产品A的订单,那么从等待对象中释放产品A的3。

I simplified the model here 我有两种类型的产品,A和B。因此,在分发中心中,产品会一直存储到发布为止。产品代理用于分配中心流,其字符串参数为“类型”。在订单流中使用订单代理,其字符串参数“ ProductType”和整数参数“ Quantity”。也就是说,订单包含有关订购哪种产品以及订购多少产品的信息。

This is where I would like to code such that only certain products ordered by an order is released with the quantity specified by the order 目前,我是这样编码的,但是当然不能在“ pool”中仅找到一个产品。如果这样做,我需要为每个产品创建一个单独的Wait对象,但是我想避免它..

解决方法

您需要创建一个用于指定订单信息的订单代理...此订单将具有一个名为numProductA的参数,该参数指出该订单有多少产品。

然后,您可以为您的订单代理服务。

List <Product> productsA=findAll(waitBlock,w->w.product.type.equals("A")).subList(0,agent.numProductsA);
for(Product p : productsA){
     p.order=agent;//You will probably need to associate that product to that order so you can know later in the flow.
     waitBlock.free(p);
}

在这里,我假设您的等待块上将始终有足够的prodcutsA ...如果不是这种情况,则您需要实施其他逻辑,具体情况视情况而定或多或少。