在Arena软件中,ReadWrite模块用于和外部数据库沟通,读取模型中需要的参数或者输出实验产生的数据。一般与File模块搭配使用。ReadWrite模块的读取功能(ReadfromFile),能够让Arena模型摆脱一般参数设定带来的随机性,而利用真实的系统数据进行模拟。ReadWrite模块的写入功能(WritetoFile),可以更详细地展示模拟实验中的每一处细节,提供更丰富的数据分析可能性。本篇经验由JustinZhou和Arena小站共同创作整理,在此对拥有工匠精神的Justin的支持深表感谢!
工具/原料
Arena软件
ProjectBar>AdvancedProcess>ReadWrite
方法/步骤
1、假设如图中的一个场景,数码产品修理站需要修理两种类型的产品:Phone和Computer。修理站的工作人员希望记录修理每一个产品的开始时间、结束时间、修理时长,以便安排进一步工作。这时我们就需要使用ReadWrite写入数据的功能。主要步骤就是:(1)FileModule的设置,及(2)建立ReadWriteModule。
2、首先是File咯悝滩镞Module的设置。1)假如我们想要将数据写入到txt文本文件里,AccessType就选择SequentialFile。2)Operati荏鱿胫协ngSystemFileName填写文件名称或是文件路径。这里我们填写ReadWrite.txt。这个文件在模拟完成之后会被自动创建。Tips:OperatingSystemFileName可以填写txt文件的完整路径,这个路径中不能含有中文字符,否则系统无法读取;另外,也可以像例子中直接写这个txt文件的名称,则系统会默认在模型文件所在的文件夹中查找这个文件完成写入,如果这个文件不存在,将会被自动创建。这里建议采取后一种方法,这样当我们把模型和txt文件拷贝给别人时,文件路径的改变不会影响数据的写入。设置File文件也可以双击文件所在的栏位,打开对话框编辑,如图。
3、然后是建立ReadWriteModule。1)Type选择Writeto咯悝滩镞File。2)用ArenaFileName指向我们刚才所设置的File1文件撅掏浑锌。3)在Assignment添加我们需要输出的数据。每一个进入ReadWrite模块的实体所带有的相应数据都会被记录下来。如图:第一行,EnterProcessTime记录实体进入系统的时间,这是Assign模块之前替我们采集到的。第二行,TNOW是完成FixProcess后的“当前时刻”。第三行,TNOW-EnterProcessTime用公式计算了加工时间,包括等待的时间。第四行,Str(ENTITIES,Entity.Type)记录的是实体的类型EntityType,即我们在Creat模块中EntityType一栏所设定的文字内容。Phone或Computer。
4、-----------------语法Str(ENTITIES,Entity.Type)介踏群拆虮绍---------------幻腾寂埒----------语法:Str(ElementType,ElementSymbolNumber),返回于ElementType中定义次序与ElementSymbolNumber一致的那个ElementType的字符。假设Entity.Type=1,即Entity模块中第1个被定义的Entity;那么Str(ENTITIES,Entity.Type)就返回Entity模块中第1个被定义的Entity的字符串的数值,即“Phone”-----------------------------语法解读完毕--------------------------------------设置完毕,跑模型,下图是txt最终的输出效果。到此我们已经知道如何写入txt文件。
5、那么如何写入Excel文件呢?下面用同样的例子示范。在FileModule的设置之前,需要首先设置Excel中的名称管理器。1)在模型所在的文件夹中建立Excel文件,命名为ReadWrite.xlsx2)在指定输出的Excel文件中,在Sheet1这张表中,定义A1:D71这个range,它的名字是TestRange。3)将Sheet1和TestRange这两个参数值记录,稍后需要输入到ArenaFileModule里面。4)保存并关闭Excel文档。Tips:如果输出四组数值,Excel里面就必须定义四列,例如A列到D列。
6、接下来,回到Arena中设定File模块。1)AccessType选好相应的格式,这里我们选择Excel2007(*.xlsx)。2)写好路径。参考步骤(2)设置File3)点击Recordsets,Arena会将当前Excel中的Recordsets都导入进来,显示在Recordsetsinfile一栏中。4)在Recordsetsinfile中选择需要写入数据的NamedRange。我们选择刚才设定的TestRange。Tips:RecordsetName就是Excel文件中你要输出的那个表(sheet)的名称,例如Sheet1。NamedRange是Excel名称管理器所对应的位置。
7、最后,设定ReadWrite模块。1)Type选择WritetoFile。2)RecordID对应的就是RecordsetName。在下拉菜单中选择Sheet1。3)填好Assignment内容。设定完毕跑模型,下图是Excel2007(*.xlsx)最终的输出效果。相信大家可以融会贯通读写其他数据库的方法,各位Get到了吗?(关于Type是WritetoScreen或ReadfromKeybroad的情况,这两个选项都是搭配Command工具条进行模型调试和除错时使用的,感兴趣的同学可以试试看。)
8、再补充一点,关于Arena14.70.00版本,存在一个读写64位Office文件的Bug,会有图中的报错。这时我们需要在Office官网上打一个补丁。请在http://www.microsoft.com/download/en/confirmation.aspx?id=23734下载:AccessDatabaseEngine.exe问题就可以解决了。