我正在通过离散事件模拟在 Anylogic 中为库存管理系统建模。
在整个模型中,根据excel中的数据集添加新资源。我用源代码块对此进行了建模。在源块中,代理的几个参数被添加到资源代理中,我在模型的其余部分需要这些参数(例如购买日期、源活动级别等)。我现在希望在保留参数的同时将这些代理添加到我的资源池中。但是,由于他们在源代码块中输入模型,我不确定如何对此建模/编码。
我试图在 enterblock 之后抓住资源,但这不起作用。我还尝试使用变量“varNumberResources”来指定 ResourcePool 的容量,每次资源离开 enterblock 后都会对其进行调整,但是参数不会添加到 resourcePool 中的代理。
您不能将自定义资源添加到资源池中,因此唯一的方法是使用
set_capacity(n)
方法。
然后您将不得不使用资源池的操作中的“在新单元上”来定义这个新的资源特征
您也不能使用源或输入块添加资源。所以不要那样做。通过设置资源池的容量,新资源将自动添加到模型中,但您需要使用 on new unit 操作来对它们进行任何操作
有一种方法可以达到你的目的。不要 按源创建资源代理,按资源池块创建。
Step1:拖动一个类型为资源的空种群,创建一个int变量index=1,它是你数据表中的行号;
Step2:设置资源池,如图选择“Add units to”:custom population并设置你在step1中创建的“Population”;在“On new unit” action add下面的代码;
unit.set_Index(index);//set the index for the new rescources you created
index++;
Step3: 在模型启动时写一个初始化资源参数的函数
for(Rescource r:rescources_pop)
{
// select the parement by rescources index
List< Tuple > r_info_list =
selectFrom( rescources_table ).
where( rescources_table.index.eq( r.index ) ).
list();
// set paraments
Tuple tup=r_info_list.get(0);
r.set_purchase_date(tup.get( rescources_table.purchase_date ));
}