在整个模拟 Anylogic 中使用特定参数为 ResourcePool 创建资源

问题描述 投票:0回答:2

我正在通过离散事件模拟在 Anylogic 中为库存管理系统建模。

在整个模型中,根据excel中的数据集添加新资源。我用源代码块对此进行了建模。在源块中,代理的几个参数被添加到资源代理中,我在模型的其余部分需要这些参数(例如购买日期、源活动级别等)。我现在希望在保留参数的同时将这些代理添加到我的资源池中。但是,由于他们在源代码块中输入模型,我不确定如何对此建模/编码。

我试图在 enterblock 之后抓住资源,但这不起作用。我还尝试使用变量“varNumberResources”来指定 ResourcePool 的容量,每次资源离开 enterblock 后都会对其进行调整,但是参数不会添加到 resourcePool 中的代理。

resources simulation anylogic event-simulation
2个回答
0
投票

您不能将自定义资源添加到资源池中,因此唯一的方法是使用

set_capacity(n)
方法。

然后您将不得不使用资源池的操作中的“在新单元上”来定义这个新的资源特征

您也不能使用源或输入块添加资源。所以不要那样做。通过设置资源池的容量,新资源将自动添加到模型中,但您需要使用 on new unit 操作来对它们进行任何操作


0
投票

有一种方法可以达到你的目的。不要 按源创建资源代理,按资源池块创建。

Step1:拖动一个类型为资源的空种群,创建一个int变量index=1,它是你数据表中的行号;

enter image description here

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++;

enter image description here

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 ));
}
© www.soinside.com 2019 - 2024. All rights reserved.