簡體   English   中英

陣列在Anylogic中的步進函數

[英]Step Function For Array in Anylogic

如何在Anylogic中對數組使用步進功能? step函數應用於雙精度值,但是我想在特定時間應用於數組的元素。

您不能...所以這是一個解決方案:

代替數組,您應該使用linkedHashMap,其中您的鍵是特定時間,而元素是您當時想要的步長值。 因此,您將其定義如下:

linkedHashMap

然后將這樣的值放入:

stepsArray.put(3.0,2.3); 

其中3.0是執行步驟的時間,而2.3是執行步驟的值。 您必須在其中放置所需的所有值。 您是必須根據自己的需要填寫這些值的人。

然后,創建一個循環事件,該事件將評估是否應該應用步驟,並創建一個double類型的變量,該變量將是存儲步驟值的變量。

因此,該事件:

double theTime=round(100*time())/100.0;//it's better to round up the time just in case
if(stepsArray.containsKey(theTime)){
    variable=stepsArray.get(theTime);
}

請注意,我使用的是變量,而不是動態變量。他們可以將變量連接到sd模型中需要執行步驟的任何位置。

這種方法有點復雜,但是對於您完全模棱兩可的問題,這是最通用的方法。

不確定費利佩的方法是最好的方法,但也許我誤解了這個問題。

您是否嘗試過使用“表函數”對象? 在下面定義它,其中水平軸代表時間單位,垂直軸代表步進功能數據: 在此處輸入圖片說明

然后,使用一個循環事件,每個相關時間單位(取決於您的模型)從表函數中提取當前所需的值: 在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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