如何使用Arena軟體ReadWrite模塊(1)

在Arena軟體中,ReadWrite模塊用於和外部資料庫溝通,讀取模型中需要的參數或者輸出實驗產生的數據。一般與File模塊搭配使用。

ReadWrite模塊的讀取功能(Read from File),能夠讓Arena模型擺脫一般參數設定帶來的隨機性,而利用真實的系統數據進行模擬。

ReadWrite模塊的寫入功能(Write to File),可以更詳細地展示模擬實驗中的每一處細節,提供更豐富的數據分析可能性。

本篇經驗由Justin Zhou和Arena小站共同創作整理,在此對擁有工匠精神的Justin的支持深表感謝!

工具/原料

Arena軟體
Project Bar>Advanced Process>ReadWrite

方法/步驟

假設如圖中的一個場景,數碼產品修理站需要修理兩種類型的產品:Phone和Computer。修理站的工作人員希望記錄修理每一個產品的開始時間、結束時間、修理時長,以便安排進一步工作。

這時我們就需要使用ReadWrite寫入數據的功能。

主要步驟就是:

(1)File Module 的設置, 及(2)建立 ReadWrite Module。

首先是File Module 的設置。

1)假如我們想要將數據寫入到txt文本文件里,Access Type就選擇Sequential File。

2)Operating System File Name填寫文件名稱或是文件路徑。這裡我們填寫ReadWrite.txt。這個文件在模擬完成之後會被自動創建。

Tips:Operating System File Name可以填寫txt文件的完整路徑,這個路徑中不能含有中文字符,否則系統無法讀取;另外,也可以像例子中直接寫這個txt文件的名稱,則系統會默認在模型文件所在的文件夾中查找這個文件完成寫入,如果這個文件不存在,將會被自動創建。這裡建議採取後一種方法,這樣當我們把模型和txt文件拷貝給別人時,文件路徑的改變不會影響數據的寫入。

設置File文件也可以雙擊文件所在的欄位,打開對話框編輯,如圖。

然後是建立 ReadWrite Module。

1)Type選擇Write to File。

2)用Arena File Name指向我們剛才所設置的File 1文件。

3)在Assignment添加我們需要輸出的數據。每一個進入ReadWrite模塊的實體所帶有的相應數據都會被記錄下來。

如圖:

第一行,EnterProcessTime記錄實體進入系統的時間,這是Assign模塊之前替我們採集到的。

第二行,TNOW是完成Fix Process後的「當前時刻」。

第三行,TNOW - EnterProcessTime用公式計算了加工時間,包括等待的時間。

第四行,Str(ENTITIES, Entity.Type)記錄的是實體的類型Entity Type,即我們在Creat模塊中Entity Type一欄所設定的文字內容。Phone或Computer。

-----------------語法Str(ENTITIES, Entity.Type)介紹-------------------------

語法:Str(Element Type, Element Symbol Number),返回於Element Type中定義次序與Element Symbol Number一致的那個Element Type的字符。

假設Entity.Type =1,即Entity模塊中第1個被定義的Entity;那麼 Str(ENTITIES, Entity.Type)就返回Entity模塊中第1個被定義的Entity的字符串的數值,即「Phone」

-----------------------------語法解讀完畢--------------------------------------

設置完畢,跑模型,下圖是txt最終的輸出效果。到此我們已經知道如何寫入txt文件。

那麼如何寫入Excel文件呢?下面用同樣的例子示範。

在File Module 的設置之前,需要首先設置Excel中的名稱管理器。

1)在模型所在的文件夾中建立Excel文件,命名為ReadWrite.xlsx

2)在指定輸出的Excel 文件中,在Sheet1這張表中,定義A1:D71這個range,它的名字是TestRange。

3)將 Sheet1 和 TestRange 這兩個參數值記錄,稍後需要輸入到Arena File Module裡面。

4)保存並關閉Excel文檔。

Tips:如果輸出四組數值,Excel裡面就必須定義四列,例如A列到D列。

接下來,回到Arena中設定File模塊。

1)Access Type選好相應的格式,這裡我們選擇Excel 2007 (*.xlsx)。

2)寫好路徑。參考步驟(2)設置File

3)點擊Recordsets,Arena會將當前Excel中的Recordsets都導入進來,顯示在Recordsets in file一欄中。

4)在Recordsets in file中選擇需要寫入數據的Named Range。我們選擇剛才設定的TestRange。

Tips:Recordset Name就是 Excel 文件中你要輸出的那個表(sheet) 的名稱,例如 Sheet1。Named Range是Excel名稱管理器所對應的位置。

最後,設定ReadWrite模塊。

1)Type選擇Write to File。

2)Record ID對應的就是Recordset Name。在下拉菜單中選擇Sheet 1。

3)填好Assignment內容。

設定完畢跑模型,下圖是Excel 2007 (*.xlsx)最終的輸出效果。

相信大家可以融會貫通讀寫其他資料庫的方法,各位Get到了嗎?

(關於Type是Write to Screen或Read from Keybroad的情況,這兩個選項都是搭配Command工具條進行模型調試和除錯時使用的,感興趣的同學可以試試看。)

再補充一點,關於Arena14.70.00 版本,存在一個讀寫64位Office文件的Bug,會有圖中的報錯。

這時我們需要在Office官網上打一個補丁 。

請在 http://www.microsoft.com/download/en/confirmation.aspx?id=23734 下載:AccessDatabaseEngine.exe

問題就可以解決了。

原作者:Justin Zhou, Yang Na...

本文內容整理自網絡, 文中所有觀點看法不代表淘大白的立場