APP下载

列流图编制系统设计与实现

2021-11-05冯保恒张鸿飞刘承希

铁路计算机应用 2021年10期
关键词:空车车流绘制

冯保恒,张鸿飞,刘承希,张 杰

(1. 西南交通大学 交通运输与物流学院,成都 610031;2. 综合交通运输智能化国家地方联合工程实验室,成都 610031;3. 综合交通大数据应用技术国家工程实验室,成都 610031;4. 西南交通大学 信息科学与技术学院,成都 611756)

列流图以图形化的方式展示了铁路枢纽网络的站场布局、各区段列车密度、列流的汇集分流情况、铁路枢纽的列车编组计划和旅客列车开行方案。列流图不仅是优化铁路运输规划与组织的辅助工具,也是体现车流组织和列流组织的重要成果之一[1]。

在目前的铁路设计工作中,主要依靠Excel进行车流设计与列流设计,使用AutoCAD手工铺画列流图[2]。绘制列流图时需要投入较大的精力排列组合各条列流线位置,在有限的图纸空间内尽可能避免列流线交叉、重合,绘图工作量大,难以保证列流图布局的合理性与美观性。同时,列流图绘制后期的修改与调整也较为困难,一条列流线的改动可能会导致整张图纸重画,加重了铁路设计工作者的劳动强度[3-4]。

为解决上述难题,国内学者对采用计算机编制列流图进行了研究,史峰等人[1]根据左右、紧凑、分层、对称和分类的原则提出了列流图绘制的具体步骤;程学庆等人[5-6]提出利用标号算法绘制列流图。但这些研究都以既定步骤绘制列流图,智能程度不高,人机交互不够优化,且难以保证列流图的绘制质量[7]。

本文在上述研究的基础上,采用计算机自动编制列流图的方式,基于前后端分离的B/S架构,设计并实现了列流图编制系统,通过引入数学优化模型和智能优化算法,保证了列流图的编制质量,提高了铁路设计工作者的工作效率。

1 系统架构

B/S架构具有维护方便、开发简单、共享性强和容易部署的特点,因此,本文采用B/S架构,进行系统开发。列流图编制系统总体架构包括表示层、服务层、数据访问层和数据层。表示层主要负责与用户进行交互;服务层负责业务逻辑计算;数据访问层进行数据交互;数据层进行数据存储。系统架构如图1所示。

图1 系统总体架构

1.1 表示层

表示层立足于浏览器端,基于Vue 3、AntV等框架,利用TypeScript语言开发实现,以简洁、友好的人机交互风格,面向用户提供业务数据图表编辑与展示、列流图形绘制与调整等功能。

1.2 服务层

服务层作为系统核心,通过数据访问层操作系统数据,依靠网络通信接口为表示层提供业务功能服务。该层基于Spring Boot架构,采用Java语言开发实现,主要包括车流计算、列流设计、指标统计、列流图编制、列流图绘制5个模块。

1.3 数据访问层

数据访问层通过对象关系映射技术封装了数据库的增、删、改、查功能,向服务层提供封装的数据库操作接口[8],避免了直接使用JDBC操作数据库所带来的复杂性。本文基于Spring Data JPA框架实现Java对象与数据表之间的映射[9]。

1.4 数据层

数据层主要负责数据存储,本文采用SQLite数据库存储数据。SQLite数据库[10]具有不需要单独服务器进程、完整支持数据库事务的ACID特性、无须额外安装和管理配置、不需要任何外部依赖、占用资源低等特点。由于本系统的数据规模小、并发量低,SQLite数据库可完全满足系统性能要求。

数据库主要包含货物数据表、货车数据表、车站数据表、区间数据表、列车径路表、货流数据表、折车系数表、重车流表、空车流表、列流表、列流段表、配置参数表等。

2 系统功能

列流图编制系统以用户输入的货流为基础,依次完成重车流设计、空车流调整、列流设计等工作,并统计区段列车数与技术站作业量指标。当指标统计结果不合理时,需重新返回设计,直至各项指标合理为止。最终,依据列流设计结果并结合枢纽网络布局绘制列流图。

根据以上业务流程,列流图编制系统可划分为车流计算、列流设计、指标统计、列流图编制与列流图绘制等5个功能模块。

2.1 车流计算

车流计算功能模块包含货流输入、重车流计算、空车流调整与重空平衡校验功能。其中,货流输入功能从Excel中导入枢纽设计年度的货流数据;重车流计算功能依据货车载重量与货运不平衡系数将输入的货流折算为重车流;空车流调整功能辅助用户输入空车流,使得枢纽各车站出入的重空车流平衡;重空平衡校验功能则依据重空车流数据,计算各车站是否已满足重空车出入平衡的约束条件。

