购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 动态规划能量管理问题求解

3.3.1 动态规划逆向求解步骤

在动态规划算法实现时,需要遍历整个工况时间,同时对状态量及控制量进行循环计算,然而MATLAB语言在执行循环语句时计算速度较慢。为了更好地利用MATLAB语言矩阵运算速度快的优点,运用M文件编写基于矩阵运算的动态规划算法,可有效减少对控制量的循环,通过矩阵运算直接获得不同控制量组合下的阶段指标函数矩阵,这样可以有效提高其计算速度,提升计算效率。基于矩阵运算的动态规划算法编写有别于采用循环语句的编写,矩阵运算的控制量的离散范围更广泛,同时涵盖了可行域与不可行域,在寻找最小值时需要通过惩罚项排除这些不可行域里的点。而循环的编写方式需要在每一个状态下,提前计算控制量可行域,在可行域里寻找最优的控制量。

如图 3.3 所示,以第 k 阶段逆向计算为例,逆向求解的步骤具体如下。

图3.3 $1 阶段逆向求解空间搜索示意图

①在第 k (1≤ k N -1)阶段,需要计算每个离散状态点所对应的最优目标函数 以及相应的最优控制变量 u * x k ),其计算公式如式(3.12)所示。

式中, x k +1)为 k 时刻状态 x k 在控制 u x k )的作用下状态转移到 k +1 时刻的状态量, x k +1)的状态转移如图 3.4 所示。 x k +1)为 T 行 6 列的矩阵,与控制量矩阵一致。即使状态量的离散单位ΔSOC取得再小, x k +1)的计算值不可能刚好落到其离散点上,因此通过步骤②来计算。

图3.4 $1 阶段逆向求解状态转移示意图

②由于第 k +1 阶段各状态离散点的最优目标函数已经在上一阶段计算中得到,所以在第 k 阶段状态下的最优目标函数可根据 x k +1)插值得到。如图 3.5 所示,某一状态离散点 在控制量 作用下, x k +1)没有恰好落到状态离散点上,而是在 之间, k +1 时刻保存的最优目标函数分别为 。运用函数插值获得 x k +1)对应的最优目标函数

图3.5 $1 阶段逆向目标函数插值示意图

③根据上述公式(3.12),将 k 阶段的阶段目标函数 )与插值获得的 k +1 阶段的最优目标函数相加,其中最小的则为当前阶段状态 的最优目标函数。同理,计算得到当前阶段所有状态离散点对应的最优目标函数 ,保存当前阶段各状态离散点的最优控制量 u * x k )。

3.3.2 动态规划正向寻优步骤

当各个阶段计算完毕以后,逆向求解过程结束。各阶段不同状态离散点到 N 阶段的最优目标函数和最优控制序列均已保存,为正向计算准备。正向计算的步骤具体如下。

①从 1 阶段开始,已知初始状态SOC(0),插值获得该状态下逆向求解储存的最优控制量,根据式(3.13)计算下一个状态SOC(1)。

②在第 k (1≤ k N -1)阶段,继续根据当前状态量 x k )插值获得对应的最优控制量 ,状态转移至了 x k +1),如图 3.6 所示, x k +1)正好处于状态离散点 之间。与逆向求解时相同,插值获得 x k +1)的最优控制量。值得注意的是变速挡位为 6 个固定值,所以插值采用邻近法。

③重复上述步骤直到状态转移至 N 阶段,即可求得整个循环工况的状态和最优控制,正向计算结束,即可获得最优的状态轨迹和最优的控制决策序列,该阶段最优决策问题完成求解。

图3.6 $1 阶段正向计算示意图

综上所述,基于矩阵运算的动态规划算法求解流程如图 3.7 所示。

图3.7 基于矩阵运算的动态规划求解过程示意图 HO0pki9lEQConWpKwnC/aUb6Uue2EQ0wejiUvDIVPsbtag7Gn0SUJv5n7T+eyUWt

点击中间区域
呼出菜单
上一章
目录
下一章
×