如何在添加单个Agent至pop_palletsLine1时同时赋值两个变量?
问题:创建单个Agent并同时为多个变量赋值
我设置了一个每日触发4次的循环事件,当库存大于1托盘时,需要创建新Agent并添加至pop_palletsLine1种群,同时为该Agent的v_toLineFrom变量赋值为"Silo"、v_movementNbr变量赋值为6。
已知单个变量赋值的写法:
if (v_inventorySiloMalt >= p_lbPerPallet) { add_pop_palletsLine1().v_toLineFrom = "Silo"; }
但以下写法会创建两个Agent,每个仅被赋值一个变量,无法满足需求:
if (v_inventorySiloMalt >= p_lbPerPallet) { add_pop_palletsLine1().v_toLineFrom = "Silo"; add_pop_palletsLine1().v_movementNbr= 6; }
解决方案
方法1:先保存Agent实例再批量赋值
因为每次调用add_pop_palletsLine1()都会生成一个新的Agent,所以要先把创建好的Agent存入变量,再对变量的多个属性赋值:
if (v_inventorySiloMalt >= p_lbPerPallet) { // 替换PalletAgent为你实际使用的Agent类名称 PalletAgent newPallet = add_pop_palletsLine1(); newPallet.v_toLineFrom = "Silo"; newPallet.v_movementNbr = 6; }
方法2:用自定义构造器直接赋值(可选)
如果你的Agent类提前定义了带参数的构造方法,可以在创建Agent时直接传入参数完成赋值:
// 假设Agent类有构造方法:public PalletAgent(String toLineFrom, int movementNbr) if (v_inventorySiloMalt >= p_lbPerPallet) { add_pop_palletsLine1("Silo", 6); }
这种方式更简洁,但需要先在Agent类中添加对应的构造逻辑。
内容的提问来源于stack exchange,提问作者Sara
相关产品推荐
相关产品推荐

