计算机系统应用  2023, Vol. 32 Issue (1): 206-213   PDF    
基于Conv1d-LSTM模型的能源分配预测
安鹤男2, 姜邦彦1, 管聪1, 马超1, 邓武才2     
1. 深圳大学 微纳光电子学研究院, 深圳 518000;
2. 深圳大学 电子与信息工程学院, 深圳 518060
摘要:能源分配问题往往与其所在区域环境有关, 能源分配的预测可以通过当地环境因素数据来推测之后对该区域的能源分配数值, 最大程度上分配好能源. LSTM网络预测短期效果良好, 但预测较长时期的数据会导致误差积累, 速度慢且准确性差; Informer是近期新提出的能源预测算法模型, 速度快但在该任务上预测能力不够. 本文提出Conv1d-LSTM模型, 预测结果优于上述两个模型, 具有更低的平均绝对误差和均方根误差.
关键词: 能源分配    卷积神经网络    长短期记忆网络 (LSTM)    平均绝对误差    均方根误差    深度学习    
Energy Distribution Prediction Based on Conv1d-LSTM Model
AN He-Nan2, JIANG Bang-Yan1, GUAN Cong1, MA Chao1, DENG Wu-Cai2     
1. Institute of Microscale Optoelectronics, Shenzhen University, Shenzhen 518000, China;
2. College of Electronics and Information Engineering, Shenzhen University, Shenzhen 518060, China
Abstract: Energy distribution is often related to the local environment. Regarding energy distribution prediction, data on local environmental factors can be availed to predict the value of energy to be distributed to the region, thereby maximizing the extent of proper energy distribution. The long short-term memory (LSTM) network, despite its favorable short-term prediction effect, is weakened by error accumulation, a slow speed, and poor accuracy when it is used for long-term data prediction. As a new algorithmic energy prediction model recently proposed, Informer is fast but not sufficiently capable of prediction in this task. This study proposes a Conv1d-LSTM model that achieves better prediction results than those of the above two models with a smaller mean absolute error (MAE) and root mean square error (RMSE).
Key words: energy distribution     convolutional neural network (CNN)     long short-term memory (LSTM)     mean absolute error (MAE)     root mean square error (RMSE)     deep learning    

能源分配问题是地区发展需要面临的一个难题, 对于未来一段时间内地区的能源分配数值进行预测, 使得能源被充分利用, 既能保证该地区的发展, 还能减少对环境造成的污染, 所以对于所需能源的具体值进行预测是一项非常有必要的工作[1-3]. 而能源分配往往需要考虑到该地区的气候环境因素, 同时还要将以往能源分配的数值作为参考值, 这是典型的时序预测问题.

对于传统的时序预测, 有包括卡尔曼滤波预测[4]、时间序列预测[5]和差分整合滑动平均自回归模型预测[6]等方法, 而此类传统方法预测精度低[7]且预测耗时很长. 利用神经网络预测能更快更好的解决上述问题, 循环神经网络(recurrent neural network, RNN)作为最早使用的算法结构容易出现梯度爆炸的问题, 而且其预测的结果基本仅取决于过去超短时期的数据. 后续为了改进RNN遗忘性大这一问题, 引入了传统的长短期记忆网络(long short-term memory, LSTM)这一种时间循环神经网络, LSTM的记忆门与遗忘门可以处理传入的短期数据, 在预测问题上可以减缓梯度爆炸或者梯度消失的问题; 虽然传统的LSTM模型在相比RNN时有了很大的进步, 但仍然存在3个问题: (1)预测多元问题效果差. LSTM模型在面对多元预测问题上, 往往都是将原始数据直接传入网络中生成对应的预测结果; (2)统计窗口小. LSTM模型进行大量的数据预测时, 很难将过去较长一段时期的数据纳入计算范围, 模型投入过多的数据不但浪费算力甚至会影响结果的准确性; (3)时间复杂度高. LSTM模型预测所花费的时间随所需预测的数量的增加而变长. 另一方面, Informer模型[8]常被用于预测能源分配问题, 该模型预测速度快且在中长距离预测和多元预测问题上都有较好的表现, 但在此任务上该模型效果不好.

