基于DNN的工程造价成本预测模型分析

2023-12-28 10:42刘新胜平凉信息工程学校甘肃平凉744000
安徽建筑 2023年12期
关键词:单价误差样本

刘新胜 (平凉信息工程学校,甘肃 平凉 744000)

1 深度神经网络

与其他神经网络结构相比,DNN 的主要特点是其出色的非线性处理能力[1]。得益于紧凑高效的非线性映射结构,DNN 可以处理更大数据集和更复杂特征的数学和物理问题。另外,DNN 可以充分利用自身的多重隐藏层结构来训练大量数据,一般用于预测的结果准确率会更高[2]。层数越多表示模型越复杂,具有更好的非线性特性,可以学习到更丰富的特征。理论上,网络结构各层之间的链接是完全连接的,每一层的神经元也可以相互连接。因此,结合经验选择了DNN。DNN 的神经网络结构如图1 所示,它包含多个隐藏层、一个输入层和一个输出层。

图1 DNN模型

从图1 可以看出,DNN 结构主要由输入层、隐藏层和输出层组成[3]。该网络的特点是包含多个隐藏层。输入层表示为X=[x1,x2,xn]7,这是一个n维的列向量。输入数据可以是风力、风速、风向、温度等。在输入层中,激活函数是标准常数函数,输入量需要通过标准常数函数进行转换,然后输出到第一层。(wn,bn)表示n 个隐藏层的权值参数wn和阈值参数bn。隐藏层中的数据来自于上层的输入,利用该层的激活函数对输入变量进行非线性处理后,将处理后的数据输出传递到下层,得到与y 结合的最终输出。

将数据分类处理后作为输出值,通过输入层传递到隐藏层,得到隐藏输入输出的第一关系,表示为式(1):

其中,R1表示第一个隐藏层的输出矩阵;Wi和bi分别表示输入层和隐藏层之间的权重参数和阈值参数。

如果第一隐藏层变量表示为r1,p,将pth设为变量,则w1,p代表输入层与第一隐藏层之间的权重矩阵,b1,p表示输入层与第一隐藏层之间阈值向量中第1 个变量值,则由激活函数f变换的原始列向量x得到R1中的每个输出值,公式为:

根据DNN 的原理,前一个隐藏层的输出是下一个隐藏层的输入,因此DNN模型第m个隐藏层的输出Rm表达式为:

输入量X由输入层处理后发送到隐藏层,完成隐藏层处理后传输到输出层,可以表示为:

其中,Wn+1和bn+1分别表示最后一个隐藏层与输出层之间的权重参数和阈值参数;g表示DNN 中输出层的激活函数。

激活函数是对每层输出量进行非线性处理的工具,可以提高神经网络的数据处理和优化能力。常见的激活函数sigmoid可以表示为:

其中,x表示输入变量;e表示常数,取值为2.7183。

2 基于DNN的造价成本预测模型构建

结合DNN 良好的非线性映射能力和较强的泛化能力[4],本文采用DNN 模型预测工程成本。

2.1 DNN模型输入

影响建设项目造价成本价格的因素很多,这些因素相互影响、相互关联。为了综合分析工程造价,本文参考了部分学者的研究成果,将这些影响因素分为工程项目特性和清单项目特性。

2.1.1 指标划分

针对工程项目特性,指标划分如表1所示。

表1 指标划分

2.1.2 项目特征

列表项通常用12 位编码,编码的前9 位根据不同的类别设置。基于此,需要在库存代码和模型之间进行转换。代码的后3 位根据施工图的具体情况从001开始依次编码,项目代码不能重复。

列表项特征与工程特征相同,需要根据项目特征的描述进行分类并赋予对应的值,如果列表中没有子项,则赋予0。由于存量项目数据量大,对整个工程特性的量化具有很大的复杂性,因此本文以实心砖墙和有梁板两个子项目为例进行量化,如表2所示。

表2 实心砖墙、有梁板工程的量化

2.1.3 DNN模型的输出

在判断工程造价时,通常采用核对、比对等方法来合理判断总报价和各分项工程报价及税金,其中总报价和分项工程报价是主要的判断内容。针对该特征,将DNN 作为模型输出,合理预测价格,为专家评价提供参考。

2.2 DNN结构设计

①激活函数。为了让DNN 模型更具表现力,需要引入一个非线性函数作为激活函数。常用的激活函数有sigmoid函数、ReLU 函数、tanh函数。由于DNN 模型在进行反向迁移时容易出现梯度消失或爆炸,但ReLU 函数可以解决这个问题,而且ReLU 函数的收敛速度更快,所以本文采用ReLU 函数作为激活函数。

②权重初始化。在训练模型之前,需要初始化权重。目前的权重初始化方法主要有两种,一种是将权重初始化为非常小的值,另一种是将权重设置为+1和-1 等数。考虑到第二种方法过于主观,为了达到更好的模型训练效果,本文采用第一种方法,在符合正态分布的范围内用随机数初始化权重。

