基于Flexsim的离散事件仿真结果数据管理系统设计与实现

2017-09-15 06:09宋咏春零振迪
制造业自动化 2017年8期
关键词:数据表均值次数

宋咏春,零振迪

(广西大学 机械工程学院,南宁 530004)

基于Flexsim的离散事件仿真结果数据管理系统设计与实现

宋咏春,零振迪

(广西大学 机械工程学院,南宁 530004)

离散事件系统仿真作为计算机仿真的一个方向,在生产、物流、交通等领域使用非常广泛。由于离散事件系统输入输出变量的随机性以及状态变化的不确定性,使离散仿真结果呈现一种随机性。为了得到比较可靠的结果,往往需要进行多次仿真,然后运用数理统计的方法对多次仿真结果进行处理。很多离散事件仿真软件可以通过图、表等方式直观地把仿真结果展示给用户,也可以把仿真结果以各种文件形式导出,但这些处理方式仅针对一次仿真结果,缺乏对多次仿真结果使用统计学方法处理分析的功能。本文针对上述问题,设计了一个离散事件仿真结果数据管理系统,以Flexsim仿真软件仿真结果数据为处理对象,通过asp.net建立B/S架构管理系统,把Flexsim仿真得出的Excel数据转移至SQL Sever数据库,实现异构数据源数据迁移,并且可通过该系统实现仿真结果的数理统计分析和仿真项目管理等功能。

离散事件仿真;数据管理系统;Flexsim

0 引言

Flexsim作为一个通用离散仿真软件,其特点时进行仿真时,只需通过三维图形仿真对象的拖动、连接就可以快速建立系统仿真模型,然后在仿真对象中选择预先设置好的运行逻辑控制模块就可以完成对仿真模型运行控制的设置。建模效率高,仿真结果直观,在生产系统、物流系统、交通运输等领域使用广泛。

仿真运行结束后重要的内容就是对仿真结果进行数据分析。由于离散仿真系统内包含很多随机因素,仿真输出结果都是不同概率分布的随机变量。因此,对每个流动实体的仿真全过程进行观测,或对系统作一定时间的仿真运行,都是对输出随机变量的一次抽样,每次仿真运行的结果只是体现系统性能的一个样本。为了使仿真运行结果能正确表述系统的性能,需要对多次仿真输出结果进行统计分析。Flexsim仿真软件,可以把每次仿真结果通过Excel文件的形式输出,但软件自身缺乏对多次仿真输出结果进行统计分析功能,多次仿真输出结果的统计分析往往需要手工计算来完成,效率低,速度慢。本文针对以上问题,设计一个能够进行离散事件仿真结果数据导入、储存及管理的数据管理系统,自动完成对离散事件仿真结果数据的统计分析处理,从而提高离散事件仿真结果数据处理的效率。

1 系统需求分析和技术方案确定

作为一个数据管理系统,核心要求就是对数据进行管理。Flexsim导出的Excel格式仿真结果数据有两种内容,一种是各个仿真实体的状态数据(State Report),包括空闲时间百分比、处理时间百分比等数据,另外一种是仿真模型中最大临时实体数、临时实体平均滞留时间等的数据(Summary Report)。这两种内容的数据是仿真结果分析的主要数据,要求能对这两种仿真结果数据进行导入、查看、删除功能,原则上不能对数据进行修改。

另一个功能需求是计算仿真数据的均值、方差,以及根据计算完成的平均值、方差和给定的相对精度值、显著水平来计算序贯法仿真的最小仿真次数,也就是能够实现数据统计分析功能。

根据以上需求分析结果对系统可采用的技术方法进行分析。数据源是Flexsim导出的Excel数据,查阅文献和微软的说明文档可知,微软提供的OLEDB接口可以实现Excel数据到ASP.NET的异构迁移。

完成对数据的存储需要一个数据库,与ASP.NET较好搭配的是Access和SQL Server数据库。Access适用于小型系统的开发,而且在许多计算机上已经预装,不需要另外安装,但是其支持的SQL比较少,不能够实现一些比较复杂的功能。SQL Server完整支持微软的Transact-SQL,能够满足较复杂的功能需求,同时微软也提供了Express版本来给小型系统使用。因此本系统选择的是SQL Server DBMS来管理数据。

