黄一格,雷江松,张中安,李海洋,甘璐凯,王立勇,邹军华
(1.深圳市地铁集团有限公司,深圳 518000;2.中铁第四勘察设计院集团有限公司,武汉 430000;3.湖北大学教育学院,武汉 430000)
城市轨道交通具有速度快、安全系数高、智能环保的突出优势,在便利市民高效安全出行、缓解城市道路拥堵以及推动生态友好型、资源节约型城市建设新格局方面扮演着不可替代的重要角色.截至2020年12月31日,全国(不含港澳台地区)共有44个城市开通运营城市轨道交通线路,运营里程超过7 000 km.城市轨道交通工程投资规模大,专业涉及面广,工程技术复杂.因此,城市轨道交通工程投资测算的研究具有很强的实际价值.
城市轨道交通工程投资测算方面的研究集中在三个方面.1)城市轨道交通工程概算费用的构成.城市轨道交通工程概算费用包括工程费用、工程建设其他费用、预备费和专项费用[1-3].工程费用由建设工程费、安装工程费和设备购置费等几个部分组成.工程建设其他费用包括前期工程费、与项目建设有关的其他费用和与试运行有关的其他费用等.预备费由基本预备费和价差预备费组成.专项费用包括车辆购置费(含车辆监造费)、建设期贷款利息和铺底流动资金等.其中每一项的费用都可能包含多个组成部分.例如.工程费用中的建筑安装工程费可以分为人工费、材料费、施工机具使用费、企业管理费、利润、规费和增值税等.2)城市轨道交通工程投资测算分解体系.罗芳艳等[4]对国际上广泛采用的面向工种工程的分解体系、面向结构和部位的分解体系分别进行了详细研究.作者认为工程项目投资分解和编码主要分为二大类,一是面向材料、工种工程的投资分解体系,二是面向工程构成部位的投资分解体系.为了提高投资测算的准确度,刘贺等[5]对城市轨道交通工程投资测算方法进行了优化,提出UniformatⅡ与定额相匹配的综合估算体系,使投资估算的分解口径与概预算保持一致.3)城市轨道交通工程的投资测算方法.除了传统的测算方法(如一元、多元回归和比例估算)之外,很多学者针对城市轨道交通工程的非线性测算方法研究[6-8].例如,杨文成等在使用少量关键指标信息的情况下,采用支持向量机(SVM)方法对城市轨道交通成本做了较小误差的估算.张飞涟和梁秀峰提出特征指标优化假设及验证,并且提出了遗传算法(GA)优化极限学习机(ELM)输入权值和隐含层阈值的算法,对城市轨道交通工程投资样本数据进行训练和验证.
在实际应用方面,由于适用范围不一致,国外的投资测算软件(如Innovaya公司开发的Innovaya Visual Estimating[9]等)难以进入国内市场.目前国内主流的投资测算软件可以分为算量软件和计价软件等两个大类,其中的算量软件又可以按照专业进行细分.例如,深圳斯维尔软件[10]包括钢筋算量软件、安装算量软件和三维算量软件等.广联达科技股份有限公司推出的地铁工程GDT[11]是城市轨道交通工程投资管理软件,具有招标管理、投标管理和清单计价等模块,支持清单计价和定额计价两种模式,可以实现批量处理工作模式.这些专业软件具有一定的普适性,能够解决投资测算方面的一些基本问题.
但是,实际的投资测算可以分为线路、单项工程和分部工程等多种级别,而且,每种级别的投资测算都有不同的敏感因素,投资测算的单位、数量和指标的关系也是不一样的.通用的城市轨道交通工程软件不能解决这些问题,本文在深圳轨道交通技术经济指标及标准成本应用系统中,提出并实现了基于Java Web的城市轨道交通工程投资测算方案.
深圳轨道交通技术经济指标及标准成本应用系统主要有几个功能模块:1)数据导入与更新;2)实现概算、合同价、设备价的查询功能树形分级查询、关键字查询两种);3)实现概述价和合同价的数据可视化;4)实现投资测算功能;5)实现成本测算功能.其中的投资测算是最为复杂的功能模块之一.投资测算可以分3个层级:全线投资测算、单项单位投资测算、分部工程投资测算.用户选择具体的测算的项目,输入敏感参数的数据后,系统调用相关的测算公式进行计算,并呈现在用户界面上.
以车站单位工程为例,车站工程数量的主要影响因素包括四个方面:1)车站主体建筑面积.车站主体建筑面积主要受车站外包长度、车站宽度影响.2)地连墙长度和体积.地连墙长度和体积主要受车站长度、宽度、墙厚、基坑深度以及嵌固深度影响.3)主体明挖土石方体积.主体明挖土石方体积主要受车站长度、宽度、埋深及覆土厚度影响.4)主体内部结构体积.主体内部结构体积主要受车站长度、宽度、梁板柱尺寸影响.
基于递归算法的城市轨道交通工程投资测算主要分为应用层、业务层和数据层三层技术架构.1)应用层采用了Layui前端框架(https://www.layui.site).Layui是一款国产开源的前端框架,遵循原生HTML/CSS/JS的组织形式.该框架包含了丰富的组件(弹出层、即时通讯、模板引擎、穿梭框等等),从核心代码到API的每一处细节都经过了精心雕琢.2)业务层实现了投资测算,通过Ajax和JSON等技术进行投资测算内部业务逻辑处理(包括分项参数设置和测算公式设置等),调用接口方法访问数据层,并得到相关投资测算模板数据.数据层则实现信息存储,主要实现对数据库表的增加、删除、查询、以及修改等操作.在业务层,通过DAO(Data Access Object,数据访问对象)接口实现了对数据的访问.3)系统采用Oracle作为后台数据库软件,通过Servlet技术实现数据层的业务.系统架构如图1所示.
图1 系统架构Fig.1 System architecture
数据库系统后台创建了投资测算模板表(MC_MEASUREMENT).投资测算模板表包含ID、父级ID、名称、特征、单位、数量、投资金额、指标、备注、层级编号以及敏感参数等字段.其中的ID和父级ID是通过UUID(universally unique identifier)进行存储的,UUID是指在一台机器上生成的唯一数字.该数字根据开放软件基金会制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字.
为了实现投资测算模板数据的层级关系,每条数据存储了自身编号(ID)和父级ID两个字段,系统通过父级ID这个字段判断结点之间的包含关系.例如,车站主体这条投资模板数据除了自身的ID之外,其父级ID就是车站的ID,出入口、风道、车站装修、施工监测等投资模板数据的父级ID也是车站的ID.以此类推,主体地连墙围护、主体土石方和主体钢筋砼内部结构等投资模板信息除了自身的ID之外,其父级ID就是车站主体的ID.这种层级关系在Oracle数据库中的存储如图2所示.
图2 投资测算的层级关系Fig.2 The hierarchical relationship of investment measurement
投资测算的处理主要包括两个方面,一是敏感参数的输入,这些输入参数主要包括两种类型,一种是文本框,另外一种是选择框.以车站单位工程为例,主体的长度的输入就是一个文本框;二是层级关系的处理,例如,车站主体的投资由车站地连墙围护、主体土石方/支撑及降水、主体钢筋砼内部结构三个部分的投资之和构成.本文研究如何实现基于递归算法的投资测算,具有管理权限的用户可以动态输入投资测算公式,系统可以快速计算出各个层次的投资数量和指标,从而为实现轨道交通工程项目管理奠定良好基础.
3.1.1 设置敏感参数 投资测算模板分为三个层级,每个层级的敏感参数的个数和类型都不一样,例如,线路级的敏感参数包括线路长度、车站座数、是否是全自动驾驶、车辆段数目和停车场等.车站单位工程的敏感参数包括主体面积、主体埋深、地连墙围护结构、明挖土石方、车站出入口面积等;车站风道分部工程的敏感参数包括围护结构、土石方工程、内部结构和地面建筑等.
设置敏感参数包括新增敏感参数、修改敏感参数和删除敏感参数三个功能模块.这些功能模块的原理都是对敏感参数的HTML源代码进行操作.以新增敏感参数功能模块为例,该模块的主要作用就是通过用户“输入新增参数的名称”和“选择新增参数的类型”等操作,对投资测算模板表中的敏感参数字段进行操作.例如,车站投资测算模块中添加了主体长度、主体宽度和主体埋深等参数之后,该投资测算模板表的敏感参数字段实际上存储了三个文本框的HTML源代码,如图3所示.
图3 敏感参数在数据库中的存储Fig.3 The storage of sensitive parameters in the database
3.1.2 获取敏感参数 在获取敏感参数时,系统首先定义了一个JavaScript数组用来存储用户录入的参数,当用户需要录入参数时,系统读取投资测算模板表中敏感参数的HTML源代码,然后通过弹出框显示所有的敏感参数,当用户录入所有的敏感参数并单击“保存”时,系统依次将这些参数存入到名为R的数组中,获取敏感参数的流程图如图4所示.
图4 获取敏感参数的流程Fig.4 The process of getting sensitive parameters
为了对投资测算公式中的固定值进行操作,系统采用了Layui前端框架的treeTable组件(https://gitee.com/ele-admin/treetable-lay).该组件是一款基于Lay UI的动态数据表格组件,其主要功能是为Web应用程序利用树形结构展开或者折叠数据.treeTable组件可以用于表格进行动态化数据操作,支持多级表头,支持单元格的自定义模板,支持对表格重载(比如搜索、条件筛选等),支持复选框,支持分页,支持单元格编辑等一系列功能,还可以监听各种事件(包括工具栏事件、行的单双击事件、复选框选择事件、单元格编辑和排序切换事件等).
3.2.1 设置投资测算公式 在投资测算公式中,有三类参数需要进行设置.第一类是常数.例如,在车站投资测算的公式中,车站出入口的指标值是1.53,风道的指标值是1.53,车站装修的指标值是0.18等.
第二类由通过用户输入的敏感参数来获取的.系统在处理敏感参数时,已经获取了所有参数的数组,所以,只要通过数组下标正确处理数据就可以对投资测算公式中的敏感参数进行设置.例如,车站出入口的“数量”由风道面积决定,而风道面积对应于车站投资测算敏感参数的第12个参数,因此,车站出入口的“数量”就设置为R12;主体地连墙数量=(主体长度+主体宽度)×2×(主体埋深+嵌固深度)×围护结构尺寸.在处理输入参数时,下标从1开始,主体长度对应于表单的第5个参数,也就是说表单参数解析之后,R5对应与主体长度.R6对应于主体宽度,R7对应于主体埋深,R10对应于围护结构嵌固深度.因此,主体地连墙数量的设置为(R5+R6)×2×(R7+R10)×R9.
第三类则指代其他公式,这类参数用大写字母“T”开头的字符串来表示.例如,主体地连墙数量的公式为(R5+R6)×2×(R7+R10)×R9;其指标为常数0.46;主体地连墙的投资等于数量乘以指标,在treeTable中,主体地连的数量对应于第“e”列,投资对应于第“f”列,指标对应于第“g”列,而且数量和指标同属于第二行,那么就可以将主体地连墙的投资公式设置为Te2×Tg2.车站主体的投资包含主体地连墙、主体土石方和主体钢筋砼内部结构三个部分.主体地连墙在treeTable组件中的位置是第2行,主体土石方的位置是第3行,主体钢筋砼内部结构的位置是第4行,他们都是位于第f列.因此,车站主体的投资这个单元格就应该设置为“Tf2+Tf3+Tf4”.
3.2.2 通过递归算法获取结点信息 城市轨道交通工程中的投资测算有着复杂的层次关系.例如,每个线路都包含了“区间”这个单位工程;“区间”这个单位工程的投资测算又包括盾构机安装与拆除、洞门处理、盾构掘进与出渣、同步及二次注浆、管片运输、制作及安装、防水处理、联络通道、进出洞及联络通道加固以及洞内临时工程等分项工程;掘进与出渣包括盾构机安装及拆除、洞门处理、硬岩处理以及盾构掘进及出渣等.因此,必须通过递归算法来处理这种层级关系.系统通过递归算法实现了获取所有子结点的信息,该函数的参数是字符串类型的结点ID和结点自身的数据(包括名称、特征、单位、数量、投资金额、指标等),结点自身的数据是用JSON形式拼接起来的字符串.递归函数的返回结果是字符串类型的数据.具体的算法描述如表1所示.
表1 获取子结点信息的递归算法Tab.1 Recursive algorithm for obtaining child node information
如上文所述,投资测算公式中包含了常数、动态的敏感参数和其他公式,而其他公式又可能包含了常数或者动态的敏感参数.因此,必须通过递归算法来处理treeTable组件中的公式,从而使得投资测算公式中仅仅包含常数和以R命名的数组.系统通过递归函数进行投资测算,该函数的参数包括三个:第一个是字符串类型的计算公式;第二个是输入参数的个数;第三个是List类型的投资数据(包括名称、特征、单位、数量、投资金额、指标等).递归函数的返回结果是字符串类型的投资公式数据.具体的算法描述如表2所示.
表2 处理投资测算公式的递归算法Tab.2 Recursive algorithm for dealing with investment measurement formulas
本文以车站单位工程投资测算为例,说明上述功能模块的应用过程.
车站单位工程的敏感参数包括列车编组、施工方法、车站层数、围护结构形式、主体长度、主体宽度、主体埋深、主体覆土、围护结构尺寸、围护结构的嵌固深度、围护结构的入岩比例、出入口面积、风道面积和专项技术措施费等14个参数.车站单位工程的输入参数如图5所示.
图5 车站投资测算的输入参数Fig.5 Input parameters of station investment calculation
在车站单位工程的投资测算设置中,需要处理数量、投资和指标三个数值之间的关系.例如,车站主体地连墙的投资测算需要进行三个方面的设置.
1)指标的设置.主体地连墙的“指标”为经验值0.46.
2)数量的设置.“数量”的计算公式为:数量=(主体长度+主体宽度)×2×(主体埋深+嵌固深度)×围护结构尺寸.在处理输入参数时,下标从1开始,主体长度对应于表单的第5个参数,也就是说表单参数解析之后,R5对应与主体长度.R6对应于主体宽度,R7对应于主体埋深,R10对应于围护结构的嵌固深度.因此,主体地连墙数量的设置为(R5+R6)×2×(R7+R10)×R9.
3)指标的设置.在table模块中,数量对应于第“e”列,投资对应于第“f”列,指标对应于第“g”列,由于数量和指标都已经计算出来了,根据三者的关系,就可以将主体地连墙的投资设置为Te2×Tg2.车站投资测算的输入参数车站投资测算公式编辑后的结果如图6所示.
图6 车站单位工程的投资测算公式Fig.6 The investment calculation formula of station unit project
假设某个车站的施工方式为明挖,车站层数是地下二层,围护结构形式为地连墙,主体长度235 m,主体宽度22 m,主体埋深17 m,主体覆土3 m,围护结构尺寸0.8 m,嵌固深度6 m,明挖出入口面积1 200 m2,风道面积1 200 m2.将这些参数输入之后,按照图5的车站投资测算结果如图7所示.
图7 车站单位工程投资测算结果验证Fig.7 Verification of the calculation results of station unit project investment
城市轨道交通工程的投资测算是非常复杂的,每个类型投资测算都具有复杂的层级关系.
本文阐述了基于Java Web的城市轨道交通工程投资测算实现技术.技术的核心就是可变参数和两个递归算法,可变参数允许动态添加特征指标,两个递归算法很好地处理了城市轨道交通工程结点的层级关系和投资测算公式的复杂性.测试结果表明,城市轨道交通工程投资测算技术设计合理、运行稳定、操作便捷,信息呈现直观高效,满足深圳轨道交通技术经济指标及标准成本应用系统的实际需求.