本文针对上述问题, 提出了Conv1d-LSTM模型, 引入计算机视觉中的卷积核[9, 10]作为统计窗口, 提取出结合了多元的环境因素与能源分配的数值的特征; 设置较大的计算窗口可以让网络接收到更久远的信息; 采用并联多个LSTM组件的方法可进行快速地长序列预测. Conv1d-LSTM模型面对多元数据集时, 相较于其他经典算法有着更高的精度. 本文将采用平均绝对误差MAE (mean absolute error)、均方根误差RMSE(root mean square error)、平均绝对百分比误差MAPE (mean absolute percentage error)和运行时长作为评价指标. 通过实验发现, Conv1d-LSTM模型较其他模型具有更低的MAERMSE, 在短距离预测MAPE仅为4.4%, 同时在运行速度上也有着一定优势.

1 算法结构 1.1 输入与输出 1.1.1 输入

原始数据 $ {D}_{t}=({d}_{0}, {d}_{1}, {d}_{2}, \cdots , {d}_{m-1}) $ , Dtt时刻该地能源分配具体数值d0与当地环境因素相关数值d1dm–1. 算法输入 $ {X}_{t}=({D}_{t}, {D}_{t+1}, {D}_{t+2}, \cdots , {D}_{t+k-1}) $ , Xt为用于预测t时刻输出Yt的矩阵, 维度为(k, m), k为使用的原始数据Dt的数量.

1.1.2 输出

输出是未来P个连续时间预测的能源分配数值及环境因素数值, 可以表示为 $ \widehat{Y}=\left({Y}_{0}, {Y}_{1}, {Y}_{2}, \cdots , {Y}_{P-1}\right) $ , 其中每个Ytt时刻模型的输出, 即 $ {Y}_{t}=\left({y}_{0}, {y}_{1}, {y}_{2}, \cdots , {y}_{m-1}\right) $ , y0为预测的能源分配具体数值, y1ym–1为预测的环境因素数值.

1.2 算法结构

相较于传统的LSTM模型, Conv1d-LSTM模型继承了LSTM内部的结构, 仍然保留了遗忘门、输入门、输出门等结构, 但输入序列不再从原始数据中直接获得, 而是将多组能源分配的数值以及该区域的环境因素数值传入卷积神经网络中.

图1所示, 输入序列Xt通过多个卷积层和池化层, 最后经过全连接层提取出特征向量Lt , 将生成的特征向量传入LSTM的相关组件中.

图 1 卷积神经网络(CNN)提取数据特征 Fig. 1 data features extracted by convolution neural network

卷积层Conv1d中输入为Xin (k, Lin), 输出为Xout (n, Lout), 其计算公式如下:

$ {X_{{\rm{out}}}} = \frac{{{W_D} \cdot {D_0} + {W_D} \cdot {D_1} + \cdots + {W_D} \cdot {D_{k - 1}} + b}}{n} $ (1)
$ {L_{{\rm{out}}}} = \frac{{{L_{{\rm{in}}}} + 2 * p - \left( {ks - 1} \right)}}{s} + 1 $ (2)

其中, WD为卷积核的权值; D0Dk–1k个原始数据; b为偏置量; Lin为输入的矩阵的第二维度; n为卷积核数量, p为填充数量; ks为卷积核的尺度; s为卷积核每次移动的步长.Xout为输出数值, Lout为维度值.

卷积层计算方式如图2, 假设输入为Xin (3, $ 6 $ ), 设p=1, ks=3, s=1, n=1, 则通过卷积层后输出Xout维度为(1, $ 6 $ ).

图 2 卷积层结构 Fig. 2 convolutional layer structure

平均池化层和激活函数ReLU维度计算公式与卷积层同理, 数值计算公式如下:

