Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我可以在AnyLogic拆分组件中将单个代理拆分为多个代理吗?_Java_Anylogic - Fatal编程技术网

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

Java 我可以在AnyLogic拆分组件中将单个代理拆分为多个代理吗?,java,anylogic,Java,Anylogic,我有一个关于AnyLogic PMI库的“拆分”组件的问题。为了更好地解释这个案例,我将发布我正在构建的场景的一部分的图片 在上图中,左侧的源元素生成“Requirement”类型的对象(它是从代理类继承的自定义类)。此类代表一个矩阵,每个客户“Ci”对应每个产品“Pi”的要求(给出了一个矩阵示例): 该矩阵可以被视为代理的集合,因为每一行都是与我的电路块的第一个其他部分相关的代理(逻辑上,它包含有关从产品供应商订购的产品Pi数量的信息),每一列都是与我的电路块的第二个其他部分相关的代理(逻辑

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

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

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

在拆分块的“输入时打开”事件中,可以构建一个脚本,该脚本首先迭代行,并在“输出”拆分的端口上发送每一行,然后迭代列,并在“输出副本”拆分的端口上发送每一行。我将发布一个脚本伪代码,该脚本将放在“输入时打开”事件中:

matrix=(需求)代理;
迭代器REQUITER=matrix.getRequirements();//迭代行
while(requiter.hasNext())
{
对象当前=请求者。下一步();
//将电流推入分体式输出端口
}
迭代器sellIter=matrix.getRequirements();//迭代列
while(sellIter.hasNext())
{
对象当前=sellIter.next();
//在拆分的输出复制端口中推送电流
}

我会在
nuove matrici
之后放置
Sink
Exit
块。如果初始代理矩阵在生成代理后会被破坏,请使用
Sink
,如果初始代理以后应该以某种方式保存和重用,请使用
Exit
Split
块可以被删除。而不是块,请放置两个<代码>输入连接到以下相应队列的块

在输入时的
内部执行
Sink\Exit的
操作执行代码。生成的代理可以使用
enterBlockName.take(new MyAgent(args…);

例如,考虑到代码生成
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
}
matrix=(需求)代理;
迭代器REQUITER=matrix.getRequirements();//迭代行
while(requiter.hasNext())
{
对象当前=请求者。下一步();
enter.take(new MyAgent(current));//在顶部流中推送当前
}
迭代器sellIter=matrix.getRequirements();//迭代列
while(sellIter.hasNext())
{
对象当前=sellIter.next();
输入1.take(new MyAgent(current));//在底部流中推送当前
}
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
}