如何使用Arena軟體ReadWrite模塊

此經驗有更新,新版請戳:https://jingyan.baidu.com/article/6c67b1d69885a22786bb1e54.html

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

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

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

本篇經驗由Justin Zhou原創,由Arena小站整理。在此對Justin的支持深表感謝!

工具/原料

Arena軟體
Project Bar>Advanced Process>ReadWrite

方法/步驟

我們在這裡展示使用ReadWrite寫入數據的功能。

主要步驟就是:

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

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

想要記錄每一次修理所花費的時間,首先要設置File模塊。如上圖。

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

Operating System File Name是這個txt文件在作業系統里的位置。這裡要注意,Operating System File Name我們可以填寫txt文件的完整路徑,但是這個路徑不能含有中文字符,否則系統無法讀取;另一種方法,我們也可以直接寫這個txt文件的名稱,如:ReadWrite.txt,則系統會默認在模型文件所在的文件夾中查找這個文件。這裡建議採取後一種方法,這樣當我們把模型和txt文件拷貝給別人時,文件路徑的改變不會影響數據的寫入。

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

之後是ReadWrite Module的填寫。

用Arena File Name指向我們剛才所設置的File 1文件。Type選Write to File。

Assignment是我們需要寫入的內容,每一個進入ReadWrite模塊的實體所帶有的相應數據都會被記錄下來。

如圖:

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

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

第三行用公式計算了加工時間。

第四行記錄的是實體的類型Entity Type,此處的語法Str(ENTITIES, Entity.Type)返回的是字符串,即我們在Creat模塊中Entity Type一欄所設定的文字內容。

語法Str(ENTITIES, Entity.Type)中,ENTITIES指向了Basic Process>Entity這個圖表模塊。Entity.Type是根據實體所攜帶的信息指向相應的欄位。

如圖:如果實體所攜帶的Entity Type信息是Phone,則在Entity圖表模塊中對應的是第一個欄位,Entity.Type所返回的數值就是1。而Str(ENTITIES, Entity.Type)返回的是字符串:Phone。

下圖是txt最終的輸出效果。到此我們已經知道如何寫入txt文件了。

那麼如何寫入Excel文件呢?下面再舉個例子示範。

首先設置Excel中的名稱管理器。

例如: 我在指定輸出的excel 文件中,在Sheet1這張表中,定義了A1:C71這個range,它的名字是TestRange。注意:

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

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

回到Arena中設定File模塊,Access Type選好相應的格式,這裡我們選擇Excel 2007 (*.xlsx)。寫好路徑。

1)點擊Recordsets,Arena會將Excel中的Recordsets都導入進來。

2)在Recordsets in file中選擇我們在Excel中需要寫入數據的位置。

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

然後是ReadWrite模塊中的對應。Record ID對應的就是Recordset Name。

下圖是Excel 2007 (*.xlsx)最終的輸出效果。

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

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

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

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

問題就可以解決了。

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