【问题标题】:Anylogic-Releasing agents matching certain condition from Wait object匹配来自等待对象的特定条件的任意逻辑释放代理
【发布时间】:2020-10-23 07:44:52
【问题描述】:

我有一个生产某些产品的设施,在该设施中,基本上有3种特色产品。我正在尝试编写一个动作图表,以便如果有一定数量的某个产品的传入订单,该产品将从“等待”对象中释放,然后发布的产品进入代表生产的延迟对象。

产品是一个带有name参数的代理,有A、B、C三个产品。有没有办法实现呢?
总而言之,共有三种产品都保存在一个 Wait 对象中。我想实现这样,如果有数量为 3 的产品 A 的订单,则从 Wait 对象中释放 3 个产品 A。

I simplified the model here 我有 2 种产品,A 和 B。所以在配送中心,产品被存储到发布。产品代理在配送中心流中使用字符串参数“type”。订单代理在订单流中使用字符串参数“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 目前,我这样编码,但当然它不能在“池”中找到例如一个产品。如果我这样做,我需要为每个产品有一个单独的等待对象,但我想避免它..

【问题讨论】:

    标签: java simulation anylogic


    【解决方案1】:

    您需要创建一个订单代理来指定您的订单信息...该订单将有一个名为 numProductA 的参数,该参数说明该订单有多少产品 A。

    然后你可以为你的订单代理做。

    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...

    【讨论】:

    • 嗨!谢谢!实际上我忘了说我已经有一个单独的订单流程,其中包含另一个等待块。在这里,订单进来了,订单包含产品名称和产品数量。订单保留在另一个等待块中,如果完成,它们将被释放。所以整体的action chart逻辑是先检查产品在放货前的waitblock中的数量,如果数量不够,先发可用数量,剩下的数量触发生产。
    • 所以我想在这种情况下,我可以首先声明一个整数,例如 int deliverQuantity = orderQuantity - StockA 并将其设置为: List productsA=findAll(waitBlock,w->w.product .type.equals("A")).subList(0,agent.deliverQuantity)
    • 您好,我尝试了代码,并给出错误“产品无法解析或不是字段”以及“代理无法解析为变量”。我目前有带有类型参数的产品代理和带有数量和名称参数的订单代理。检查股票后,我正在使用行动图。订单有自己的等待块,产品保存在单独的等待对象中。
    • 有一个事件处理这个订单处理的动作图,订单处理有一个索引。该索引上升到订单等待对象的大小。所以我尝试如下: if(order.get(index).Product == "A"){ List productsA=findAll(db,w->w.Product.type.equals("A")) .subList(0,agent.Quantity); for(产品 p : productsA){ db.free(p);} order.free(order.get(index)); }。 db 是产品的等待对象的名称。我想我在 findall 部分搞砸了,但我找不到在哪里..你能就此提供建议吗?非常感谢您!
    • 老实说,我需要查看您的模型...我显然使用 Product 假设您将代理类型称为 Product,但如果您没有,我不可能猜到...而且我在这里很懒惰猜谜游戏...所以您要么提供所有需要的信息,要么分享模型,要么接受自己一个人..想象我是最重要的人在世界上,与我协商 15 分钟将花费你一生的积蓄......你会怎么做才能让这 15 分钟有意义?您将如何准备您的问题以优化这 15 分钟...
    猜你喜欢
    • 2020-11-07
    • 2019-02-07
    • 1970-01-01
    • 2021-04-16
    • 1970-01-01
    • 2018-08-18
    • 1970-01-01
    • 2017-04-09
    • 2019-11-22
    相关资源
    最近更新 更多