提问者:小点点

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


我正在通过离散事件模拟的方式在Any逻辑中建模库存管理系统。

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

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


共2个答案

匿名用户

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

然后,您必须使用resourcePool操作中的“on new unit”来定义这个新的资源特征

此外,您不能使用source或enter块添加资源。所以不要这样做。通过设置resourcePool的容量,新资源将自动添加到模型中,但您需要使用on new单元操作来处理它们

匿名用户

有一种方法可以实现您的目标。不要按源创建资源代理,而是按资源池块创建。

Step1:拖动一个null人口,其类型是resources,创建一个int变量index=1,它是您的数据表中的行num;

在此处输入图像描述

Step2:设置资源池,如图选择“添加单位到”:自定义人口并设置您在step1中创建的“人口”;在“打开新单位”操作中添加以下代码;

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 ));
}