对于一个托盘架系统的模拟,我想预先填充该系统的代理(例如,一个80%的填充等级是给定的)。在此之后,预填充框应该由不同的源块生成。
理论上,我认为可以在主方法中使用命令palletrack.put(int row, int position, int level, boolean leftAisle, Agent agent)
手工添加代理。
但是,我需要在启动时添加数千个代理,这将是繁琐的手工操作(特别是如果我想从不同的填充级别情况开始)。
这些代理的数据可在Excel文件中获得.
是否有方法将Excel文件实现为启动状态?在Excel文件中,我拥有所需的代理的所有属性,包括它们存储位置的行、位置、级别和深度。
提前谢谢。
发布于 2021-08-21 06:33:56
你有两个选择
选项1: Excel文件
只需使用连接面板中的对象链接模型中的Excel文件即可
然后,您可以使用下面类似的代码初始化所有项目
int excelRow = 2;
String sheetName = "Sheet1!";
String cellName = sheetName + "A" + excelRow;
while (excelFile.cellExists( cellName )) {
int row = (int)excelFile.getCellNumericValue( sheetName + "A" + excelRow);
int position = (int)excelFile.getCellNumericValue( sheetName + "B" + excelRow);
int level = (int)excelFile.getCellNumericValue( sheetName + "C" + excelRow);
boolean leftAisle = excelFile.getCellBooleanValue( sheetName + "D" + excelRow);
MyAgent agent = add_myAgent();
rackSystem.put(row, position, level, leftAisle, agent);
excelRow ++; // Increase the row that we will lookup in the Excel
}
只要行存在,您就可以从一条excel行转到另一条excel行,然后创建一个代理,并根据需要将它放在机架中。
在这个例子中,我们假设A到D列包含机架中代理的相关位置数据
编辑:大多数情况下,您需要让代理进入流程流,以便您可以再次移动它们(通常通过RackPick块),您可以使用enter块-参见下面的示例
您可以简单地调用enter.take(Agent agent)
NB Stuart Rossiter编辑:您可以想到托盘架的put
函数,将代理放入托盘架所在的空间网络中的空间节点中。但是,如果代理事先不在空间网络中,它们就不会被‘完全’添加到网络中,当您尝试从机架中选择代理时,您将得到一个"Agent不在网络中“的错误。(我怀疑实际上在内部发生的情况是,机架中的每个单元都有与其相关联的网络内坐标,但代理直到您选择它时才显式地存在于网络中。无论内部是什么,重点是必须“告诉”代理,它在被选中之前在空间网络中。)
您可以从以下几个方面考虑到这一点:
(i)在setNetwork
之后添加一个显式的put
调用;例如,
rackSystem.put(row, position, level, leftAisle, agent);
agent.setNetwork(network);
(其中network
是空间网络,您的托盘架是其中的一部分)。
(ii)在同一空间网络中将初始位置设置为任意节点的人口中的代理(因此,当您在托盘架上put
它们时,它们就已经在网络中了)
(3)让Enter块(见上文)将其初始位置设置为空间网络中的某个任意节点。(与上文第(二)项相同)
(iv)切换到使用新的存储元素并从材料处理库中存储/检索块(添加在AnyLogic 8.7.7中)。它们没有上面提到的网络设置问题,并且取代了元素(这些元素永远不会被更新)。您可以使用store
函数而不是put
来以编程方式向存储元素添加代理。
备选方案2: AnyLogic内部数据库
只需将excel工作表导入到AnyLogic DB中,然后使用for循环对表中的条目进行循环。
List<Tuple> rows = selectFrom(db_table).list();
for (Tuple row : rows) {
traceln(
row.get( db_table.db_column )
);
}
https://stackoverflow.com/questions/68858025
复制相似问题