You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AnyLogic中如何通过物料搬运库Store块按数据库指定位置存储产品

AnyLogic物料搬运库Store块按预设SKU-货位规则定点存储实现方法

第一步:导入Excel映射数据并预加载

  • 将整理好SKU与货位对应关系的Excel文件拖拽至AnyLogic工程画布,命名为skuLocationExcel,配置文件读取规则:指定对应工作表、设置第一行为表头、加载时机选择「模型启动时自动加载」。
  • 在Main代理内定义全局HashMap变量skuTargetLocation,类型为HashMap<String, StorageLocation>,用于内存中快速匹配SKU对应的货位对象。
  • 在Main的On startup(模型启动)回调中编写代码,读取Excel数据填充映射表,参考代码如下:
skuTargetLocation.clear();
// 遍历Excel所有数据行,注意列索引从0开始计数,根据你的Excel列顺序调整下标
for (int row = 1; row <= skuLocationExcel.getLastRowNum(); row++) {
    String sku = skuLocationExcel.getCellStringValue(row, 0); // 第1列存SKU
    String rackMark = skuLocationExcel.getCellStringValue(row, 1); // 第2列存货架标识
    int bay = skuLocationExcel.getCellNumericValue(row, 2).intValue(); // 第3列存货位列号
    int level = skuLocationExcel.getCellNumericValue(row, 3).intValue(); // 第4列存货位层号
    // 假设你的存储系统对象命名为warehouseStorage,匹配到对应货位对象
    StorageLocation loc = warehouseStorage.getLocation(rackMark, bay, level);
    skuTargetLocation.put(sku, loc);
}

第二步:配置Store块的自定义货位选择逻辑

  • 为待存储的货品/托盘Agent添加字符串类型参数sku,在货品生成(Source块)环节为该参数赋值实际SKU值。
  • 拖入物料搬运库的Store块,将块属性中的货位选择模式从默认的「自动选择空闲位置」修改为「自定义位置」。
  • 在Store块的Location choice(位置选择)代码编辑区,编写匹配逻辑返回对应货位即可,参考代码:
// 优先取预设货位,做异常兜底避免报错
StorageLocation presetLoc = skuTargetLocation.get(agent.sku);
if (presetLoc != null && presetLoc.isAvailable()) {
    return presetLoc;
}
// 预设货位不存在/被占用时,自动寻找空闲货位兜底,同时打印日志提示
traceln("SKU【" + agent.sku + "】预设货位不可用,已自动分配空闲货位");
return warehouseStorage.findFreeLocation();

配置参考界面

Store块自定义位置配置界面

注意事项

  • 如果你的Excel中直接存储货位唯一ID而非货架/排/层信息,可以遍历warehouseStorage.locations()集合匹配ID,再存入映射表即可,核心逻辑一致。
  • 如果单个SKU对应多个可选预设货位,可以将HashMap的值类型改为ArrayList<StorageLocation>,每次返回列表中第一个可用货位即可。
  • 确保存储系统(Storage块)的初始化时机早于映射表加载时机,避免启动时找不到货位对象报错。

内容的提问来源于stack exchange,提问作者Ritika Saini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 02:15:26