gpt4 book ai didi

java - 我可以在 AnyLogic 拆分组件中将单个代理拆分为多个代理吗?

转载 作者:行者123 更新时间:2023-11-30 02:42:02 26 4
gpt4 key购买 nike

我对 AnyLogic PMI 库的“拆分”组件有疑问。为了更好地解释这个案例,我将发布我正在构建的场景的一部分的图片。 AnyLogic circuit .

在上图中,左侧的源元素生成“Requirement”类型的对象(它是继承自 Agent 类的自定义类)。此类表示一个矩阵,其中包含每个客户“Ci”的每个产品“Pi”的要求(给出了矩阵示例):

Requirement Matrix

该矩阵可以被视为代理的集合,因为每一行都是与我的电路 block 的第一个其他相关的代理(逻辑上它包含有关从产品供应商订购的产品 Pi 的数量的信息)并且每列都是与我的电路 block 的第二个其他相关的代理(逻辑上它包含客户 Ci 的销售预测)。

可以在 split block 的“on at Enter”事件中构建一个脚本,该脚本首先迭代行并在“out”split 端口上发出每个行,然后迭代列并在“out”split 端口上发出每个行。 “out-copy” split 的端口。我将发布我想放置在“on at Enter”事件中的脚本的伪代码:

matrix = (Requirement)agent;
Iterator<Object> reqIter = matrix.getRequirements(); //iterate the rows
while (reqIter.hasNext())
{
Object current = reqIter.next();
//PUSH current in the out port of the split
}

Iterator<Object> sellIter = matrix.getRequirements(); //iterate the columns
while (sellIter.hasNext())
{
Object current = sellIter.next();
//PUSH current in the out-copy port of the split
}

最佳答案

我会将SinkExit block 放在nuove matrici之后。如果初始代理矩阵在生成代理后可以被销毁,则使用“Sink”,或者如果初始代理应保存并稍后以某种方式重用,则使用“Exit”。 Split block 可以被删除。将两个 Enter block 连接到相应的后续队列,而不是该 block 。

Sink\ExitOn Enter 操作内执行代码。生成的代理可以使用 enterBlockName.take(new MyAgent(args...));

注入(inject)到相应的队列中

例如,考虑到代码生成 Agent 类型的实例,它将是:

matrix = (Requirement)agent;
Iterator<Object> reqIter = matrix.getRequirements(); //iterate the rows
while (reqIter.hasNext())
{
Object current = reqIter.next();
enter.take( new MyAgent(current) ); //PUSH current in the top flow
}

Iterator<Object> sellIter = matrix.getRequirements(); //iterate the columns
while (sellIter.hasNext())
{
Object current = sellIter.next();
enter1.take( new MyAgent(current) ); //PUSH current in the bottom flow
}

关于java - 我可以在 AnyLogic 拆分组件中将单个代理拆分为多个代理吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41375576/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com