③网络结构。网络结构主要包括网络节点和隐藏层,直接影响DNN 的性能。一般只考虑一个隐藏层,在这个隐藏层下找到最优的隐藏节点。图3 显示了500 次计算后隐藏层下不同节点的误差。当隐藏节点为23 时,误差最小,但仍难以满足要求。

一般来说,隐藏层越多,模型的准确率就越高,所以使用2 个隐藏层的DNN模型。确定隐藏层数后,确定隐藏层节点数。一般来说,如果隐藏层的节点数不足,会导致模型学习能力差,从而增加误差;过大会造成过拟合现象,降低模型的泛化能力。分析以往经验,第一隐藏层与第二隐藏层节点数的最佳比例为3:1。因此,当两层节点数分别设置为15和5 时准确率最高,最终的DNN 结构如图2所示。

图2 DNN结构示意图

3 模拟实验

3.1 DNN模型训练

3.1.1 模型训练样本和环境

该模型的样本数据来自某工程成本库,其中选取了某地区近20 组工程造价数据作为样本,其中训练样本15 组,测试样本5组。模型编写过程使用Python环境中的Spyder 软件,模型使用改进的BP 算法进行训练,该算法引入动量项,允许误差面避免落入局部最小值,从而得到最优的解。设学习速率η 为0.001,动量系数α 为0.8,迭代次数为5000,误差范围ε小于0.001。

3.1.2 模型训练和结果

在进行模型训练之前,需要对样本数据进行归一化处理,将数据输出和输入控制在区间内,该模型计算5000 次迭代后误差值约为0.00289,如图3 所示。子项目总报价与综合单价的拟合曲线如图4 所示,从中可以看出样本值与实际值的曲线拟合效果是一致的。

图3 模型训练误差的收敛性

图4 DNN模型曲线拟合效果

为了比较DNN 的预测效果,在进行DNN 预测的同时引入了BP 神经网络。对比结果表明,DNN 的预测更接近真实价格,而BP神经网络与真实值的误差较大。得出的结论是DNN 的预测效果更好。

为了验证DNN 模型在实际应用中的有效性,将训练好的DNN 模型用于测试样本,即通过分析测试样本的误差,如果在误差范围内,则说明DNN 模型具有有效性。本文随机选取一组测试样本进行测试,输出值如表3所示。

表3 模型验证结果

从表3 可以看出,DNN 模型的输出值与真实值的相对误差均在5%以下,说明DNN模型可以很好地预测工程成本。

3.2 成本确定

项目成本已被上述预测,但预测结果不是成本价格,主要是因为模型样本是随机的,不考虑个体企业管理能力等因素,因此模型的预测值仅属于平均值。当模型训练时,其产值为结算价格,包括企业成本,而成本价格应是结算价格与预估的差异。因此,需要调整模型的预测,以获得成本价格。

考虑到子项目成本特点和综合单价的比例,本文采用加权平均算法将综合单价乘以调整系数,得到成本价格,调整方法如表4 所示。假设P为成本价格,V为模型输出值,调整方程如式(6)和(7)所示。

表4 综合单价调整方法

由于综合单价的各种成本比例不同,因此需要对综合单价成本α的百分比进行统计。根据代码的前9 位数字,计算机可以确定匹配的列表项,以表4为例进行比例计算,可以得到人工成本的百分比α如下。

设定α1=0.207、α2=0.657、α3=0.008、α4=0.025,计算综合单价的成本系数。相关研究表明,人工成本、材料成本、施工机具使用成本、企业管理成本一般不低于平均成本的90%、98%、70%、70%,而部分企业可以利用零利润来扩大市场,所以利润可以忽略不计。在这方面,综合单位成本因素如表5所示。

表5 系数调整的计算

将表5 的数据代入式(6),可计算出实心砖墙综合单价调整系数为0.85。由于实心砖墙的综合单价产出为468 元,因此成本价为:

根据上述方法,可以对每个综合单价进行调整,得到相应的成本价。总报价中的总成本价可以通过汇总调整后的成本价得到。

4 结论

综上所述,解决成本定价问题的关键在于准确计算项目成本价格。本文在前人研究的基础上,构建了DNN 工程成本价格预测模型,将工程指标系统分为工程特征和清单工程特征两类,然后随机选取20 组样本数据对模型进行训练和预测。结果表明,DNN 预测模型误差较小,能有效地预测工程成本。由于工程成本预测是随机的,结果输出是结算价格,因此对DNN 预测结果进行了合理的调整。采用加权平均算法计算各子项目的综合单价成本价格和总报价的成本,最后得到整个项目的成本价格。本研究可为工程成本的信息预算提供新思路。

猜你喜欢
单价误差样本
如何求单价
嘟嘟熊家的百货商店(二十四)——单价是多少
用样本估计总体复习点拨
角接触球轴承接触角误差控制
Beidou, le système de navigation par satellite compatible et interopérable
算单价
压力容器制造误差探究
推动医改的“直销样本”
随机微分方程的样本Lyapunov二次型估计
九十亿分之一的“生死”误差