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

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

相关文章

Vue3 的 shallowRef 和 shallowReactive:优化性能

大家对 Vue3 的 ref 和 reactive 都很熟悉,那么对 shallowRef 和 shallowReactive 是否了解呢? 在编程和数据结构中,“shallow”(浅层)通常指对数据结构的最外层进行操作,而不递归地处理其内部或嵌套的数据。这种处理方式关注的是数据结构的第一层属性或元素,而忽略更深层次的嵌套内容。 1. 浅层与深层的对比 1.1 浅层(Shallow) 定义

HDFS—存储优化(纠删码)

纠删码原理 HDFS 默认情况下,一个文件有3个副本,这样提高了数据的可靠性,但也带来了2倍的冗余开销。 Hadoop3.x 引入了纠删码,采用计算的方式,可以节省约50%左右的存储空间。 此种方式节约了空间,但是会增加 cpu 的计算。 纠删码策略是给具体一个路径设置。所有往此路径下存储的文件,都会执行此策略。 默认只开启对 RS-6-3-1024k

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

阿里开源语音识别SenseVoiceWindows环境部署

SenseVoice介绍 SenseVoice 专注于高精度多语言语音识别、情感辨识和音频事件检测多语言识别: 采用超过 40 万小时数据训练,支持超过 50 种语言,识别效果上优于 Whisper 模型。富文本识别:具备优秀的情感识别,能够在测试数据上达到和超过目前最佳情感识别模型的效果。支持声音事件检测能力,支持音乐、掌声、笑声、哭声、咳嗽、喷嚏等多种常见人机交互事件进行检测。高效推

MySQL高性能优化规范

前言:      笔者最近上班途中突然想丰富下自己的数据库优化技能。于是在查阅了多篇文章后,总结出了这篇! 数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份

搭建Kafka+zookeeper集群调度

前言 硬件环境 172.18.0.5        kafkazk1        Kafka+zookeeper                Kafka Broker集群 172.18.0.6        kafkazk2        Kafka+zookeeper                Kafka Broker集群 172.18.0.7        kafkazk3

安装nodejs环境

本文介绍了如何通过nvm(NodeVersionManager)安装和管理Node.js及npm的不同版本,包括下载安装脚本、检查版本并安装特定版本的方法。 1、安装nvm curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash 2、查看nvm版本 nvm --version 3、安装

【IPV6从入门到起飞】5-1 IPV6+Home Assistant(搭建基本环境)

【IPV6从入门到起飞】5-1 IPV6+Home Assistant #搭建基本环境 1 背景2 docker下载 hass3 创建容器4 浏览器访问 hass5 手机APP远程访问hass6 更多玩法 1 背景 既然电脑可以IPV6入站,手机流量可以访问IPV6网络的服务,为什么不在电脑搭建Home Assistant(hass),来控制你的设备呢?@智能家居 @万物互联

高并发环境中保持幂等性

在高并发环境中保持幂等性是一项重要的挑战。幂等性指的是无论操作执行多少次,其效果都是相同的。确保操作的幂等性可以避免重复执行带来的副作用。以下是一些保持幂等性的常用方法: 唯一标识符: 请求唯一标识:在每次请求中引入唯一标识符(如 UUID 或者生成的唯一 ID),在处理请求时,系统可以检查这个标识符是否已经处理过,如果是,则忽略重复请求。幂等键(Idempotency Key):客户端在每次

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者