[英]differen delay times for the same agent type (AnyLogic)
希望你們都平安
假設我有以下過程:2 個不同的源,隊列、延遲和接收器。 我有一個叫“病人”的代理人。
我的目標:為來自第一來源(使用百分比)的患者提供不同的服務費率(延遲時間)。 換句話說,我想要例如; 10% 的患者(來自來源 1)的延遲時間等於 5 分鍾,90% 的延遲時間等於 10 分鍾。
我所做的是:我為代理(患者)分配了一個名為“百分比”的參數。 並使用我輸入的第一個來源的“退出時”
agent.percentage = 1;
然后關於延遲時間我寫道:
agent.percentage = 1 ? uniform(0.1);
但它不起作用,我該怎么辦?
你需要兩者
所以你的代理參數應該被稱為sourceNumber
或類似的(不是percentage
),你在創建它時相應地設置(就像你所做的那樣)。
那么您的延遲時間如下所示(假設 90%/10% 拆分僅適用於來自源 1 的代理,而其他源的延遲時間為 50 以供說明):
agent.sourceNumber == 1 ? (randomTrue(0.1) ? 5 : 10) : 50
如果您需要更復雜的(例如,兩個以上的源替代方案),或者希望它在 Java if 語句和類似的情況下更“易讀”,您可以編寫一個名為getDelayTime
的函數,它返回一個double
getDelayTime
值並包含一個調用到延遲時間表達式中的那個函數。
注意:如果您需要單個源 1 代理始終具有延遲時間 5 或 10(如果它們經過多次延遲),那么您需要在創建它們時進行采樣(並存儲它們將進入的延遲時間,或他們將在代理中獲得的延遲時間的指示器)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.