$ {P_{{\rm{out}}}} = \frac{{P'_{{\rm{in}}} + {P_{{\rm{in}}}} + P''_{{\rm{in}}}}}{3} $ (3)
$ {R_{{\rm{out}}}} = \max \left( {{R_{{\rm{in}}}}, 0} \right) $ (4)

其中, $ P'_{\rm {in}} $ , $ P_{\rm {in}} $ , $ P''_{\rm {in}} $ 分别为输入的3个相邻的数值; Rin为数据输入ReLU激活函数的数值. Pout为平均池化层输出的数值, Rout为数据通过ReLU激活函数输出数值.

将输入Xt传入通过多层卷积池化以及全连接层的卷积神经网络后获得长序列特征向量Lt , 记为:

$ {L_t} = Conv1d\left( {{X_t}} \right) $ (5)

其中, 计算结果Ltt时刻前k次能量分配的原始数据通过卷积神经网络(convolutional neural networks, CNN)提取出的特征参数, k为超参数, 用于设定每个特征包含多少组的数据.

LSTM模型如图3, 将每个时刻通过卷积神经网络生成的长序列特征Lt传入模型计算如下, 激活函数:

$ \sigma \left( x \right) = \frac{1}{{1 + {{\rm{e}}^{ - x}}}} $ (6)
$ \tanh \left( x \right) = \frac{{{{\rm{e}}^x} - {{\rm{e}}^{ - x}}}}{{{{\rm{e}}^x} + {{\rm{e}}^{ - x}}}} $ (7)

遗忘门ft , 输入参数为前一时刻的隐藏状态Ht–1及特征向量Lt:

$ {f_t} = \sigma \left( {{W_f} \cdot \left[ {{H_{t - 1}}, {L_t}} \right] + {b_f}} \right) $ (8)

输入门it , 输入参数与遗忘门一样:

$ {i_t} = \sigma \left( {{W_i} \cdot \left[ {{H_{t - 1}}, {L_t}} \right] + {b_i}} \right) $ (9)

当前细胞状态Ct , 输入参数由遗忘门的输出ft 、输入门的输出it 、上一时刻细胞状态值Ct–1及特征向量Lt组成:

$ {C_t} = {f_t} \cdot {C_{t - 1}} + {i_t} \cdot \tanh \left( {{W_C} \cdot \left[ {{H_{t - 1}}, {L_t}} \right] + {b_C}} \right) $ (10)

输出门ot , 输入参数为前一时刻隐藏状态Ht–1、当前细胞状态值Ct及特征向量Lt :

$ {o_t} = \sigma \left( {{W_o} \cdot \left[ {{H_{t - 1}}, {L_t}} \right] + {b_o}} \right) $ (11)

更新后的当前隐藏状态Ht :

$ {H_t} = {o_t} \cdot \tanh \left( {{C_t}} \right) $ (12)

输出预测出的长序列值Yt :

$ {Y_t} = {o_t} \cdot \tanh \left( {{C_t}} \right) $ (13)
图 3 LSTM模型 Fig. 3 LSTM model

2 计算方法 2.1 单步计算 2.1.1 单步训练

模型单步训练流程如图4, 假设输入Xt0由10个原始数据Dt0Dt9组成, 即 $ {X}_{t0}=({D}_{t0}, {D}_{t1}, {D}_{t2}, \cdots , {D}_{t9}) $ , 再假设每条原数据Dt有9条数据, 即 $ {D}_{t}=({d}_{0}, {d}_{1}, {d}_{2}, \cdots , {d}_{8}) $ , 由此可知输入Xt0维度为(10, 9). 通过卷积神经网络提取Xt0的特征生成特征向量Lt0 , 向量长度为L , 该值由卷积神经网络最后的全连接层决定. 特征向量Lt0传入LSTM中得到预测值Yt0, 维度为(10, 9). Conv1d-LSTM模型使用的损失函数为MSELoss, 公式如下:

$ {\textit{MSELoss}}\left( {p, t} \right) = {\left( {p - t} \right)^2} $ (14)
图 4 Conv1d-LSTM单步训练 Fig. 4 single-step training of Conv1d-LSTM

预测值Yt0与真实值Dt10通过 ${\textit{MSELoss}}\left({Y}_{t0}, {D}_{t10}\right)$ 计算出损失值后通过反向传播训练模型, 后续如Yt1Dt11Yt2Dt12同理, 直至模型收敛.

2.1.2 单步预测

模型单步预测流程如图5, 假设预测第1个未知值Dt10, 则将Dt0Dt9组成1个输入Xt0传入模型, 即可获得预测值Yt0. 若预测后续值如Dt11, 则将Dt1Dt9和预测值Yt0组成1个输入Xt1传入模型, 获得预测值Yt1. 按照此方法反复计算直到获得所有预测值 $ \widehat{Y} $ .

图 5 Conv1d-LSTM单步预测 Fig. 5 single-step prediction of Conv1d-LSTM

2.2 多步计算 2.2.1 多步训练

由于单步训练的时间复杂度与LSTM一样, 长距离预测时会导致模型性能下降严重, 故设计出一组并联的Conv1d-LSTM结构来提升模型性能. 模型多步训练流程如图6, 假设一次性输入Xt0Xt1, 分别由3个原始数据Dt0Dt2Dt1Dt3组成, 即 $ {X}_{t0}=({D}_{t0}, {D}_{t1}, {D}_{t2}) $ , $ {X}_{t1}=({D}_{t1}, {D}_{t2}, {D}_{t3}) $ 再假设每条原数据Dt有9条数据, 即 $ {D}_{t}=({d}_{0}, {d}_{1}, {d}_{2}, \cdots , {d}_{8}) $ , 由此可知输入Xt0Xt1维度均为(3, 9). 通过卷积神经网络提取Xt0的特征生成特征向量Lt0, Xt1的特征生成特征向量Lt1, 向量长度均为L. 特征向量Lt0Lt1传入LSTM中得到预测值Yt0Yt1, 维度均为(10, 9). 该模型仍然使用的损失函数MSELoss , 但预测值Yt0所对应的真实值为Dt4, Yt1对应Dt5, 故使用 ${\textit{MSELoss}}\left({Y}_{t0}, {D}_{t4}\right)$ ${\textit{MSELoss}}\left({Y}_{t1}, {D}_{t5}\right)$ 计算出损失值, 最后通过反向传播训练模型, 后续如Yt2Dt6Yt3Dt7同理, 直至模型收敛.

2.2.2 多步预测

模型多步预测流程如图7, 假设预测两个未知值Dt4Dt5, 则将输入 $ {X}_{t0}=\left({D}_{t0}, {D}_{t1}, {D}_{t2}\right) $ $ {X}_{t1}=\left({D}_{t1}, {D}_{t2}, {D}_{t3}\right) $ 同时传入模型, 即可获得预测值Yt0Yt1. 若预测后续值如Dt6Dt7, 则将 $ {X}_{t2}=\left({D}_{t2}, {D}_{t3}, {Y}_{t0}\right) $ $ {X}_{t3}=\left({D}_{t3}, {Y}_{t0}, {Y}_{t1}\right) $ 同时传入模型, 获得预测值Yt2Yt3. 按照此方法反复计算直到获得所有预测值 $ \widehat{Y} $ .

图 6 Conv1d-LSTM多步训练 Fig. 6 multistep training of Conv1d-LSTM

图 7 Conv1d- LSTM多步预测 Fig. 7 multistep prediction of Conv1d-LSTM

3 实验分析 3.1 实验数据集

为了评估Conv1d-LSTM模型的性能, 本文使用了从公开数据集(rp5.ru)下载的由比利时切维斯机场气象站收集的当地相关数据. 该数据共29列, 其中1列时间、1列能源分配数值和27列环境因素, 环境因素包括1列光照度、24列从当地采集到的西北角至东南角的气压和湿度数值以及2列匿名环境因素. 其采样时间间隔为10分钟, 共19736行原始数据.

3.2 实验配置

实验服务器配置CPU: Intel Xeon E5-2620 v4, GPU: GTX1080Ti×4 (显存11 GB), 操作系统: CentOS Linux release 7.6.1810 (Core), 训练和测试均在单块显卡上进行, 软件使用Python 3.8、PyTorch 1.7.0、cuda 10.1. 见表1.

表 1 服务器配置和环境 Table 1 server configuration and environment

3.3 参数选择 3.3.1 普通参数

各个模型内部权值矩阵W, 其内部数值分布是以均值为0, 标准差为1的正态分布; 损失值Loss, 由于L2损失较L1损失对异常值更为敏感且惩罚更重, 故本实验使用MSELoss为损失函数.

3.3.2 超参数

统计窗口train_window, 默认值为92; LSTM组件内部隐藏层大小hidden_size, 默认值为100; 优化器选择Adam[11], 学习率learning_rate, 初始值为0.001; 每批次数据量batch, 默认值为32; 迭代次数epoch, 默认值为100.

3.4 实验过程

训练模型时, 全部使用超参数的默认值, 一批次输入124个原始数据, 即统计窗口92, 可截出32个连续的原始数据片段, 使得传入CNN的batch数量为32, 并获得相应的长序列特征. 将获得的长序列特征传入LSTM结构中, 同时传出对应的预测值 $ \widehat{Y} $ . 通过预测值与真实值计算损失值Loss, 使用反向传播[12]机制训练网络, 损失值 Loss在模型迭代训练100次的变化如图8所示.

测试模型时, 以平均绝对误差MAE (mean absolute error), 均方根误差RMSE (root mean square error)和平均绝对百分比误差MAPE (mean absolute percentage error), 其具体表达式为:

$ MAE = \frac{1}{n}\sum\limits_{i = 1}^n {\left| {{y_i} - {{\hat y}_i}} \right|} $ (15)
$ {\textit{RMSE}} = \sqrt {\frac{1}{n}\sum\limits_{i = 1}^n {{{\left( {{y_i} - {{\hat y}_i}} \right)}^2}} } $ (16)
$ {\textit{MAPE}} = \frac{{100{\text{%}} }}{n}\sum\limits_{i = 1}^n {\left| {\frac{{{y_i} - {{\hat y}_i}}}{{{{\hat y}_i}}}} \right|} $ (17)

其中, n为测试的样本数目; yi ${\hat{y}}_{i}$ 分别为能量分配数值预测值和真实值. 由上述公式可知, 模型的MAERMSE越低说明预测准确性越高, MAPE越接近0说明模型越适合该任务, 若超过100%则说明该模型为劣质模型.

图 8 损失值Loss变化 Fig. 8 the change of Loss

3.5 实验结果

实验选择传统LSTM模型, Informer模型与Conv1d-LSTM模型接收上述数据进行学习并预测后续能源分配的具体数值, 分别预测未来间隔为24次 (4 h)、96次 (16 h)、192次 (32 h)以及216次 (36 h)的能源分配数值, 比较其MAEMSEMAPE以及运行时长, 见表2.

表 2 不同模型的实验结果 Table 2 experimental results of different models

表2所示, 使用Conv1d-LSTM模型时, 间隔24次时的超短预测间隔平均绝对误差(MAE)仅为0.0338, 其预测效果远好于Informer模型, 较传统LSTM模型的效果也有小幅提升; 同样, Conv1d-LSTM在中长预测间隔中, 如间隔96次、间隔192次、间隔216次时的MAERMSE均远低于Informer和LSTM模型, MAPE也在始终保持在100%以下.

运行时长用于记录训练好的模型从加载到最后预测出结果的耗时. 传统的LSTM模型面对越来越长的预测任务时, 运行时长也会随之变久, 而Conv1d-LSTM模型随着任务间隔变长所消耗的时间增多不明显, 相较于传统的LSTM模型有着速度上的绝对优势.

3.6 预测波形

为了直观体现Conv1d-LSTM模型在预测问题上的优势, 本文采用Python 3.8中的第三方库matplotlib绘制预测折线图, 数据由模型预测后直接导入该第三方库. 图9图10展示了预测未来24次间隔的能量分配值, 图展示了未来192次间隔的能量分配值, 横坐标为间隔次数, 纵坐标为能源分配数值, 能源分配数值为原始数据放缩在(−1, 1)区间内归一化后的数值.

图 9 各模型24次间隔预测图 Fig. 9 the 24-time interval prediction graph of each model

图 10 各模型96次间隔预测图 Fig. 10 the 96-time interval prediction graph of each model

图9图10可知, Informer模型在预测此类能源分配任务时几乎没有波动, 从实验结果的MAPE远高于100%和展示的波形可以看出, Informer模型不具备对该任务预测能力; LSTM模型在24次间隔即短间隔时预测能力较好, 但在96次中长预测间隔中性能严重下滑, 折线图中LSTM的波形只会在(−1.0, −0.7)之间徘徊, 故在更长间隔的任务中LSTM模型也将不具备预测能力; 本文提出的Conv1d-LSTM模型, 在24次短间隔的预测结果与真实值接近, 且中长距离的预测结果波形与真实数据波形走势接近, 仍然具有很好的预测能力.

4 总结与展望 4.1 当前存在的问题

(1) Conv1d-LSTM模型中运用了神经网络来进行计算, 属于黑箱模型, 无法从原理上找到问题的突破口, 目前阶段主要是以计算出结果来对比真实值, 再利用对比结果进行反推从而达到调优模型性能的目的.

(2) Conv1d-LSTM的模型在该能源分配任务上效果显著, 但其泛化能力还有待验证.

(3)目前关于能源分配的问题还未有成熟的计算体系, 难以从理论上构建更加有效的预测模型, 现阶段仍需要组合搭建不同的网络来尝试解决此类问题.

4.2 发展动向

(1)随着“双碳”政策的提出, 越来越多的人重视能源的相关问题, 也有更多的科研工作者投身该方向的研究. 文中使用的Informer模型虽不适合本文的任务, 但该模型也是我国科研工作者提出的有关能源分配预测的新算法模型.

(2)未来的能源分配任务将会根据能源分配预测的特点, 从数学角度出发, 寻找对能源分配具有高影响力的环境因素, 通过对不同地方采集到的数据进行先筛选归类, 再从算法的角度组合可用的模块或搭建合适的模型.

4.3 总结

能源分配的具体数值具有一定的规律性, 非常适合用深度学习的方法来挖掘其内部各个数据间的关系, 故我们需要搜集大量的当地环境因素数据如温度、湿度及PM2.5等. 本文提出的Conv1d-LSTM用于进行能源分配数值的预测, 拥有传统LSTM短距离的高精确度, 同时还能通过扩大感受野来预测长期数值, 预测的速度也不会因任务的长短不同而发生较大变化. 测试结果也表明, 通过当地的环境因素数值及能源分配数值来训练Conv1d-LSTM模型, 能够准确地预测该地一段时间内能源所需分配的具体数值, 能够达到节能或是充分利用能源的目的.

参考文献
[1]
施冬梅, 肖锋. 基于改进长短时记忆网络的驾驶行为检测方法研究. 汽车工程, 2021, 43(8): 1203-1209, 1262. DOI:10.19562/j.chinasae.qcgc.2021.08.011
[2]
张亚伟, 陈瑞凤, 徐春婕, 等. 基于LSTM-LightGBM模型的车站环境温度预测. 计算机测量与控制, 2022, 30(1): 20-25. DOI:10.16526/j.cnki.11-4762/tp.2022.01.004
[3]
黄冬梅, 王唱, 胡安铎, 等. 基于CNN-BiLSTM的潮汐电站潮位预测. 水力发电, 2021, 47(10): 80-84. DOI:10.3969/j.issn.0559-9342.2021.10.016
[4]
陈军, 陶巍, 吕英飞, 等. 基于卡尔曼滤波的短期负荷预测. 电气开关, 2014, 52(2): 43-45. DOI:10.3969/j.issn.1004-289X.2014.02.013
[5]
李东东, 覃子珊, 林顺富, 等. 基于混沌时间序列法的微网短期负荷预测. 电力系统及其自动化学报, 2015, 27(5): 14-18. DOI:10.3969/j.issn.1003-8930.2015.05.03
[6]
李晨熙. 基于ARIMA模型的短期电力负荷预测. 吉林电力, 2015, 43(6): 22-24. DOI:10.3969/j.issn.1009-5306.2015.06.007
[7]
马得银, 孙波, 刘澈. 基于天气信息的短期冷热电负荷联合预测方法. 电网技术, 2021, 45(3): 1015-1022. DOI:10.13335/j.1000-3673.pst.2020.0794
[8]
Zhou HY, Zhang SH, Peng JQ, et al. Informer: Beyond efficient transformer for long sequence time-series forecasting. Proceedings of the 35th AAAI Conference on Artificial Intelligence. Palo Alto: AAAI, 2021. 11106–11115.
[9]
甘昕艳, 唐晓年. 基于CNN的时序数据关联规则挖掘模型. 计算机仿真, 2021, 38(3): 282-285, 326. DOI:10.3969/j.issn.1006-9348.2021.03.058
[10]
陈海鹏, 周越豪, 王趁录, 等. 基于改进的CNN-LSTM短期风功率预测的系统旋转备用经济性分析. 高电压技术, 2022, 48(2): 439-446. DOI:10.13336/j.1003-6520.hve.20201850
[11]
Kingma DP, Ba J. Adam: A method for stochastic optimization. arXiv:1412.6980, 2014.
[12]
Rumelhart DE, Hinton GE, Williams RJ. Learning representations by back-propagating errors. Nature, 1986, 323(6088): 533-536. DOI:10.1038/323533a0