2017-10-05 132 views
1

我想知道如何測量Anylogic生產線的吞吐率。問:[Anylogic]測量生產吞吐率

問題:是否有任何方法來測量代理程序在接收器塊的離開時間? >>(我將通過反轉出發值之間的時間來計算吞吐率)。

目前,我只是簡單地根據Little的定律計算吞吐量,我使用該行的平均提前期和在製品水平。我不確定基於這個計算的吞吐量值是否等於離開時間的倒數值?

我希望你們能幫我弄明白。 在此先感謝!

+0

不幸的是,現在還不是很清楚你現在需要測量什麼。你能舉個例子嗎? 在完成包含在AnyLogic中的步驟教程Bank Office(https:// help)後,您可能會完成所需的測量。anylogic.com/nav/1_3)。它教導如何衡量客戶在隊列中等待的時間以及他在銀行中花費的時間。 –

+0

@TatianaGomzina感謝您的評論。 – Carlzeriss

+0

@TatianaGomzina 我想測量每個離開系統的代理之間的時間。例如,第一個代理在5秒(模型時間)離開系統(流入接收器塊)。然後,下一個代理離開系統8秒,所以離開系統的這兩個代理之間的時間間隔爲3秒。然後,第三位代理人離開系統15秒,這意味着第二次出發時間爲7秒。無論如何要衡量這一點? – Carlzeriss

回答

0

有一個函數「time()」,以模型時間單位返回當前模型時間。使用此功能,您可以知道代理A和代理B離開系統的時間,並計算這些時間之間的差異。您可以通過在「匯」塊的「退出」現場寫像下面的代碼這樣做:

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

「TimeOfPreviousAgent」是「雙」類型的變量; 「統計」是用於收集測量的「統計」元素

在教程Bank Office中描述了測量過程流中時間的方法。

作爲替代方案,您可以將每個代理的離開時間存儲到collection。然後,您需要遍歷集合中存儲的樣本,以找出每對樣本之間的差異。

+0

非常感謝你的解決方案!我會嘗試將它們應用到模型中。 :) – Carlzeriss

0

不知道這是否會有所幫助,但會阻止塔蒂亞娜的回答。在代理狀態圖中,您可以創建變量TimeIn,TimeOut和TimeInSystem。然後,在狀態圖入口點有,

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

然後進行統計分析,您可以通過在主變量,TotalTime,TotalAgentsServiced,AvgServiceTime,MaxServiceTime,MinSer中創建來計算所有代理的最小,平均和最大吞吐量viceTime,然後添加一個函數調用它說TrackAvgTimeInSystem ...在函數添加參數NextAgent與類型雙。在函數體有,

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

這然後計算最小,最大和所有代理的平均吞吐量。

+0

謝謝你的建議! – Carlzeriss