簡體   English   中英

相同代理類型的不同延遲時間(AnyLogic)

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM