2.845

2023影响因子

(CJCR)

  • 中文核心
  • EI
  • 中国科技核心
  • Scopus
  • CSCD
  • 英国科学文摘

留言板

尊敬的读者、作者、审稿人, 关于本刊的投稿、审稿、编辑和出版的任何问题, 您可以本页添加留言。我们将尽快给您答复。谢谢您的支持!

姓名
邮箱
手机号码
标题
留言内容
验证码

结合历史运动状态的机器人高效沿墙算法研究

蒋林 张燕飞 朱建阳 雷斌 王翰 高旭敏

徐任超, 阎威武, 王国良, 杨健程, 张曦. 基于周期性建模的时间序列预测方法及电价预测研究. 自动化学报, 2020, 46(6): 1136−1144 doi: 10.16383/j.aas.c180712
引用本文: 蒋林, 张燕飞, 朱建阳, 雷斌, 王翰, 高旭敏. 结合历史运动状态的机器人高效沿墙算法研究. 自动化学报, 2020, 46(6): 1166−1177 doi: 10.16383/j.aas.c190365
Xu Ren-Chao, Yan Wei-Wu, Wang Guo-Liang, Yang Jian-Cheng, Zhang Xi. Time series forecasting based on seasonality modeling and its application to electricity price forecasting. Acta Automatica Sinica, 2020, 46(6): 1136−1144 doi: 10.16383/j.aas.c180712
Citation: Jiang Lin, Zhang Yan-Fei, Zhu Jian-Yang, Lei Bin, Wang Han, Gao Xu-Min. Research on efficient algorithm of robot along the wall combined with historical motion state. Acta Automatica Sinica, 2020, 46(6): 1166−1177 doi: 10.16383/j.aas.c190365

结合历史运动状态的机器人高效沿墙算法研究

doi: 10.16383/j.aas.c190365
基金项目: 国家重点研发计划项目(2019YFB1310000), 国家自然科学基金(61305110), 机器人与智能系统研究院开放课题(F201803), 武汉市应用基础前沿项目(2019010701011404), 湖北省自然科学基金(2018CFB626)资助
详细信息
    作者简介:

    蒋林:武汉科技大学博士, 教授. 2016年1月至2017年1月在英国朴茨茅斯大学访学一年. 主要研究方向为室内移动机器人地图构建、定位、导航及液压机器人研究. E-mail: jianglin76@wust.edu.cn

    张燕飞:武汉科技大学硕士研究生. 主要研究方向为移动机器人高效沿墙与导航算法研究. 本文通信作者. E-mail: 15671553653@163.com

    朱建阳:武汉科技大学机械自动化学院副教授. 2014年于哈尔滨工业大学流体机械及工程专业获得工学博士学位. 主要研究方向为扑翼空气动力学, 流固耦合分析和流体动力学. E-mail: zhujy@wust.edu.cn

    雷斌:武汉科技大学博士, 副教授. 2017年5月至2018年5月在美国休斯顿大学访学. 主要研究方向为群体机器人, 编队控制, 一致性方法.E-mail: leibin@wust.edu.cn

    王翰:武汉科技大学硕士研究生. 主要研究方向为移动机器人定位. E-mail: 15071309504@163.com

    高旭敏:武汉科技大学硕士研究生. 主要研究方向为移动机器人定位与建图.E-mail: 15071460998@163.com

Research on Efficient Algorithm of Robot Along the Wall Combined With Historical Motion State