ASP.NET使用ADO.NET对象提供的数据接口和编写相关程序,可以实现ASP.NET程序到SQL Server的数据迁移。对于仿真所需要的数据分析,T-SQL提供了avg()、var()聚合函数来完成对数据均值、方差的计算,ASP.NET程序从数据库中取出这个均值、方差的计算结果,就可以计算序贯法仿真的最小仿真次数。

同时,ASP.NET用于开发B/S模式信息管理系统的技术已经很成熟,可以很方便地构建人机交互友好的管理系统界面,满足对仿真项目进行添加、查询、删除等管理功能的需要。

通过以上分析,最终决定了本系统的技术方案:基于Web开发,采用SQL Server 作为后台数据库,ASP.NET构建前台交互界面,界面采用CSS+DIV设计,客户端脚本使用JavaScript,在部分界面使用了AJAX技术。

通过需求分析也确定了系统功能结构,如图1所示。

图1 系统功能结构图

2 系统关键模块设计

2.1 数据库设计

主要是表的设计,从仿真项目管理的需求来说,对每个仿真项目的结果数据都要进行存储。本系统中把每个仿真项目的结果数据放置在若干个表中,根据导入的数据动态建立对应的数据表,数据表的命名是根据项目名称和其数据类型定下的。比如一个项目名称为exp1,那么它对应的State Report数据表名就为exp1_State。这个表用于存放多次仿真运行时得到的State Report结果数据,数据表的模式(Scheme)是根据数据源的模式定下来的,也就是说该表字段是动态的,其结构如图2所示。

图2 State Report数据表结构

数据库中还有另外一些表存放数据处理结果,存放均值数据表名为exp1_State_Avg,存放方差数据表名为exp1_State_Var等。对于Summary Report数据就是把State替换成Summary。这些数据表都是在一个仿真项目中,把仿真结果数据批量导入数据库时才自动生成。

2.2 仿真数据导入模块设计

仿真结果数据导入是本系统的重要功能,它相当于一个转换器,把Excel数据转换为SQL Server数据表的数据。在进行技术方案分析的时候已经提到,通过OLEDB和ADO.NET可以很方便地实现这个转换功能。但由于从Flexsim导出的Excel数据中,存在着几个不便于数据导入的单元格,这些单元格中主要是Flexsim自动填写上去的一些数据信息。因此在导入前,要进行数据预处理,删除这些数据。预处理主要通过.NET对象Microsoft.Office.Interop.Excel实现,该对象可实现对Excel文件的读写[1,2,3]。完成预处理后,通过OLEDB接口读取已经处理好的Excel数据,保存到DataTable对象里面,最后再通过ADO.NET内的SqlBulkCopy[3]导入到数据库中,完成导入。仿真数据导入流程如图3所示。

为了保证导入数据的一致性与完整性,导入功能使用隐式事务。所有数据只有都能全部正确才能导入,如果导入期间发生错误则全部回滚。使用隐式事务需要引用System.Transactions类并添加至程序头部。隐式事务主要是通过TransactionScope对象来实现的,结束标志为其Complete事件。

图3 仿真数据导入流程图

2.3 仿真数据处理计算模块设计

使用Flexsim进行的仿真大部分属于终止型仿真。从仿真运行的要求来说,应该是每次仿真运行是独立的,所输出的仿真结果也是独立的。对于所得到的多次仿真运行结果数据,可运用统计方法算出数据的均值和方差。对于精度要求不高的仿真,一般是采用固定样本数量法对结果进行分析,即把仿真模型独立重复运行若干次,对这若干次运行结果算出均值,作为最终的结果数据,也可以算出其方差,判断结果的可靠性。仿真数据处理计算模块流程如图4所示。

图4 仿真数据处理计算模块流程图

本模块通过T-SQL提供的avg()、var()聚合函数对导入数据库中的数据进行均值、方差计算,求解结果可通过ASP.NET的GridView控件在系统界面上显示。

2.4 序贯法仿真次数计算模块设计

大多数Flexsim仿真结果处理方式使用上节所介绍的固定样本数量法就可以满足仿真的要求。但如果事先给定了结果数据均值的误差限制,则需要采用序贯法决定运行仿真模型的次数,以达到比较高的数据精度。

序贯法仿真次数计算的步骤是:需要首先运行仿真项目一定的次数,n≥3,选定一个相对估计精度值 ,然后设置信水平为1-α,最低仿真次数为Nmin,计算出所运行结果数据的均值µx和标准差查找t分布在α/2和已运行次数n-1下的值,参数值记为tα,则系统仿真次数的计算公式[4]如下:

