(文章复现)低温环境下考虑电池寿命的微电网优化调度

2024-06-09 18:52

本文主要是介绍(文章复现)低温环境下考虑电池寿命的微电网优化调度,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

参考文献:

[1]丁佳昀,胡秦然,吴在军,等.低温环境下考虑电池寿命的微电网优化调度[J].中国电机工程学报,2024,44(10):3815-3824.

1.摘要

        储能系统作为微电网重要组成部分,为微电网协调能量供需提供了解决方案。然而,在低温环境下,储能系统中电池寿命的快速衰减严重影响了系统的经济性和安全性。因此,该文提出一种低温环境下考虑电池寿命的微电网优化调度混合整数模型,来仿真微电网优化调度过程和高效计算储能充放电计划。首先,基于阿伦尼乌斯方程,分析低温环境中电池寿命的受影响机理;接着,采用考虑充放电次数和放电深度的电池寿命方程,构建电池全温度范围的老化模型;最后,构建考虑电池自发热和全温度范围的寿命衰减模型,并通过可行域凸极点组合方法对模型进行转化和简化,来避免模型中非线性项目导致无法获得全局最优解的困境。算例验证和对比分析表明,该文提出的模型能在低温环境中降低系统运行成本,减缓电池衰减速率,延长近一倍的电池寿命。

2.原理介绍

2.1低温下考虑电池寿命的电池成本模型

        在低温环境中,一方面电池的充电效率较低,大量电能消耗于电池的副反应中;另一方面电池寿命损耗较大,加速了电池的更换周期。类似于发电单元,可以将电池的运行成本分为日燃料成本和日运维成本:

        电池的日燃料成本与电池的充电效率和实时电价有关,可考虑为电池充电时损耗的电能成本,即:

        电池的日运维成本主要由电池的损耗引起,与电池的寿命有直接关联,可通过贴现率实现二者的转化:

        由于在放电深度和温度一定时,运维成本和循环次数近似呈线性关系,因此对运维成本作如下分段线性化处理:

2.2目标函数

        通常微电网调度以系统总日运行成本最低作为优化目标,即:

2.3 约束条件

2.4 线性化处理

        由于考虑到电池自热的影响,电池表面温度实则为与 Pbat 相关的函数,式(24)为非线性约束,为提高求解效率和准确性,可利用可行域凸极点线性组合的方法将非凸问题近似转换为凸问题,以便获得全局最优解。

        电池充电和放电时的可行区域均可用一个凸区域表示,分别如图 3、4 所示。

        可行区域的形状和大小由每时刻电网侧的输入输出功率与电池侧的充放电功率及电池充放电效率的函数投影决定,可行域内每个运行点对应的电网侧输入输出功率均可表示为该点电池侧的充放电功率和充放电效率的函数。由于凸可行域内任一点的横纵坐标都可由该区域凸极点的横纵坐标线性组合表示,且线性系数和为 1,可近似将可行域内任一点的 Pin或 Pout也用凸极点的 Pin或 Pout线性组合表示。

优化目标:

        式(6)、(7)、(9)、(10)、(14)

约束条件:

        式(11)—(13)、(15)—(23) 式(25)—(27)、(30)—(39)

        使用MATLAB R2021b中的yalmip工具箱调用gurobi 9.1.2 求解器求解。

3.编程思路

3.1参数和变量定义

4.代码运行结果

5.matlab代码

