2024年4月1日发(作者:)
EXCEL数据交互模型
1 模型概述
这个模型介绍WITNESS 系统如何同EXCEL 数据表进行数据的交互。有三种等概率的需求根据EXCEL 的
数据随机达到系统,并且进入队列,等待经过三道程序的服务。有三种类型的业务组分别完成这三道程序,
每类业务组中所拥有的工作台数量以及服务时间通过读取EXCEL 文件中的数据来确定;在仿真运行过程
中,系统实时的向EXCEL 中写下当前各个业务组的工作状态;当需求得到满足,离开系统时,向EXCEL 中
写下这一需求在系统中的时间。
图11-1
2 预备知识
2.1 part 元素的Active With Profile 到达方式
有的系统中,需求的到达不符合标准的随机分布函数,而是在不同的时间段内具有不同的分布密度。
比如餐饮业,在一日三餐的时间,顾客到达的密度比较大,而在上午九、十点钟和下午的三、四点钟,顾
客到达密度相对较小。这时我们可以通过设定需求到达呈现时效性和随机性,可以设定需求到达模式为
Active With Profile模式的。
在选定了需求part 元素的到达模式为Active With Profile 后,part 的detail 对话框上会动态显
示“arrival profile”页框,来进行profile 的设计。
2.2 读取EXCEL 文件中数据的方法
WITNESS 将EXCEL 文件中数据读取出来之后,存放于变量或变量数组中,以便使用,读取的方法有两
种:
1.通过仿真系统的初始化活动。使用此方法的步骤如下:
(1) 选择系统菜单项Model/Initialize Actions…,激活程序编辑窗口;
(2) 写入XLReadArray ()函数,来读取工作表中特定区域的数据给变量;
2.3 将仿真数据写入EXCEL 表的方法
将仿真数据写入EXCEL 表可以通过在特定的活动中,写入XLWriteArray()函数
的方法来实现。
2.4 XLReadArray ()函数介绍
1.函数功能:该函数用来将EXCLE 工作表中的特定区域的数据读给WITNESS 的变量或变
量数组。如果读取成功,该函数返回1,否则,返回0。
2.函数语法:XLReadArray (WorkbookName,WorksheetName,Range,Array)
3.参数:
WorkbookName 字符型,指定包含需要数据的工作簿名称及其路径;
WorksheetName 字符型,指定包含数据的工作表的名称;
Range 字符型,指定包含数据的工作表中的区域;
Array 名型,指定将读取的数据赋予的变量的名称;
2.5 XLWriteArray ()函数介绍
1.函数功能:
该函数用来将WITNESS 的变量或变量数组的值写入EXCEL 中去。如果写入成功,该函数返回1,否则,返
回0。
2.函数语法:XLWriteArray (WorkbookName,WorksheetName,Range,Array)
3.参数:
WorkbookName 字符型,指定写入数据的的工作簿名称及其路径;
WorksheetName 字符型,指定写入数据的工作表的名称;
Range 字符型,指定写入数据的工作表中的区域;
Array 名型,指定所写入的数据变量的名称;
3 定义元素
1.通过菜单项Window/Control…修改布局窗口的名称为XLLinks;
2.通过在系统布局窗口单击鼠标右键,将弹出元素定义窗口,通过元素定义窗口定义下列元素:
(1) part:part1;
(2) buffer:store;
(3) machine:machine1、machine2、machine3;
(4) variable:arrivals(16)、cellvalue、tempararyvalue、x、processtime、rownumber、
numberofmachines(3)、cycletime(3);
(5) attribute:partsize、arrivaltime;
元素说明:
(1) arrivals(16)一维变量数组用来存放从excel 文件中读取的决定part1 到达分布密度的数据;
(2) numberofmachines(3)用来存放从excel 文件中读取的决定三类业务组的工作台的数量;
(3) cycletime(3) 用来存放从excel 文件中读取的决定三类业务组的对每一个需求的工作周期。
4 可视化元素
根据图11-1,分别设定part、machine、buffer 三类元素的可视化效果。
5 详细定义
1.模型初始化程序详细定义
选择系统菜单项Model/Initialize Actions…,激活程序编辑窗口,向其中写入如下程序:
XLReadArray ("","InputData","$D$6:$D$8",CycleTime)
XLReadArray ("","InputData","$E$6:$E$8",NumberOfMachines)
SET QUANTITY OF Machine1 TO NumberOfMachines (1)
SET QUANTITY OF Machine2 TO NumberOfMachines (2)
SET QUANTITY OF Machine3 TO NumberOfMachines (3)
XLReadArray ("","InputData","$E$15:$E$30",Arrivals)
RowNumber = 7
程序解释:
第一行:将与模型在同一路径下的工作簿 中的工作表InputData中的D6:D8 三个单元的数据
读取出来,分别赋予CycleTime(1) 、CycleTime(2)、CycleTime(3);第二行:将与模型在同一路径下的
工作簿 中的工作表InputData中的E6:E8 三个单元的数据读取出来,分别赋予
NumberOfMachines (1) 、NumberOfMachines (2)、 umberOfMachines (3);第三行到第五行:通过变量
NumberOfMachines 数组中的数据来设置工作台的数量。第六行:将InputData 中的E15:E30 这十六个单


发布评论