2.2 列流设计

列流设计功能模块包含列车径路搜索、列流输入与车流编组校验功能。其中,列车径路搜索功能可根据车流出发地与到达地自动搜索出多条径路备选,简化用户输入;列流输入功能依据列车编组计划、列车编成辆数等数据,辅助用户输入列流;车流编组校验功能可实时校验车流是否已全部编组完毕,并提示用户。

2.3 指标统计

指标统计功能模块包含列车数统计、作业量统计与报表输出功能。其中,列车数统计功能可依据列流设计结果依次统计每个区段的列车数;作业量统计功能依据车流计算与列流设计结果,统计枢纽各技术站的有调中转车数、无调中转车数与本站作业车数;报表输出功能输出统计指标到Excel文件中。

2.4 列流图编制

列流图编制功能模块包含车站自动布局、人机交互调整、编制参数设置和自动编制功能。其中,车站自动布局功能根据车站位置与站内通过的列流量,自动确定车站矩形的位置与大小;人机交互调整功能辅助用户修改图元各属性信息;编制参数设置功能设置列流图编制算法的各项核心参数;自动编制功能依据车站布局、列流信息与设置的参数自动编制列流图。

2.5 列流图绘制

列流图绘制功能模块包含显示参数设置、图形缩放、图形输出功能。其中,显示参数设置功能可设置图纸大小、像素比例、网格间距等属性;图形缩放功能可使用快捷键或鼠标调整列流图缩放比例;图形输出功能可将列流图输出为各种常见的矢量图文件格式,用于高质量打印。

3 关键技术

3.1 对象关系映射

对象关系映射(ORM,Object Relational Mapping)是一种将关系型数据库映射到面向对象编程语言中的技术。使用ORM技术,开发人员可不必编写具体的SQL语句及数据类型转换代码,即可轻松操作数据库。具体映射关系如表1所示。

表1 对象关系映射

JPA是由Java EE提供的一套实现ORM规范的接 口。Spring Data JPA则 是 由Spring提 供 的 针 对JPA接口的实现方式,并可方便地与Spring Boot框架组合使用。因此,本文采用Spring Data JPA框架作为ORM工具。

3.2 通信接口

浏览器与服务器间通信接口,采用REST风格设计。REST风格是由Roy Thomas Fielding提出的一种轻量级、跨平台、跨语言的架构风格。通常用于浏览器端或移动端对服务器资源的访问与操作。

REST使用统一资源标识符(URI,Uniform Resource Identifier)表示网络资源,使用HTTP协议中的动词表示对资源的操作[11]。

后端使用Axios库作为HTTP通信工具。Axios是用于浏览器端向服务器后台发送资源请求的HTTP通信库。它通过返回promise类型的HTTP响应来解耦数据的异步获取和业务逻辑。本文采用Axios库通过访问RESTful接口进行浏览器与服务器间的HTTP数据通信。HTTP动词的资源操作含义如表2所示,车站资源的RESTful接口设计如表3所示。

表2 HTTP动词的资源操作含义

表3 车站资源RESTful接口设计

4 系统实现

本系统前端基于Vue 3框架,采用TypeScript语言开发;后端基于Spring Boot框架,采用Java语言开发。系统实现效果如图2所示,在浏览器页面左侧可以设置用户信息、项目信息、货流输入、重车流设计、空车流调整、列流设计、指标统计、列流图编制等功能;页面上方可进行页面刷新、视图调整、列流图优化、打印输出等操作;主界面显示列流图,并具有图形交互功能。点击车站可在页面右侧表单中修改车站名称、类型、位置、尺寸等属性。

图2 系统主界面

5 结束语

本文从列流图编制业务流程出发,对列流图编制系统总体架构和功能进行了设计,并基于Type-Script语言和Java语言进行了系统实现。该系统可快速、高质量地完成列流图编制工作,提高了铁路设计人员的工作效率。下一步的研究中,可以从减少空车流自动调整的人工输入量和优化数据库设计等方面进行改进,进一步提升系统的自动化和智能化水平,提高铁路设计人员的工作效率,实现列流图的全自动编制。

猜你喜欢

空车车流绘制
高速公路货车空驶指标统计与规律分析
绘制童话
铁路枢纽空车调配多目标优化模型及算法
作品赏析
街角见空车
道路躁动
故乡的车流(外一首)
基于能力约束的多车种空车动态调整方法
神秘的不速之客
参考答案