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 这十六个单