将公式(1)写成一个方法,在计算的时候选择一个显著水平和输入一个相对精度值,t分布值会根据使用者选择的显著水平和选定项目的自由度来自动获取。当这些参数都初始化完毕后就可以计算要达到所设置精度需要的仿真运行次数,计算结果直接显示在界面上。序贯法仿真次数计算流程如图5所示。

图5 序贯法仿真次数计算流程图

这个仿真运行次数的计算是在一个专门的界面进行。由于这个功能界面每次响应操作的时候发送的数据量很少,因此在设计的时候采用AJAX技术实现无刷新、少量数据收发而不是整个界面发送的效果[5],以提高系统运行速度。当界面加载时,body的Onload事件触发,通过JavaScript发送一个Http请求,获取状态为“正在进行”的仿真项目名称,填充到<select>标签内,再发送另外一个请求,获取第一个项目的仿真次数,最后一个请求检测所选的项目名称对应的平均值、方差值是否存在。服务端通过Handler程序处理这些请求并返回处理结果。客户端的处理程序在检测xmlHttp.readyState==4(响应内容解析完成,可以在客户端调用)和xmlHttp.status==200(交易成功)后,判定处理成功,处理程序就会通过DOM操作HTML页面元素,动态地改变界面内容而不引起刷新操作。当界面加载结束后,对于<select>标签,当其内容改变的时候,触发Onchanging事件,调用JavaScript来动态获取数据。

3 系统应用实现

本系统是基于B/S模式采用ASP.NET技术开发,在Windows操作系统中配置使用非常方便。在目前主流的Windows系统中安装SQL Server数据库,然后设置IIS,就可以在单机或局域网中通过各种网页浏览器登录本系统进行仿真数据的分析处理。

另外,本系统不仅可以进行仿真结果数据的统计分析,也可以为多个仿真项目提供仿真数据的管理。

图6 系统主界面

系统主界面如图6所示,主界面上提供了进入仿真项目管理及仿真数据管理等功能模块的入口。进行一个仿真项目数据的统计分析,首先要通过仿真项目管理模块建立仿真项目名称,录入该仿真项目的相关信息,然后进入仿真数据管理模块,导入该项目的多次仿真数据,选择数据处理方式,分析结果可显示在界面上,如图7显示的是对某仿真项目Summary Report数据求取均值的处理结果。

图7 Summary Report数据均值结果

这些数据处理分析结果自动存入数据库中,可在日后通过仿真项目管理模块进行查询,也可以以Excel文件形式导出打印。

4 结论

该系统针对Flexsim仿真软件对多次仿真结果进行统计汇总功能的不足,将从Flexsim导出Excel表格的仿真数据结果,导入SQL Server数据库,再通过B/S系统查看、分析及管理,以简化繁琐的手动分析计算。在实际使用中,大大提高了仿真数据分析处理效率。

[1] 田亚灵.用Web将数据从Excel导入到SQL Server中遇到的问题及其解决方法[J].电脑编程技巧与维护,2010,(10):40-43,69

[2] 舒清录.基于.NET的异构数据源数据迁移技术[J].计算机技术与发展,2010,20(3):109-112.

[3] 房大伟,吕双.ASP.NET开发实战1200例(第二卷)[M].清华大学出版社,2011.

[4] 王志敏,李振克,陈强,高文伟,刘巍.军用物资装卸搬运作业系统建模与仿真研究[J].系统仿真学报,2007,19(6):1366-1369,1375.

[5] 高宏,李俊民.ASP.NET典型模块与项目实战大全[M].清华大学出版社,2012.

Data Management system design and implementation for simulation result of discrete event system base on fl exsim simulation software

SONG Yong-chun, LING Zhen-di

TP391.9

:A

:1009-0134(2017)08-0043-04

2017-06-22

宋咏春(19 -),

猜你喜欢
数据表均值次数
2020年,我国汽车召回次数同比减少10.8%,召回数量同比增长3.9%
俄罗斯是全球阅兵次数最多的国家吗?
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
湖北省新冠肺炎疫情数据表
均值—方差分析及CAPM模型的运用
均值—方差分析及CAPM模型的运用
基于切削次数的FANUC刀具寿命管理
浅谈均值不等式的应用
均值不等式的小应用