目录
插电式混合动力汽车(Plug-in Hybrid Electric Vehicle, PHEV)的能量管理是一个复杂的优化问题,其目标在于最小化整个行驶周期内的能耗成本或排放,同时确保车辆动力性能满足需求。其中,凸优化作为一种有效的数学工具,能够处理这类具有非线性约束和目标函数的问题。交替方向乘子法(Alternating Direction Method of Multipliers, ADMM)是一种分布式优化算法,非常适合解决大规模凸优化问题,尤其是那些可以分解成多个子问题的情形。
1. PHEV能量管理问题建模
PHEV能量管理问题通常涉及多个决策变量,包括电池的充放电策略、发动机的启停和功率分配、以及电动机和发动机的功率分配等。设总行驶时间为T,时间离散化为N个时间步,每个时间步为Δt。关键决策变量包括:
优化目标通常是使总能耗最小,可以表示为:
其中,ce和cb分别是发动机和电池的能量成本系数。
约束条件包括但不限于:
PHEV的工作模式通常包括以下几种:
-
纯电动模式(EV Mode):在电池电量充足的情况下,车辆仅依靠电动机驱动,实现零排放行驶,适用于短途城市出行。
-
混合动力模式(Hybrid Mode):当电池电量降低到一定水平,或者在需要更高动力输出时,内燃机启动,既可以驱动车辆,又可以通过发电机为电池充电,保证电动机的持续工作,实现油电混合驱动。
-
充电模式(Charge Mode):在车辆行驶过程中,内燃机除了驱动车辆外,还可以为电池充电,增加车辆的纯电动行驶能力。
-
能量回收模式(Regenerative Braking):在制动或减速过程中,车辆的动能被转换为电能,储存在电池中,以此来提高能源利用率。
2. ADMM求解框架
ADMM将原问题分解为多个子问题,通过交替优化这些子问题并更新拉格朗日乘子来求解全局最优解。对于PHEV能量管理问题,我们首先构造拉格朗日函数:
ADMM算法的核心步骤如下:
虽然ADMM提供了一种有效解耦优化问题的框架,但在实际应用中仍面临挑战:
- 收敛速度:ADMM的收敛速度受惩罚参数ρ选择的影响较大,需仔细调整以平衡收敛速度与解的质量。
- 约束处理:如电池SOC约束需转化为合适的优化形式,确保在每次迭代中得到满足。
- 实时性要求:PHEV能量管理要求算法具有良好的实时性能,因此ADMM的迭代次数和计算复杂度需要严格控制。
3. matlab核心程序
function [ E, u, time, iterations ] = f_ADMM( coeffs,Pdrv,E0,Pbmin,Pbmax,xmin,xmax,P,C,R,V,misc )
N = length(Pbmin);
% 定义材料常数rho1、rho2
rho1 = 2.34E-4;
rho2 = 1E-8;
% 从输入参数coeffs中提取各项系数
alpha2 = coeffs(:,1);
alpha1 = coeffs(:,2);
alpha0 = coeffs(:,3);
beta2 = coeffs(:,4);
beta1 = coeffs(:,5);
beta0 = coeffs(:,6);
%% 可行性检查
%% 初始化(这些操作可以离线完成,不计入运行时间)
u = zeros(N,1);% 初始化u、zeta、lambda1、lambda2为全零向量
u(C) = Pbmin(C);
zeta = zeros(N,1);
lambda1 = zeros(N,1);
lambda2 = zeros(N,1);
% 初始化单位矩阵I、下三角单位矩阵Psi、矩阵M、L、Diff、Difft
I = eye(N); % 单位矩阵
Psi = tril(ones(N,N)); % 下三角单位矩阵
M = (rho1/rho2 * inv(Psi) * (inv(Psi)') + I); % 计算矩阵M
L = chol(M)'; % 计算L为M的Cholesky分解的转置
L = sparse(L); % 将L转换为稀疏矩阵
Diff = sparse(inv(Psi)); % 计算稀疏矩阵Diff
Difft = sparse(inv(Psi)'); % 计算稀疏矩阵Difft
%ADMM算法主循环
tic
iterations = 0;
flag = 1;
while flag
% 更新u值(使用BacktrackingNewtonVector函数)
u(P) = f_BacktrackingNewtonVector(alpha0(P), alpha1(P), alpha2(P), beta0(P), beta1(P), beta2(P), V, R, Pdrv(P), rho1, zeta(P), lambda1(P), Pbmin(P), Pbmax(P));
% 更新x值(简单操作)
x = E0 - cumsum(zeta) - lambda2;
x(x > xmax) = xmax; % 超出上限则设为上限值
x(x < xmin) = xmin; % 超出下限则设为下限值
% 保存当前zeta值供后续计算残差
zetahold = zeta;
% 计算并更新zeta值
vec = rho1 * (u + lambda1) - rho2 * cumsum(x - E0 + lambda2, 'reverse');
vec = vec / rho2;
vec = Difft * vec;
vec = Diff * vec;
vec = L \ vec;
zeta = L' \ vec;
% 更新残差r和拉格朗日乘子s
r = [u - zeta; x + cumsum(zeta) - E0];
s = [rho1 * (zetahold - zeta); rho2*cumsum(zetahold - zeta)];
lambda1 = lambda1 + (u - zeta);
lambda2 = lambda2 + (x + cumsum(zeta) - E0);
iterations = iterations + 1;% 增加迭代次数
% 若迭代次数超过最大迭代次数
if iterations > misc.maxIterations
flag = 0;
end
if max(norm(r), norm(s)) < misc.epsilon% 若残差和拉格朗日乘子的范数均小于给定阈值
flag = 0;
end
end
time = toc;
E = E0 - cumsum(u);
return
up4066
4.仿真结果
综上所述,基于ADMM的PHEV能量管理策略通过分解优化问题,为复杂多目标优化提供了一条可行路径。然而,实现高效、准确的实时控制策略仍需综合考虑算法设计、系统动态特性和实际运行环境的复杂性。