如何在Anylogic的存储系统中访问指定存储单元
解决方法
首先你的代码存在3处明显问题,按如下步骤修改即可:
- 语法错误:你定义的
storageSystem本身就是包含3个存储对象的集合,不需要额外加Storages字段,原代码中间的空格和多余的Storages会直接触发语法报错 - 参数类型错误:AnyLogic的
Storage类getSlot方法的三个入参均为整数,依次对应通道编号、货位编号、层级编号。如果你代码中的Bay1没有提前定义为存储货位编号的int变量,直接传入会报错 - 缺少逻辑承接:当前代码只写了访问货位的表达式,没有赋值给变量或者执行后续操作,不会产生任何实际效果
正确代码示例
如果要获取storageSystem中第一个存储单元的0通道、1号货位、0层级的货位,写法如下:
// 用Slot类型变量承接获取到的目标货位 Slot targetSlot = storageSystem[0].getSlot(0, 1, 0);
如果你确实有提前定义Bay1为int类型的货位编号变量,可以用如下写法:
// 假设你已经提前定义过int Bay1 = 1; Slot targetSlot = storageSystem[0].getSlot(0, Bay1, 0);
注意事项
- 如果你定义的
storageSystem是ArrayList<Storage>类型而非数组,需要把storageSystem[0]替换为storageSystem.get(0)来获取第一个存储单元 - 所有编号默认从0开始计数,不要超出你在存储单元中定义的通道、货位、层级数量上限,否则会抛出越界异常
内容的提问来源于stack exchange,提问作者sljb12
相关产品推荐
相关产品推荐

