问:[Anylogic]测量生产吞吐率

时间:2017-10-05 02:29:27

标签: throughput anylogic

我想知道如何测量Anylogic生产线的吞吐率。

问题:是否有任何方法可以测量接收器处代理的离开时间? >>(我将通过反转出发值之间的时间来计算吞吐率。)

目前,我只是根据Little定律计算吞吐量,我使用平均提前期和生产线的WIP水平。我不确定基于此计算的吞吐量值是否等于离开之间的时间的倒置值?

我希望你们能帮助我解决这个问题。 提前谢谢!

2 个答案:

答案 0 :(得分:0)

有一个功能" time()"以模型时间单位返回当前模型时间。使用此功能,您可以知道代理A和代理B离开系统的时间,并计算这些时间之间的差异。您可以通过在" On退出"中编写如下代码来完成此操作。 " sink"的领域块:

statistic.add(time() - TimeOfPreviousAgent);
TimeOfPreviousAgent = time();

" TimeOfPreviousAgent"是" double"的变量。类型; "统计"是一个"统计"用于收集测量值的元素

教程Bank Office中描述了这种测量流程时间的方法。

作为替代方案,您可以将每个座席的离开时间存储到collection。然后,您需要迭代存储在集合中的样本,以找出每对样本之间的差异。

答案 1 :(得分:0)

不确定这是否会有所帮助,但这取决于塔蒂亚娜的回答。在代理状态图表中,您可以创建变量TimeIn,TimeOut和TimeInSystem。然后在Statechart入口点有,

TimeIn = time();

在最终状态下,

TimeOut = time();
TimeInSystem = TimeOut - TimeIn; 

要观察每个代理的这些时间,您可以使用以下代码

System.out.println("I came in at " + TimeIn + " and exited at " TimeOut + " and spent " + TimeInSystem + " seconds in the system";

然后,对于统计分析,您可以通过在Main变量,TotalTime,TotalAgentsServiced,AvgServiceTime,MaxServiceTime,MinServiceTime中创建来计算所有代理的最小,平均和最大吞吐量,然后添加一个函数调用,它说TrackAvgTimeInSystem ... function添加参数NextAgent,类型为double。在函数体中有,

TotalTime += NextAgent;
TotalAgentsServiced += 1;
AverageServiceTime = TotalTime/TotalCarsServiced;

if(MinServiceTimeReported == 0)
{
    MinServiceTime = NextAgent;
}
else if(NextAgent < MinServiceTime)
{
    MinServiceTime = NextAgent;
}
if(NextAgent > MaxServiceTime)
{
    MaxServiceTime = NextAgent;
}

然后在你的代理人的状态图表中,在最终状态中调用函数

get_Main().TrackAvgTimeInSystem(TimeInSystem);

然后计算所有代理的最小,最大和平均吞吐量。