我想運行一個Anylogic引數實驗,并且我希望從excel檔案中連續讀取引數,以便excel資料的每一行對應一次運行的引數。同樣,我希望它運行的次數與 excel 中的引數行一樣多。我可以使用 ExcelControlName.getCellNumericValue("ExcelSheetName", RowNumber, ColNumber) 讀取一行資料,但是如何設定它以便它通過運行所有行的引數自動運行多次。
uj5u.com熱心網友回復:
在您的模擬模型中,創建一個名為 的引數row,這將是您的引數變化實驗中唯一改變的引數...然后您將模擬中的引數轉換為變數,每個變數將按如下方式讀取 excel 檔案>
ExcelControlName.getCellNumericValue("ExcelSheetName", row, ColNumber)
其中 row 是在您的引數變化實驗中發生變化的引數,colNumber 是表示您要評估的特定變數的列。
uj5u.com熱心網友回復:
一個非常有用的問題。
一種選擇是利用模擬物件,而不是讓模型跳過實驗并運行模型。

這只會讓您更好地控制模型執行,并且您可以使用一些模擬運行之前和之后的代碼。
對以下超簡單模型進行成像

我有一個引數和一個跟蹤引數然后停止模擬的事件。
然后在實驗中,我有一個 Excel 物件,一個鏈接到 main 引數的變數,以及一個只呼叫的按鈕 run()

excel檔案中有一些簡單的資料

現在在實驗的 Java 部分,您只需要添加以下代碼。

這可確保使用基于運行計數的正確資料更新變數,并且當您停止模型時,如果 Excel 作業表中有更多值要加載,它將再次呼叫運行函式。
Note that the row index in Excel starts at 1 and that we have a header for our data so we want to start at row 2, hence I added 2 getExperiment().getRunCount()
If you run this simple model you will see in the Console printed out the values from the Excel file.
10.0
20.0
30.0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/313366.html