%% 清除内存空间
clc
clear
close all
warning off%% 系统参数
data = xlsread('data.xlsx');                % 相关数据
cbuy = data(:,2);                           % 购电电价
csell = data(:,3);                          % 售电电价
cwind = 0.52;                               % 风电运行成本
cpv = 0.72;                                 % 光伏运行成本
Ta = data(:,4:6);                           % 环境温度
Pwind = data(:,7:9);                        % 风电出力
Ppv = data(:,10:12);                        % 光伏出力
Pload = data(:,13:15);                      % 负荷需求
Pbat_max = 40;                              % 电池充放电功率上限
Smax = 300;                                 % 储能额定容量
SOC_min = 0.3;                              % 荷电状态下限
SOC_max = 0.95;                             % 荷电状态上限
SOC0 = 0.4;                                 % 初始荷电状态
[ncha,ndis] = cal_efficiency(Ta);           % 充放电效率
Pnet_max = 160;                             % 交互功率上限
r = 0.07;                                   % 贴现率
C1kwh = 0.02;                               % 电池的度电运维成本
NT = 24;                                    % 时段数
NS = 3;                                     % 典型场景数
D = 4;                                      % 分段数
dt = 1;                                     % 时段间隔
a_Ta = 0.05;                                % 自发热比例因子
Zth = 0.1;                                  % 电池热阻
dDOD1_min = [0.05,0.2,0.4,0.6];             % 第d段放电深度的下限
dDOD1_max = [0.2,0.4,0.6,0.7];              % 第d段放电深度的上限%% 优化变量
gd = binvar(NT + 1,NS,D);                   % 0-1变量,放电深度处于第d分段时为1,否则为0
Pbat = sdpvar(NT,NS);                       % 储能输出功率
Pcha = sdpvar(NT,NS);                       % 储能充电功率
Pdis = sdpvar(NT,NS);                       % 储能放电功率
Qcha = binvar(NT,NS);                       % 储能充电状态变量
Qdis = binvar(NT,NS);                       % 储能放电状态变量
Qstadic = binvar(NT,NS);                    % 储能静置状态变量
Ssoc = sdpvar(NT + 1,NS);                   % 储能SOC
Sbat = binvar(NT,NS);                       % 储能荷电状态改变标志
Pbuy = sdpvar(NT,NS);                       % 微电网购电功率
Psell = sdpvar(NT,NS);                      % 微电网售电功率
Pnet = sdpvar(NT,NS);                       % 交互功率
Qnet = binvar(NT,NS);                       % 购售电状态变量
dDOD = sdpvar(NT + 1,NS);                   % 储能放电深度
dDOD1 = sdpvar(NT + 1,NS,D);                % 储能放电深度分段
Tb = sdpvar(NT,NS);                         % 电池温度
n_cycle = sdpvar(1,NS);                     % 充放电循环数
U_Sbat = binvar(NT,NS,5);%% 约束条件
Constraints = [];%% 目标函数
C_COE = cbuy'*((1./ncha - 1).*Pcha);
LT = -0.0623*mean(Tb) + 2.56;
ad = [0.01,0.115,0.23,0.45];
kd = [1.23,3.77,6.28,15.43];
C_OM = sdpvar(NT,NS);
Ugd = sdpvar(NT,NS,D);
for t = 1:NTfor s = 1:NSC_OM(t,s) = 0;for d = 1:DConstraints = [Constraints, Ugd(t,s,d) >= 0 , Ugd(t,s,d) <= 10000*gd(t,s,d) , Ugd(t,s,d) <= n_cycle(s)*ad(d) + kd(d) , Ugd(t,s,d) >= n_cycle(s)*ad(d) + kd(d) - 10000*(1 - gd(t,s,d))];C_OM(t,s) = C_OM(t,s) + Ugd(t,s,d)*LT(s);endend
endC_buy = cbuy'*Pbuy;
C_sell = csell'*Psell;
C_wind = cwind*sum(Pwind);
C_pv = cwind*sum(Ppv);
objective = C_COE + max(C_OM) + C_buy + C_sell + C_wind + C_pv;
Ps = [0.5;0.25;0.25];%% 设求解器
% gurobi求解器
ops = sdpsettings('verbose', 3, 'solver', 'gurobi','showprogress',1);
ops.gurobi.TimeLimit = 600;                 % 运行时间限制为10min
ops.gurobi.MIPGap = 0.01;                   % 收敛精度限制为0.01% cplex求解器
% ops = sdpsettings('verbose', 3, 'solver', 'cplex','showprogress',1,'debug',1);
% ops.cplex.timelimit = 600;                  % 运行时间限制为10min
% ops.cplex.mip.tolerances.mipgap = 0.01;     % 收敛精度限制为0.01% mosek求解器
% ops=sdpsettings('verbose', 3, 'solver', 'MOSEK','cachesolvers',1);
% ops.mosek.MSK_DPAR_OPTIMIZER_MAX_TIME=600;% 运行时间限制为10min
% ops.mosek.MSK_DPAR_MIO_TOL_REL_GAP=0.01;  % 收敛精度限制为0.01
sol = optimize(Constraints, objective*Ps, ops);%% 分析错误标志
if sol.problem == 0disp('求解成功');
elsedisp('运行出错');yalmiperror(sol.problem)
end%% 运行结果
show_result;

        以上为部分代码,完整代码获取方式如下:

(文章复现)低温环境下考虑电池寿命的微电网优化调度matlab代码资源-CSDN文库

这篇关于(文章复现)低温环境下考虑电池寿命的微电网优化调度的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1046016

相关文章

Python中使用uv创建环境及原理举例详解

《Python中使用uv创建环境及原理举例详解》uv是Astral团队开发的高性能Python工具,整合包管理、虚拟环境、Python版本控制等功能,:本文主要介绍Python中使用uv创建环境及... 目录一、uv工具简介核心特点:二、安装uv1. 通过pip安装2. 通过脚本安装验证安装:配置镜像源(可

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

pytest+allure环境搭建+自动化实践过程

《pytest+allure环境搭建+自动化实践过程》:本文主要介绍pytest+allure环境搭建+自动化实践过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录一、pytest下载安装1.1、安装pytest1.2、检测是否安装成功二、allure下载安装2.

VS配置好Qt环境之后但无法打开ui界面的问题解决

《VS配置好Qt环境之后但无法打开ui界面的问题解决》本文主要介绍了VS配置好Qt环境之后但无法打开ui界面的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 目UKeLvb录找到Qt安装目录中designer.UKeLvBexe的路径找到vs中的解决方案资源

SpringBoot实现多环境配置文件切换

《SpringBoot实现多环境配置文件切换》这篇文章主要为大家详细介绍了如何使用SpringBoot实现多环境配置文件切换功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 示例代码结构2. pom文件3. application文件4. application-dev文

Web技术与Nginx网站环境部署教程

《Web技术与Nginx网站环境部署教程》:本文主要介绍Web技术与Nginx网站环境部署教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、Web基础1.域名系统DNS2.Hosts文件3.DNS4.域名注册二.网页与html1.网页概述2.HTML概述3.

Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题

《Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题》:本文主要介绍Ubuntu上手动安装Go环境并解决“可执行文件格式错误”问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未... 目录一、前言二、系统架构检测三、卸载旧版 Go四、下载并安装正确版本五、配置环境变量六、验证安装七、常见

SpringBoot中HTTP连接池的配置与优化

《SpringBoot中HTTP连接池的配置与优化》这篇文章主要为大家详细介绍了SpringBoot中HTTP连接池的配置与优化的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录一、HTTP连接池的核心价值二、Spring Boot集成方案方案1:Apache HttpCl

PyTorch高级特性与性能优化方式

《PyTorch高级特性与性能优化方式》:本文主要介绍PyTorch高级特性与性能优化方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、自动化机制1.自动微分机制2.动态计算图二、性能优化1.内存管理2.GPU加速3.多GPU训练三、分布式训练1.分布式数据

MySQL中like模糊查询的优化方案

《MySQL中like模糊查询的优化方案》在MySQL中,like模糊查询是一种常用的查询方式,但在某些情况下可能会导致性能问题,本文将介绍八种优化MySQL中like模糊查询的方法,需要的朋友可以参... 目录1. 避免以通配符开头的查询2. 使用全文索引(Full-text Index)3. 使用前缀索