Funds: National Key Research and Development Program of China (2019YFB1310000), Supported by National Natural Science Foundation of China(61305110), Research Institute of Robotics and Intelligent Systems (F201803), Wuhan Application Foundation Frontier Project (2019010701011404), and Hubei Natural Science Foundation (2018CFB626)
  • 摘要: 针对目前室内移动机器人沿墙走算法过于复杂、路径易重复、不能完全遍历、效率低等问题, 采用室内未知环境下结合历史状态的机器人沿墙高效遍历研究来解决这些问题. 该算法由移动机器人的上一个周期历史环境运动状态(分8类)、当前环境运动状态(分8类)和旋向信息(分2类)建立运动规则库, 沿墙行走时移动机器人时时采集这三类信息(上一个周期历史环境运动状态、当前环境运动状态和旋向信息)决定移动机器人当前的运动方向, 如此循环直到完成指定的沿墙任务. 最后对该算法进行了仿真与实际实验, 实验结果证明该算法可以在不同的、复杂的环境中高效、快速地完成沿墙走的任务, 并且对室内未知环境有很好的适应性.
  • 时间序列数据在现实生活中广泛存在, 例如金融领域中的交易数据和经济统计数据、消费电商领域中的用户浏览和购买数据、医疗领域中的医疗器械的信号记录、天气监测站记录的天气指标数据等[1-4]. 这些时间序列数据是相应领域非常宝贵的数据资源, 对这些数据的准确、有效分析和利用有助于减小人力成本, 提高生产效率, 提高经济收益[5].

    现实中的时间序列通常具有复杂的非线性动态, 这为时间序列预测带来了困难. 另外, 由于人类活动或自然运动的影响, 时间序列数据常常体现出一定的周期性. 周期性的提取对时间序列预测有着积极意义. 时间序列的趋势同样具有重要的意义, 有时甚至作为预测的目的.

    传统的时间序列分析方法源自于自回归模型(Autoregressive model, AR)和移动平滑模型(Mo-ving average, MA). 自回归移动平滑模型(Autoregressive model and moving average, ARMA)和在其基础上发展起来的自回归差分移动平滑模型(Auto-regressive integrated moving average, ARIMA)是时间序列分析的经典方法[6]. 另外, 自回归条件异方差模型(Autoregressive conditional heteroscedasticity, ARCH)[7]和广义自回归条件异方差模型(Gen-eralized autoregressive conditional heteroscedasticity, GARCH)[8]引入了异方差, 对时间序列的波动性进行建模. 基于机器学习的支持向量机回归(Sup-port vactor regression, SVR)和核岭回归(Kernel ridge regression, KRR)等方法在时间序列分析上已经有大量的研究[9-11]. 随着深度学习理论的发展, 循环神经网络(Recurrent neural networks, RNNs)已经成为处理时间序列数据的主流, 在大量应用场景中取得了不俗的效果[12-13]. 回声状态网络(Echo state network, ESN)也是时间序列预测的常用模型[14].

    传统的时间序列分析方法基于平稳性假设[15], 对短期平稳的时间序列有较好的预测效果, 但是难以对复杂非线性时间序列数据进行有效建模. SVR和KRR等机器学习方法使用滑动窗口的方式处理预测序列, 忽略了时间序列数据的序列属性, 不能很好地捕捉时间序列中的长时依赖. 同时SVR和KRR受限于模型容量, 难以达到预测非线性时间序列的最佳效果. 深度神经网络由于其超强的拟合能力, 在复杂非线性时间序列数据的处理方面有着天然的优势. 同样对于分割后的序列窗口, 深度神经网络仍能从中捕捉时间序列的长期依赖.

    能源领域是产生大量时间序列的领域, 如电力用量数据、风力序列数据、太阳能数据和电力价格数据等. 其中, 电力价格是能源市场上的关键因素, 影响着能源市场的流通和运行. 能源市场的自由属性使电力价格具备了金融商品性质, 但其还受到电力传输和需求量的影响. 电力传输受电网传输容量的限制, 而电力需求量受人类活动和天气因素的影响. 在这些影响因素下, 电力价格数据呈现出长期复杂非线性动态, 体现出高波动性. 另外电力价格还存在着明显的周期性.

    传统的时间序列预测方法对电力价格的预测已有大量研究和应用[16], 而循环神经网络在电力价格预测中同样取得了不错的效果[17]. 针对能源领域时间序列的周期性属性, 传统的方法主要采用信号处理方法, 而常规的循环神经网络中并没有对时间序列的周期性进行建模的模块. 目前, 许多研究针对数据的周期性展开, 主要研究工作有: Clements等[18]提出了多方程时间序列方法, 在方程中加入了周期设定, 对澳洲能源市场的电力负载进行预测; Anbazhagan等[19]使用离散余弦变换处理原始序列, 并用神经网络进行建模; Rafiei等[20]使用小波变换处理原始序列, 并用极限学习机对分解结果进行建模等.

    针对循环神经网络难以对时间序列数据的周期性直接进行建模的问题, 本文结合时间序列周期分解的思想, 设计了循环神经网络的周期损失和趋势损失, 分别对时间序列中的周期和趋势进行辅助建模; 在多任务学习框架下, 将周期损失、趋势损失和模型自身的损失函数相结合, 联合优化循环神经网络. 提出的模型用于能源市场的电力价格预测, 实验结果取得了较好的预测精度, 验证了周期和趋势对时间序列预测的作用, 说明本文提出的周期损失和趋势损失能够有效地辅助模型捕捉数据特征.

    循环神经网络是常用的建模时间序列的神经网络模型. 循环神经网络使用基于时间的反向传播算法(Back-propagation through time, BPTT)来训练网络.

    基础的循环神经网络及其展开形式如图1所示. 其数学形式为

    图 1  一个展开的基础循环神经网络
    Fig. 1  The unfold structure of RNN
    $$ h_t = f\left( {Ux_t +Wh_{t-1} } \right) $$ (1)
    $$ o_t = g\left( {Vh_t } \right) \quad \quad \quad \quad \;\; $$ (2)

    其中, $ U $, $ V $, $ W $都是网络的参数, $ f $$ g $表示激活函数, 可以是ReLU、sigmoid和tanh等非线性函数. $ x_t $表示$ t $时刻的输入, $ h_t $表示$ t $时刻网络的隐藏状态, $ o_t $表示$ t $时刻网络的输出.

    基础的循环神经网络在训练时会面对梯度爆炸或梯度消失的问题[21].

    为了克服循环神经网络的梯度爆炸和梯度消失问题, Hochreiter等[22]提出了长短时记忆网络(Long short term memory, LSTM). LSTM的内部结构如图2所示.

    图 2  LSTM的内部结构示意图
    Fig. 2  The schematic diagram of LSTM

    LSTM的主要思想是引入门控单元和长时记忆单元. 门控单元负责控制长时记忆单元中状态的记忆、修改和遗忘. 同时, LSTM还具有和基础循环神经网络相同的短期记忆单元.

    LSTM的数学表示为

    $$ f_t = \sigma \left( {W_f \left[ {h_{t-1} ,x_t } \right]+b_f } \right) \quad \quad \!\!\!$$ (3)
    $$ i_t = \sigma \left( {W_i \left[ {h_{t-1} ,x_t } \right]+b_i } \right) \quad \quad $$ (4)
    $$ o_t = \sigma \left( {W_o \left[ {h_{t-1} ,x_t } \right]+b_o } \right) \quad \quad \!\!\!$$ (5)
    $$ \tilde {C}_t = \tanh \left( {W_C \left[ {h_{t-1} ,x_t } \right]+b_C } \right) $$ (6)
    $$ C_t = i_t \tilde {C}_t +f_t C_{t-1} \quad \quad \quad \quad \quad \!\!\! $$ (7)
    $$ h_t = o_t \tanh \left( {C_t } \right) \quad \quad \quad \quad \quad\quad $$ (8)

    其中, $ C_t $$ \tilde {C}_t $分别表示$ t $时刻的长期记忆和短期记忆, $ f_t $, $ i_t $$ o_t $分别表示LSTM的遗忘门、输入门和输出门在$ t $时刻的值. $ \left( {W_f ,b_f } \right) $, $ \left( {W_i ,b_i } \right) $, $ \left( {W_o ,b_o } \right) $$ \left( {W_C ,b_C } \right) $分别表示LSTM的遗忘门、输入门、输出门和长时记忆单元的参数. $ \sigma $代表sigmoid函数. $ x_t $表示 $ t $时刻的输入, $ h_t $表示 $ t $时刻隐藏状态的输出.

    由于引入了门控单元和长时记忆单元, 状态的更新方式从乘性增量更新变为了加性增量更新[23], 从而一定程度上避免了梯度消失问题.

    门控循环单元(Gate recurrent unit, GRU)[24]是LSTM的一个重要变体. 相比于LSTM, GRU进行了一定的简化: 将遗忘门和输入门合并成为一个门控单元, 称为更新门; 去除了长期记忆单元, 与隐藏状态混合, 保留短期记忆单元; 去除了输出门, 改为重置门. GRU的内部结构如图3所示.

    图 3  GRU的内部结构示意图
    Fig. 3  The schematic diagram of GRU

    GRU的数学表示为

    $$ z_t = \sigma \left( {W_z \left[ {h_{t-1} ,x_t } \right]} \right) \quad \quad \quad $$ (9)
    $$ r_t = \sigma \left( {W_r \left[ {h_{t-1} ,x_t } \right]} \right) \quad \quad \quad $$ (10)
    $$ \tilde {h}_t = \tanh \left( {W\left[ {r_t \times h_{t-1} ,x_t } \right]} \right) $$ (11)
    $$ h_t = \left( {1-z_t } \right)h_{t-1} +z_t \tilde {h}_t \quad \quad $$ (12)

    其中, $ \tilde {h}_t $表示$ t $时刻的短期记忆, $ h_t $表示$ t $时刻的隐藏状态. $ z_t $$ r_t $分别表示GRU的更新门和重置门在$ t $时刻的值. $ W_z $, $ W_r $$ W $分别表示GRU的更新门、重置门和短期记忆单元的参数.

    GRU大大精简了参数, 相同隐藏状态的GRU的参数量约为LSTM的2/3, 使得模型更不容易过拟合. 本文使用GRU作为默认的循环神经网络模型.

    结合时间序列周期分解, 设计了循环神经网络的周期损失和趋势损失, 将周期损失、趋势损失和模型自身的损失函数相结合, 在多任务学习框架下, 联合优化循环神经网络.

    周期分解是一种对时间序列的周期和趋势建模的经典方式.

    周期建模是指, 针对周期性的时间序列, 可以显式的考虑序列跨周期的关系. 周期性的一种形式化表述为

    $$ \begin{split} & ACF\left( {x_t ,x_{t-T} } \right)\gg ACF\left( {x_t ,x_{t-\tau } } \right) \\ & \quad \quad \quad \quad \quad \quad \quad \quad \quad \!\!\!\! \forall \tau :od \left( {\tau ,T} \right)\ne 0 \end{split} $$ (13)

    其中, $ ACF $代表自相关函数. 周期序列按照周期的延迟序列的自相关性应该远远大于其他的延迟序列.

    趋势建模是指除了建模每一个具体时间点的具体数值, 还应该捕捉到一段时间的“整体状态”, 包括总体走势、变化范围等因素.

    可以认为, 时间序列是趋势、周期和余差的组合. 时间序列的分解可以是加性的, 也可以是乘性的, 即

    $$ X_t = T_t +S_t +R_t $$ (14)
    $$ X_t = T_t \times S_t \times R_t $$ (15)

    其中, $ X_t $表示原始时间序列, $ T_t $表示趋势分量, $ S_t $表示周期分量, $ R_t $表示余差. 乘性的组合可以通过对数函数转换为加性组合, 所以这两种组合实质上是一致的.

    时间序列的周期分解启发了周期损失函数和趋势损失函数的提出.

    周期损失函数鼓励循环神经网络预测的隐藏状态出现周期性. 假设一个循环神经网络的隐藏状态具有周期性, 它的隐藏状态需要满足一定的条件:

    $$ \begin{split} \cos nt =\; & h_t +h_{t+1} +\cdots +h_{t+T-1}\cong \\ & h_{t+1} +h_{t+2} +\cdots +h_{t+T} \end{split} $$ (16)

    即有

    $$ h_t \cong h_{t+T} $$ (17)

    为了在循环神经网中加入这样的隐藏状态关系, 在$ \left[ {t_1 ,t_2 ,\cdots ,t_n } \right] $的时间窗上定义如下的周期损失函数

    $$ \ell _{\rm seasonal} \left( {kT} \right) = \frac{1}{n}\sum\limits_{t = t_1 }^{t_n } {D\left( {h_t ,h_{t+\tau } } \right)} $$ (18)

    其中, $ D\left( {\ast ,\ast } \right) $表示距离度量函数, $ \tau $表示隐藏状态之间的时间跨度.

    针对周期为$ T $的时间序列, 一般取$ \tau = kT $. $ \tau $也可以取1, 这样式(18)可以视为循环神经网络的一种正规化方法. $ D\left( {\cdot ,\cdot } \right) $一般取平方距离, 此时的周期损失为

    $$ \ell _{\rm seasonal} \left( {kT} \right) = \frac{1}{nm}\sum\limits_{t = t_1 }^{t_n } {\sum\limits_{i = 1}^m {\left\| {h_t^{\left( i \right)} -h_{t+kT}^{\left( i \right)} } \right\|^2} } $$ (19)

    其中, $ m $表示循环神经网络的隐藏状态的维度, $ h_t^{\left( i \right)} $表示$ t $时刻隐藏状态的第$ i $维的值. 更长周期跨度有助于鼓励长距离的周期平稳性.

    在很多实际应用中, 每个时间点的数值并不是最受关注的问题, 而关注的重点在于捕获某种趋势. 时间序列的趋势可以由一段时间内的均值、最大最小值和波动率来反映.

    $ \left[ {t_1 ,t_2 ,\cdots ,t_n } \right] $的时间窗上对时间序列的趋势进行建模, 从均值、最大最小值和波动率的角度可以得到如下的几个趋势损失函数

    $$ \begin{split} \ell _{\rm trend}^{\rm MEAN} \left( w \right) =\; & \frac{1}{n}\sum\limits_{t = t_1 }^{t_n } {\left\| {mean\left( {\hat {y}_{t-w+1} ,\cdots ,\hat {y}_t } \right)} \right.}- \\ & \left. {mean\left( {y_{t-w+1} ,\cdots ,y_t } \right)} \right\|^2 \end{split} $$ (20)
    $$ \begin{split} \ell _{\rm trend}^{\rm MAX} \left( w \right) =\; & \frac{1}{n}\sum\limits_{t = t_1 }^{t_n } {\left\| {\max \left( {\hat {y}_{t-w+1} ,\cdots ,\hat {y}_t } \right)} \right.} - \\ & \left. {\max \left( {y_{t-w+1} ,\cdots ,y_t } \right)} \right\|^2 \end{split}\;\;\;\; $$ (21)
    $$ \begin{split} \ell _{\rm trend}^{\rm MIN} \left( w \right) =\; & \frac{1}{n}\sum\limits_{t = t_1 }^{t_n } {\left\| {\min \left( {\hat {y}_{t-w+1} ,\cdots ,\hat {y}_t } \right)} \right.} -\\ &\left. {\min \left( {y_{t-w+1} ,\cdots ,y_t } \right)} \right\|^2 \end{split} $$ (22)
    $$ \begin{split} \ell _{\rm trend}^{\rm VAR} \left( w \right) =\; & \frac{1}{n}\sum\limits_{t = t_1 }^{t_n } {\left\| {var\left( {\hat {y}_{t-w+1} ,\cdots ,\hat {y}_t } \right)} \right.} - \\ & \left. {var\left( {y_{t-w+1} ,\cdots ,y_t } \right)} \right\|^2 \end{split} $$ (23)

    其中, $ \ell _{\rm trend}^{\rm MEAN} $$ \ell _{\rm trend}^{\rm MAX} $$ \ell _{\rm trend}^{\rm MIN} $$ \ell _{\rm trend}^{\rm VAR} $分别代表均值趋势损失、最大趋势损失、最小趋势损失和波动趋势损失. $ w $表示趋势窗宽, 一般与序列的时间窗宽度$ n $不同. $ \hat {y} $是循环神经网络的预测值, $ y $是真实值.

    在机器学习中, 通常只关注一个优化目标. 多任务学习(Multi-task learning)[25]是同时学习多个相关的任务并在这些任务间共享某些底层的特征表示的机器学习方式. 在深度学习中, 多任务学习非常普遍.

    一般地, 针对多个优化目标, 多任务学习框架中存在共同优化和分开交替优化两种优化方式. 共同优化适用于紧密相关的任务, 分开交替优化则适用于不相关任务和对抗性任务. 周期性和趋势约束作为时间序列预测的辅助任务, 与预测任务关系密切. 因此, 将周期损失和趋势损失引入优化目标进行共同优化是合理的.

    本文根据多任务学习的框架, 将周期损失和趋势损失将作为预测任务的共同优化目标, 在原来的损失函数的基础上, 加入了辅助损失函数, 得到时间序列多任务学习混合模型的优化目标函数

    $$ J = L_{\rm main} +\lambda _S \ell _{\rm seasonal} +\ell _{\rm trend} \quad \quad \quad \;$$ (24)
    $$ \begin{split} \ell _{\rm trend} =\; & \lambda _T^{\rm MEAN} \ell _{\rm trend}^{\rm MEAN} +\lambda _T^{\rm MAX} \ell _{\rm trend}^{\rm MAX}+ \\ & \lambda _T^{\rm MIN} \ell _{\rm trend}^{\rm MIN} +\lambda _T^{\rm VAR} \ell _{\rm trend}^{\rm VAR} \end{split} \;\;\;\; $$ (25)

    其中, $ \lambda _S $是周期损失的权重, $ \lambda _{\rm trend}^{\rm MEAN} $, $ \lambda _{\rm trend}^{\rm MAX} $, $ \lambda _{\rm trend}^{\rm MIN} $$ \lambda _{\rm trend}^{\rm VAR} $分别代表对应的趋势损失的权重.

    引入周期损失和趋势损失的循环神经网络依然可以通过BPTT算法来训练.

    欧洲能源交易所(European Power Exchange, EPEX)是欧洲最重要的能源交易市场, 覆盖了德国、法国、英国等欧洲最主要的国家. 电力在各个国家的电网之间进行交换, 其中一部分是通过事先规划的方式, 而另一部分则通过能源交易所进行交易. 每个国家都会有自己的子市场, 例如EPEX法国市场. EPEX 法国市场的现货市场主要分为三个子市场: 日前交易市场(Day-ahead market)、日内交易市场(Intraday market)和再平衡市场(Balancing market). 能源市场的实际交易主要发生在日前交易市场. 通常EPEX法国市场的日前交易市场每天形成24个报价, 即每小时一个报价.

    图4展示了EPEX法国市场2012年~2015年的一天的不同小时的价格的均值和标准差. 可以看出, 电力价格的标准差非常高, 在均值的1/4以上, 在个别时间段(9:00~11:00)的标准差甚至超出了均值. 这说明EPEX法国市场的电力价格具有超高的波动性. 图5图6分别展示了EPEX法国市场2012年~2015年每年的日级别平均价格和周级别平均价格. 可以看出, 无论是按日的级别还是周的级别对电价进行统计, 每年的电力价格均呈现非常相似的走势, 体现出明显的周期性.

    图 4  能源市场价格的高波动性
    Fig. 4  High volatility of electricity price
    图 5  能源市场价格的日级别周期性
    Fig. 5  The daily seasonality of electricity price
    图 6  能源市场价格的周级别周期性
    Fig. 6  The weekly seasonality of electricity price

    选用EPEX法国市场的电力价格数据作为仿真来源. 数据来自日前电力市场, 时间段取自2012年1月1日~2016年6月30日, 其中2012年1月1日~2015年12月31日(共1 461天)的序列数据用来做训练和验证, 2016年1月1日~2016年6月30日(共182天)的序列数据用来做测试. 通常每天有24个时间点(夏令时转换日有23个时间点, 冬令时转换日有25个时间点).

    为了保证数据的稳定性, 需要对数据进行预处理, 去除数据的均值和波动率的影响

    $$ \tilde {x}_t^h = \frac{x_t^h -\bar {x}_t }{std\left( x \right)} $$ (26)

    其中, $ x $代表所有的序列数据, $ h $表示序列中的年份信息(2012年~2016年),$ x_t^h $表示不同年份的在同一时间点$ t $的序列值, $ \bar {x}_t $表示$ x_t^h $按年份展开的子序列的均值, $ \tilde {x}_t^h $为处理后的序列值. 经过这样的变换, 大部分时间点的数据处于[−1, 1]区间, 可以避免出现一些数值问题.

    实验对比了几种基础的循环神经网络: RNN、LSTM和GRU. 为了分析周期损失和趋势损失的作用, 在GRU的基础上分别添加周期损失、趋势损失或者两者都添加.

    循环神经网络需要调整的超参数有: 隐层大小、优化器、初始学习率、批大小(batch size)、训练轮数(epochs)以及延迟窗宽. 针对引入周期损失和趋势损失的GRU, 还需要调整的有: 周期损失系数$ \lambda _S $、周期损失中的周期跨度kT、趋势损失系数($ \lambda _{\rm trend}^{\rm VAR} $$ \lambda _{\rm trend}^{\rm MEAN} $$ \lambda _{\rm trend}^{\rm MAX} $$ \lambda _{\rm trend}^{\rm MIN} $)和趋势窗宽$ w $. 这里考虑能源市场的短期周期, 故$ k $取1,$ T $取24. 由于能源市场的价格预测任务往往不关注每日的平均价格和价格的波动预测的误差, $ \lambda _{\rm trend}^{\rm MEAN} $$ \lambda _{\rm trend}^{\rm VAR} $的值都预设为0, 不再纳入超参数选择中. 能源市场的价格预测比较关注一天内的最大最小值, 因此趋势窗宽$ w $设为24. 训练时间段的最后一个月(2015年12月)作为验证时间段. 通过在验证时间段内进行多次实验的方式来选取超参数. 选出来的超参数将被用于在完整的训练时间段上的训练. 循环神经网络的超参数设置如表1所示.

    表 1  循环神经网络的超参数设置
    Table 1  The hyperparameters of RNN
    超参数具体取值
    隐层大小64
    优化器RMSProp, 配合梯度裁剪
    初始学习率0.001
    批大小64
    训练轮数12
    延迟窗宽14
    下载: 导出CSV 
    | 显示表格

    表2列出了周期损失和趋势损失的合理的取值范围.

    表 2  周期损失和趋势损失的权重范围
    Table 2  Weights range of seasonal loss and trend loss
    权重取值范围
    $\lambda_S $0.05~0.15
    $\lambda_T^{\rm{MEAN}} $0
    $\lambda_T^{\rm{MAX}} $0.05~0.1
    $\lambda_T^{\rm{MIN}} $0.05~0.1
    $\lambda_T^{\rm{VAR}} $0
    下载: 导出CSV 
    | 显示表格

    除了与基础的循环神经网络进行对比, 另外还选取了ARIMA、SVR和KRR作为对比模型. SVR和KRR的超参数均通过在训练时间段内的5折交叉验证直接选取, 均选用3阶多项式核. 为了满足ARIMA模型的静态性要求, 电力价格数据还需要经过特殊处理, 即将序列减去最小值后取对数, 然后进行天级和周级的延迟差分

    $$ {p}' = (1-\beta ^{24})(1-\beta ^{168})\ln (p-\min p+1) $$ (27)

    实验采用均方根误差(Root mean square error, RMSE)和平均绝对误差(Mean absolute error, MAE)作为评价指标

    $$ RMSE = \sqrt {\frac{1}{N}\sum\limits_{t = 1}^N {\left( {\hat {y}_t -y_t } \right)^2} } $$ (28)
    $$ MAE = \frac{1}{N}\sum\limits_{t = 1}^N {\left| {\hat {y}_t -y_t } \right|} \quad \quad \quad $$ (29)

    其中, $ N $表示测试时间段的时间点数. RMSE也是各模型训练时的损失指标.

    为了更合理地比较趋势损失的影响, 本文还引入了两个额外指标, 最大趋势绝对误差$ {MAE}^{\rm{MAX}} $和最小趋势绝对误差$ {MAE}^{\rm{MIN}} $, 分别考察模型对每天电力价格最大值和最小值的预测能力

    $$ \begin{split} MAE^{\rm{MAX}} =\; & \frac{1}{M}\sum\limits_{t = 1}^M {\left| {\max \left( {\hat {y}_{t-w+1} ,\cdots ,\hat {y}_t } \right)} \right.}- \\ & \left. {\max \left( {y_{t-w+1} ,\cdots ,y_t } \right)} \right| \\ \end{split} $$ (30)
    $$ \begin{split} MAE^{\rm{MIN}} =\; & \frac{1}{M}\sum\limits_{t = 1}^M {\left| {\min \left( {\hat {y}_{t-w+1} ,\cdots ,\hat {y}_t } \right)} \right.}- \\ & \left. {\min \left( {y_{t-w+1} ,\cdots ,y_t } \right)} \right| \\ \end{split} $$ (31)

    其中, $ M $表示测试时间段划分的趋势窗的数目.

    由于神经网络在训练过程中具有一定的随机性, 每次训练的得到的结果都有所不同. 为了保证实验结果的可信性, 对所有循环神经网络采用了重复10次训练并取测试结果的平均值和标准差. 各方法在能源价格预测的结果见表3.

    表 3  各种方法的能源价格预测效果对比
    Table 3  The result comparisons of different methods for electricity price forecasting
    模型RMSEMAE${MAE}^{\rm{MAX}}$${MAE}^{\rm{MIN}}$
    ARIMA6.414.775.154.82
    SVR4.913.714.273.34
    KRR5.143.753.813.78
    RNN5.09±0.243.75±0.193.72±0.283.78±0.19
    LSTM4.90±0.183.65±0.173.65±0.423.61±0.26
    GRU4.83±0.193.54±0.063.64±0.313.56±0.26
    GRU, $\lambda_S$ = 0.1, $\lambda_T^{\rm{MAX}}$ = 0, $\lambda_T^{\rm{MIN}}$ = 04.71±0.163.49±0.133.53±0.283.53±0.15
    GRU, $\lambda_S$ = 0.05, $\lambda_T^{\rm{MAX}}$ = 0, $\lambda_T^{\rm{MIN}}$ = 04.74±0.113.45±0.183.53±0.233.48±0.26
    GRU, $\lambda_S$ = 0 , $\lambda_T^{\rm{MAX}}$ = 0.1 , $\lambda_T^{\rm{MIN}}$ = 0.14.85±0.163.57±0.203.41±0.263.41±0.18
    GRU, $\lambda_S$ = 0 , $\lambda_T^{\rm{MAX}}$ = 0.05 , $\lambda_T^{\rm{MIN}}$ = 0.054.83±0.113.54±0.083.39±0.183.42±0.15
    GRU, $\lambda_S$ = 0.1, $\lambda_T^{\rm{MAX}}$ = 0.1 , $\lambda_T^{\rm{MIN}}$ = 0.14.68±0.083.45±0.033.35±0.133.33±0.12
    GRU, $\lambda_S$ = 0.05, $\lambda_T^{\rm{MAX}}$ = 0.05 , $\lambda_T^{\rm{MIN}}$ = 0.054.60±0.153.34±0.123.38±0.133.27±0.11
    下载: 导出CSV 
    | 显示表格

    从实验结果可以看出, 对于电力价格预测这类复杂的时间序列预测问题, ARIMA模型的预测效果不佳, SVR、KRR和RNN的效果接近且远远优于ARIMA模型LSTM和GRU的预测效果比SVR和KRR更好, 而基础的GRU在对比模型中效果最佳. 添加周期损失能对GRU起到比较好的辅助效果, 有助于降低模型的预测误差, 提升预测效果. 趋势损失最直接的影响是显著降低最大趋势误差和最小趋势误差, 说明模型通过趋势损失捕捉到了数据在时间窗内的趋势信息(包括电力价格的极值、均值和变化率等), 这对模型捕捉数据特征的能力起到了有力的补充. 另外可以注意到的是, 加入周期损失也能够降低最大趋势误差和最小趋势误差. 这说明周期损失有助于网络捕捉一些数据的本质特征. 实验结果表明: 同时引入周期损失和趋势损失可以使GRU的性能达到最佳.

    引入周期损失和趋势损失的GRU在最佳的参数下($ \lambda _S = \lambda _T^{\rm{MAX}} = \lambda _T^{\rm{MIN}} = 0.05 $)的预测结果如图7所示.

    图 7  加入了周期损失和趋势损失的GRU模型的预测结果
    Fig. 7  The results of electricity price forecasting with seasonal loss and trend loss

    可以看出, 引入周期损失和趋势损失的GRU对电力价格数据的预测效果不错, 预测曲线对真实数值的走势和变化跟踪准确. 预测曲线具有非常好的周期性, 这体现了周期损失中周期性约束的作用. 同时, 预测曲线更偏向于平稳的预测, 这在一定程度上避免了噪声带来的预测性能损失. 另外, 预测曲线在正常情况下的最大最小值的预测效果很好, 说明趋势损失能够起到有效的监督效果. 但可以观察到的是, 模型在一些极端值(电力价格的异常攀升和下降)上的预测效果不佳. 这涉及到突变的预测问题, 在现有模型框架下难有较好的预测效果.

    为了进一步分析周期损失的效果, 将GRU和加入周期损失的GRU在训练一段时间之后的隐藏状态$ h_t $分别抽出, 并将向量$ h_t $的均值作对比, 部分结果如图8所示.

    图 8  GRU在有无周期损失时的隐藏状态均值的比较
    Fig. 8  Hidden states of GRU with and without the seasonality

    由于时间序列本身具有一定的周期性, 使得隐藏状态序列都表现出了一定的周期性. 但是, 使用了周期损失的GRU的隐藏状态明显更加平稳, 并且每个周期内的数值更加平滑; 而未使用周期损失的GRU的隐藏状态的波动性更大, 并且单个周期内的波动也更大. 这些更大的波动可以认为是捕捉到了更多的噪声. 所以, 周期损失有助于捕捉数据更本质的特征而非噪声.

    循环神经网络能够提取时间序列中的深层信息, 是非常有效的时间序列预测方法. 本文通过定义周期损失和趋势损失的合理形式, 试图在循环神经网络内对时间序列的周期和趋势进行建模, 改善模型的性能, 建立了基于周期性建模和多任务学习的时间序列预测模型. 在能源市场价格预测的任务的仿真实验表明: 本文提出的周期损失能够有效引导循环神经网络学习数据的周期性, 提升预测效果, 降低数据噪声的影响. 周期损失还有助于模型捕捉数据的本质特征. 趋势损失则能对提升趋势相关的预测任务的预测效果.

  • 图  1  运动方向判断

    Fig.  1  Motion direction judgment

    图  2  机器人环境状态

    Fig.  2  Robot environment status

    图  3  $k$= 2, $k_1$= 1机器人运动示意图

    Fig.  3  Robot motion diagram when $k$= 2, $k_1$= 1

    图  4  $k$= 2, $k_1$= 2机器人运动示意图

    Fig.  4  Robot motion diagram when $k$= 2, $k_1$= 2

    图  5  $k$= 2, $k_1$= 3机器人运动示意图

    Fig.  5  Robot motion diagram when $k$= 2, $k_1$= 3

    图  6  $k$= 2, $k_1$= 4机器人运动示意图

    Fig.  6  Robot motion diagram when $k$= 2, $k_1$= 4

    图  7  $k$= 2, $k_1$= 5机器人运动示意图

    Fig.  7  Robot motion diagram when $k$= 2, $k_1$= 5

    图  8  $k$= 2, $k_1$= 6机器人运动示意图

    Fig.  8  Robot motion diagram when $k$= 2, $k_1$= 6

    图  9  $k$= 2, $k_1$= 7机器人运动示意图

    Fig.  9  Robot motion diagram when $k$= 2, $k_1$= 7

    图  10  $k$= 2, $k_1$= 8机器人运动示意图

    Fig.  10  Robot motion diagram when $k$= 2, $k_1$= 8

    图  11  状态转移图

    Fig.  11  Robot state transfer table

    图  12  拐角较多的室内模拟环境

    Fig.  12  Indoor simulation environment with more corners

    图  14  室内中央有墙体的模拟环境

    Fig.  14  A simulated environment with a wall in the center of the room

    图  15  拐角较多环境下的机器人轨迹

    Fig.  15  Robot trajectory in a corner environment

    图  17  室内中央有墙体的机器人轨迹

    Fig.  17  Robot trajectory with wall in the center of the room

    图  18  拐角较多环境下$ k $值变化

    Fig.  18  Change in $ k $ value in indoor simulated environment with more corners

    图  20  室内中央有墙体的模拟环境下$ k $值变化

    Fig.  20  Change in $ k $ value in a simulated environment with a wall in the center of the room

    图  21  拐角较多环境下机器人运动方向判断局部图

    Fig.  21  Partial diagram of the direction of motion of the robot in a corner environment

    图  23  室内中央有墙体下机器人运动方向判断局部图

    Fig.  23  The local figure of the movement direction of the robot under the wall in the center of the room

    图  13  不规则墙体模拟

    Fig.  13  Irregular wall simulation

    图  16  不规则墙体下的机器人轨迹

    Fig.  16  Robot trajectory under irregular wall

    图  19  不规则墙体模拟下$ k $值变化

    Fig.  19  Variation of $ k $ value under irregular wall simulation

    图  22  不规则墙体下机器人运动方向判断局部图

    Fig.  22  Figure of the motion direction of the robot under the irregular wall

    图  24  差分轮式机器人

    Fig.  24  Differential wheeled robot

    图  25  简单的室内环境

    Fig.  25  Simple indoor environment

    图  26  空环境下采用算法与不采用算法对比图

    Fig.  26  Comparison diagram between using algorithm and not using algorithm in empty environment

    图  27  复杂的室内环境

    Fig.  27  Complex indoor environment

    图  28  复杂环境下的机器人轨迹

    Fig.  28  Robot trajectory in complex environments

    图  29  复杂环境下机器人的运动

    Fig.  29  Movement of the robot in complex environments

    表  1  移动机器人运动转向判断关系

    Table  1  Mobile robot motion steering judgment relationship

    $k$ $k_1$
    1 2 3 4 5 6 7 8
    1 前进 左转 $f_x$决定 右转 左转 右转 $f_x$决定 $f_x$决定
    2 前进 前进 前进 右转 前进 右转 $f_x$决定 $f_x$决定
    3 $f_x$决定 左转 $f_x$决定 右转 左转 右转 $f_x$决定 $f_x$决定
    4 前进 左转 前进 前进 左转 前进 $f_x$决定 $f_x$决定
    5 右转 右转 右转 右转 右转 右转 右转 右转
    6 左转 左转 左转 左转 左转 左转 左转 左转
    7 前进 前进 前进 前进 前进 前进 前进 前进
    8 $f_x$决定 右转 $f_x$决定 左转 右转 左转 $f_x$决定 $f_x$决定
    下载: 导出CSV

    表  2  机器人沿墙顺时针行走运动转向判断表

    Table  2  Robot walking along the wall clockwise movement steering judgment table

    $k$ $k_1$
    1 3 7 8
    1 左转 左转 左转
    2 前进 前进
    3 右转 右转 左转 左转
    4 左转 左转
    8 右转 右转 右转 右转
    下载: 导出CSV

    表  3  机器人沿墙逆时针行走运动转向判断表

    Table  3  Counterclockwise walking movement steering judgment table of robot along the wall

    $k$ $k_1$
    1 3 7 8
    1 右转 右转 右转
    2 右转 右转
    3 左转 左转 右转 右转
    4 前进 前进
    8 左转 左转 左转 左转
    下载: 导出CSV

    表  4  机器人状态转移表

    Table  4  Robot state transfer table

    $k$ $k_1$
    1 2 3 4 5 6 7 8
    1 $p_{11}$ $p_{12}$ $p_{13}$ $p_{14}$ $p_{15}$ $p_{16}$ $p_{17}$ $p_{18}$
    2 $p_{21}$ $p_{22}$ $p_{23}$ $p_{24}$ $p_{25}$ $p_{26}$ $p_{27}$ $p_{28}$
    3 $p_{31}$ $p_{32}$ $p_{33}$ $p_{34}$ $p_{35}$ $p_{36}$ $p_{37}$ $p_{38}$
    4 $p_{41}$ $p_{42}$ $p_{43}$ $p_{44}$ $p_{45}$ $p_{46}$ $p_{47}$ $p_{48}$
    5 $p_{51}$ $p_{52}$ $p_{53}$ $p_{54}$ $p_{55}$ $p_{56}$ $p_{57}$ $p_{58}$
    6 $p_{61}$ $p_{62}$ $p_{63}$ $p_{64}$ $p_{65}$ $p_{66}$ $p_{67}$ $p_{68}$
    7 $p_{71}$ $p_{72}$ $p_{73}$ $p_{74}$ $p_{75}$ $p_{76}$ $p_{77}$ $p_{78}$
    8 $p_{81}$ $p_{82}$ $p_{83}$ $p_{84}$ $p_{85}$ $p_{86}$ $p_{87}$ $p_{88}$
    下载: 导出CSV
  • [1] 王栋耀, 马旭东, 戴先中. 基于声纳的移动机器人沿墙导航控制. 机器人, 2004, 26(4): 346−350 doi: 10.3321/j.issn:1002-0446.2004.04.012

    Wang Dong-Yao, Ma Xu-Dong, Dai Xian-Zhong. Wall-following navigation control for a sonar-based mobile robot. Robot, 2004, 26(4): 346−350 doi: 10.3321/j.issn:1002-0446.2004.04.012
    [2] 朱毅, 张涛, 宋靖雁. 未知环境下势场法路径规划的局部极小问题研究. 自动化学报, 2010, 36(8): 88−96

    Zhu Yi, Zhang Tao, Song Jing-Yan. Study on the local minima problem of path planning using potential field method in unknown environments. Acta Automatica Sinica, 2010, 36(8): 88−96
    [3] Nasrinahar A, Chuah J H. Intelligent motion planning of a mobile robot with dynamic obstacle avoidance. Journal on Vehicle Routing Algorithms, 2018, 1: 89−104
    [4] Van Turennout P, Honderd G, Van Schelven L J. Wall-following control of a mobile robot. In: Proceedings of the 1992 IEEE International Conference on Robotics. IEEE, 1992. 280–285
    [5] Y. Ando, S. Yuta. Following a wall by an autonomous mobile robot with a sonar-ring. In: Proceedings of the 1995 IEEE International Conference on Robotics and Automation. IEEE, 1995. 2599−2606
    [6] Lee C L, Lin C J, Lin H Y. Smart robot wall-following control using a sonar behavior-based fuzzy controller in unknown environments. Smart Science, 2017, 5(3): 1−7
    [7] Wu G D, Zhu Z W, Chien C W. Sparse-sensing-based wall-following control design for a mobile-robot. In: Proceedings of the 2016 IEEE International Conference on Control and Robotics Engineering (ICCRE). IEEE, 2016. 1–5
    [8] 周慧, 李剑汶, 江昊威, 童峰. 基于单超声传感器的移动机器人沿墙导航. 声学技术, 2014, 33(2): 243−246

    Zhou Hui, Li Jian-Wen, Jiang Hao-Wei, Tong Feng. Mobile robot wall-following navigation based on a single ultrasonic sensor. Technical Acoustics, 2014, 33(2): 243−246
    [9] 李霞, 孙秋凤. 沿墙走算法在竞赛灭火机器人中的应用. 实验室研究与探索, 2018, 37(5): 38−41

    Li Xia, Sun Qiu-Feng. Application and exploration of the algorithm of walking along the wall in the fire extinguishing robot. Research and Exploration in Laboratory, 2018, 37(5): 38−41
    [10] Wei X, Dong E B, Liu C S, Han G M, Yang J. A wall-following algorithm based on dynamic virtual walls for mobile robots navigation. In: Proceedings of the 2018 IEEE International Conference on Real-time Computing. IEEE, 2018. 46–51
    [11] Zuo S X, Ou Y S, Zhu X R. A path planning framework for indoor low-cost mobile robots. In: Proceedings of the 2017 IEEE International Conference on Information. IEEE, 2017. 18–23
    [12] Juang C F, Chen Y H, Jhan Y H. Wall-following control of a hexapod robot using a data-driven fuzzy controller learned through differential evolution. IEEE Transactions on Industrial Electronics, 2015, 62(1): 611−619 doi: 10.1109/TIE.2014.2319213
    [13] Hsu C H, Juang C F. Evolutionary robot wall-following control using type-2 fuzzy controller with species-DE-activated continuous ACO. IEEE Transactions on Fuzzy Systems, 2013, 21(1): 100−112 doi: 10.1109/TFUZZ.2012.2202665
    [14] 徐明亮, 柴志雷, 须文波. 移动机器人模糊Q-学习沿墙导航. 电机与控制学报, 2010, 14(6): 83−97 doi: 10.3969/j.issn.1007-449X.2010.06.015

    Xu Ming-Liang, Chai Zhi-Lei, Xu Wen-Bo. Wall-following control of a mobile robot with fuzzy Q-learning. Electric Machines And Control, 2010, 14(6): 83−97 doi: 10.3969/j.issn.1007-449X.2010.06.015
    [15] Wardana A A, Widyotriatmo A, Turnip A. Wall following control of a mobile robot without orientation sensor. In: Proceedings of the 3rd International Conference on Instrumentation Control and Automation (ICA). IEEE, 2013. 212–215
    [16] Silva Ortigoza R, Garcia Sanchez J R, Hernandez Guzman V M, Marquez Sanchez C, Marcelino Aranda M. Trajectory tracking control for a differential drive wheeled mobile robot considering the dynamics related to the actuators and power stage. IEEE Latin America Transactions, 2016, 14(2): 657−664 doi: 10.1109/TLA.2016.7437207
  • 期刊类型引用(5)

    1. 余乘风,许仁波,蒋林,周和文,黄惠保. 结合霍夫变换找墙体直线的沿墙导航算法. 农业装备与车辆工程. 2024(03): 101-106 . 百度学术
    2. 蒋林,张燕飞,马先重,朱建阳,雷斌. 二次区域划分的全覆盖路径规划. 哈尔滨工程大学学报. 2022(10): 1483-1490 . 百度学术
    3. 蒋林,方东君,雷斌,李维刚. 单目视觉移动机器人导航算法研究现状及趋势. 计算机工程与应用. 2021(05): 1-9 . 百度学术
    4. 聂文康,蒋林,雷斌,汤勃. 基于深度学习的语义栅格地图构建方法. 武汉科技大学学报. 2021(06): 468-477 . 百度学术
    5. 宋国栋,魏立科,马宏伟,付霁野,刘希梁. 六轴式小臂机器人运动学理论研究及其在掘锚作业中的应用. 煤炭学报. 2021(S2): 1114-1123 . 百度学术

    其他类型引用(3)

  • 加载中
图(29) / 表(4)
计量
  • 文章访问数:  1436
  • HTML全文浏览量:  207
  • PDF下载量:  203
  • 被引次数: 8
出版历程
  • 收稿日期:  2019-05-13
  • 录用日期:  2019-11-01
  • 网络出版日期:  2020-07-10
  • 刊出日期:  2020-07-10

目录

/

返回文章
返回