带条件退出队列,收集以过滤目的地
Posted
技术标签:
【中文标题】带条件退出队列,收集以过滤目的地【英文标题】:Exit queue with condition, Collection to filter destinations 【发布时间】:2020-08-22 10:28:47 【问题描述】:我在 AnyLogic 中模拟一个配送系统,在该系统中产品使用不同的车辆在世界各地运输。
一开始,产品是在众多工厂之一生产的。每个产品都有一个变量 v_destination1 (String) 用于显示下一个目的地。
代理(产品)在代理类型“工厂”中,更具体地说,在队列块中。 我想编写一个代码,调用车辆进入工厂并提取产品。 困难在于代码必须包含以下条件: - 如果至少有 10 个产品具有相同的目的地(可变),则调用该车辆 v_destination1) 在队列块中 这些产品代理应该离开队列块并进入提货块。
我有以下想法,但我不知道如何继续:
1.1 使用队列中的所有产品创建一个集合 (c_waitingTruck)
1.2 int count (c_waitingTruck, p -> p.v_destination1 ...
--> 这里不知道怎么写正确的条件
1.3 if (count >= 10)
检查是否达到最少 10 个产品。
2.1 使用队列中的所有产品创建一个集合 (c_waitingTruck)
2.2 filter (c_waitingTruck, c -> c.v_destination1 ...
--> 同 1.2
2.3if (filter.size() >= 10)
有人可以帮助我吗?如果有任何建议,我将非常高兴。
【问题讨论】:
【参考方案1】:不要使用队列,使用称为等待的等待块。 在等待块的on enter中,检查金额是否满足
List <Product> products=findAll(wait,a->a.v_destination1.equals(agent.v_destination1);
if(products.size()>=10)
//call truck, however you do that
// then release your products into the queue that comes before the pickup block
for(Product p : products)
wait.free(p);
我没有测试这段代码,所以它可能有错误,但至少是这样的想法
【讨论】:
以上是关于带条件退出队列,收集以过滤目的地的主要内容,如果未能解决你的问题,请参考以下文章