电动汽车充放电的优化调度(Matlab代码实现)

news2024/11/29 20:32:15

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 文献来源

🌈4 Matlab代码、数据、文章讲解


💥1 概述

摘要:由于用电量的增加,车辆电气化将对电网产生重大影响。对电动汽车(EV)的充电和放电进行智能调度非常重要。然而,调度问题有两大挑战。首先,寻找能够最小化总成本的全局最优调度方案是一个挑战。其次,很难找到一个能够处理大量人口和电动汽车随机到达的分布式调度方案。本文提出了电动汽车充放电的全局最优调度方案和局部最优调度方案。我们首先提出了一个全局调度优化问题,其中对充电功率进行优化,以最小化白天进行充电和放电的所有电动汽车的总成本。全局最优解决方案提供了全局最小的总成本。然而,全局最优调度方案是不切实际的,因为它需要有关未来基本负载和到达时间的信息,以及将在一天的未来时间到达的电动汽车的充电周期。为了开发一个实用的调度方案,我们然后制定了一个局部调度优化问题,该问题旨在最小化本地组中当前正在进行的EV组中的EV的总成本。局部最优调度方案不仅可扩展到大型电动汽车群体,而且对动态电动汽车到达具有弹性。通过仿真,我们证明了与全局最优调度方案相比,局部最优调度方案可以获得接近的性能。

在全局最优调度方案中,由于我们假设我们具有关于一天内的电动汽车和基本负载的信息的全局知识,因此我们可以通过仅解决一次全局调度优化问题(5)来找到每个间隔的最优充电功率。在局部最优调度方案中,我们不知道未来负载和未来EV的信息。我们提出了一种局部最优调度方案,通过使用滑动窗口机制来找到本地电动汽车在下一个间隔内的最优充电功率

在局部最优调度方案中,我们基于组进行调度优化。一组EV包括位于一个位置或多个附近位置的EV。例如,在停车场进行充电和放电的电动汽车可以被分类为一组,而住宅车库中的电动汽车可被分类为另一组。每个组都有一个本地控制器(LC)。局部最优调度方案中的通信和控制如图2所示。本地控制器与位于公用事业公司的中央控制器和本地站点的充电站建立通信连接。本地控制器从中央控制器接收当天的预测负荷。本地控制器与每个充电站实时通信以收集EV信息,基于该信息执行调度优化,然后指示每个本地EV以最佳充电功率对电池进行充电或放电。

安装CVX包:

先点击这里:风电随机性动态经济调度模型

然后:也是代码前的准备

本文是一种最优调度算法,以最大限度地降低电动汽车充放电的总成本。

📚2 运行结果




 

 

 

模拟大规模电动车充电行为(Matlab实现)

电动汽车对系统运行的影响(Matlab实现)

基于蒙特卡洛法的规模化电动汽车充电负荷预测(Python&Matlab实现)

基于电动汽车的带时间窗的路径优化(Python&Matlab代码实现)

(Matlab实现)基于蒙特卡诺和拉格朗日乘子法的电动车调度【有序、无序充放电】

部分代码: 

%===简单乘法计算=====
% k_con=alfa/(omega^theta*(theta+1));

%=====充电间隔时间======
tau=1; % 小时内

%=====充电间隔数========
num_slot=length(L_b_mic);

%====(2)基本价格=======
price_basic=zeros(num_slot,1); % 基于基本负荷的价格
for i=1:num_slot
    price_basic(i)=k_0+k_1* L_b_mic(i);
end
fprintf('价格,最低价格=%g,最高价格=%g.\n',min(price_basic), max(price_basic));


%% 电动汽车EV容量
Cap_battery_org=16; % KWh
gamma=0.9; % 充电完成时电池的百分比
Cap_battery=gamma*Cap_battery_org;

%% ==最大充电率===
P_max=5; % KW

%% 电动汽车数量
num_EV=200;

% 仅给电池充电的电动汽车的百分比
P_Chg=0;

% CHG EVs数量
num_CHG_EV=round(P_Chg*num_EV);  % CHG EV 将位于 EV 信息矩阵的前面部分。
% V2G EVs数量
num_V2G_EV=num_EV-num_CHG_EV;

%% 电动汽车充电模式
% 30% 的电动汽车在间隔 1 之前连接到充电站,其余的均匀分布

%EV矩阵:1) 到达时间,2) 出发时间,3) 初始能量,4) 充电周期,5) 最小充电时间%

% EV_info=zeros(num_EV,3);
%===间隔1前接入站的EVS百分比====
% Per_EV=0.1;
%=====其他车辆到达时间均匀分布在[  1,20 ]之间======
% for i=1:num_EV
%     temp_00=rand;
%     if temp_00<=Per_EV
%         T_arrival(i,1)=1;
%     else
%         T_arrival(i,1)=round(1 + (20-1).*rand);
%     end
% end
%
%=====充电时间均匀分布在 [4, 12] 小时之间======
% T_charging= round(4 + (12-4).*rand(num_EV,1));
% T_charging=-1*sort(-1*T_charging);
%
% % the departure time
% for i=1:num_EV
%     T_departure(i,1)=min(24, T_arrival(i,1)+T_charging(i,1));
% end
%====初始电量均匀分布在电池容量的[0 0.8]之间======
% Ini_percentage=0+ (0.8-0).*rand(num_EV,1);
% % fill the EV_info
% EV_info(:,1)=T_arrival;
% EV_info(:,2)=T_departure;
% EV_info(:,3)=Cap_battery_org*Ini_percentage;
%
% for i=1:num_EV
%     EV_info(i,4)=EV_info(i,2)-EV_info(i,1)+1; % 充电周期
%     EV_info(i,5)=EV_info(i,3)/P_max; % 最小充电时间
%     if EV_info(i,4) < EV_info(i,5)
%         fprintf('EV %g 充电时间不合理.\n',i);
%     end
% end
%
% % save and load EV_info
% save EV_info.txt EV_info -ascii;

load EV_info.txt;
EV_info=EV_info(1:num_EV,:);

%% 电动汽车与充电间隔的关系
F=zeros(num_EV, num_slot);
G=ones(num_EV, num_slot);
for i=1:num_EV
    for j=EV_info(i,1):EV_info(i,2)
        F(i,j)=1;
        G(i,j)=0;
    end
end
F1=reshape(F',1,[]);
% F=ones(num_EV, num_slot);

%% 绘制基本负荷
xx_1=1:num_slot;
figure;
yy_1(:,1)=L_b_mic;
yy_1(:,2)=P_L_b_mic;
plot(xx_1,yy_1);
ylabel('负荷[KW]');
xlabel('小时数');
legend('实际负荷量','预测负荷量');

%% 使用CVX工具的V2G全局最优方案

%(1)等式约束: Ax=b
% (2)优化变量x=[z1, z2, ..., z_24, x11, x12, ...., x_100,24]'
num_OptVar=1*num_slot+num_slot*num_EV;
b_a=L_b_mic; %第一个等式约束的矩阵
A1_a=zeros(num_slot, num_OptVar-1*num_slot);
A1=[eye(num_slot) A1_a];

A2_a=zeros(num_slot, num_OptVar-1*num_slot);
s_temp=0;
for i=1:num_slot
    for j=1:num_EV
        A2_a(i, (j-1)*num_slot+i)=F(j,i);
        % fprintf('Assign F(%g,%g)=%g, to A2_a(%g, %g).\n',j,i,F(j,i),i,(j-1)*num_slot+1);
        s_temp=s_temp+F(j,i);
    end
end
A2_b=zeros(num_slot, num_slot);
A2=[A2_b A2_a];

A_a=A1-A2;  % 第一个等式约束的矩阵
clear A1 A2 A1_a A2_a A2_b;

%======第一个等式约束的矩阵=====
B_1=zeros(num_EV, num_OptVar-1*num_slot);
for i=1:num_EV
    B_1(i,(i-1)*num_slot+1:(i-1)*num_slot+num_slot)=F(i,:);
end
temp_1=zeros(num_EV, num_slot);
B1=[temp_1 B_1];    % 第二等式约束的矩阵
b_b=(Cap_battery/tau)*ones(num_EV,1)-EV_info(:,3);% 第二等式约束的矩阵
clear  B_1  temp_1;

%合并等式矩阵
% Eq_left=[A_a' B1']';
% Eq_right=[b_a' b_b']';


%% ======等式约束=====
Eq_L=A_a;
Eq_R=b_a;
clear  A_a  b_a;
%% ======不等式约束=====
% ====1)第一个不等式约束=====
In_1=zeros(num_EV*num_slot, num_OptVar);
for i=1:num_slot
    for j=1:num_EV
        In_1((i-1)*num_EV+j,num_slot+(j-1)*num_slot+1:num_slot+(j-1)*num_slot+i)=F(j,1:i);
        %         fprintf('set row %g, col %g:%g by using F(%g,1:%g).\n',(i-1)*num_EV+j,num_slot+(j-1)*num_slot+1,num_slot+(j-1)*num_slot+i,j,i);
    end
end
In_1=-1*In_1;  % 第一个不等式,左边
In_b1=zeros(num_EV*num_slot, 1);    % 第一个不等式,右边, [EV1_slot1, EV2_slot1, ..., EV1_slot2, EV2_slot2,...]'
for i=1:num_slot
    In_b1( (i-1)*num_EV+1:(i-1)*num_EV+num_EV, 1 )= (1/tau)*EV_info(1:num_EV,3);
end

%=====2)第二个不等式约束=====
In_2=-1*In_1; %第二个不等式约束,左边
In_b2=zeros(num_EV*num_slot, 1);    % 第二个不等式约束,右边, [EV1_slot1, EV2_slot1, ..., EV1_slot2, EV2_slot2,...]'
temp_b2=Cap_battery_org - EV_info(1:num_EV,3);
for i=1:num_slot
    In_b2( (i-1)*num_EV+1:(i-1)*num_EV+num_EV, 1 )= (1/tau)*temp_b2;

🎉3 文献来源

部分理论来源于网络,如有侵权请联系删除。

🌈4 Matlab代码、数据、文章讲解

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/363776.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习无监督磁共振重建方法调研(二)

深度学习无监督磁共振重建方法调研&#xff08;二&#xff09;Self-supervised learning of physics-guided reconstruction neural networks without fully sampled reference data&#xff08;Magnetic Resonance in Medicine 2020&#xff09;模型设计实验结果PARCEL: Physi…

如何保证数据的安全?对称和非对称加密,身份认证,摘要算法,数字证书等傻傻分不清?波哥图解带你彻底掌握

支付安全 1.基础概念 明文&#xff1a;加密前的消息叫“明文”&#xff08;plain text&#xff09; 密文&#xff1a;加密后的文本叫“密文”&#xff08;cipher text&#xff09; 密钥&#xff1a;只有掌握特殊“钥匙”的人&#xff0c;才能对加密的文本进行解密&#xff0c;…

功能测试三年,是时候做出改变了

前言 测试行业3年多经验&#xff0c;学历大专自考本科&#xff0c;主要测试方向web&#xff0c;PC端&#xff0c;wap站&#xff0c;小程序公众号都测试过&#xff0c;app也测过一些&#xff0c;C端B端都有&#xff0c;除功能外&#xff0c;接口性能也有涉猎&#xff0c;但是不…

day32 多线程(上)

文章目录相关概念codeThreadTest01ThreadTest02 编写一个类&#xff0c;直接继承java.lang.Thread&#xff0c;重写run方法ThreadTest03 实现线程的第二种方法ThreadTest04 采用匿名内部类的方式ThreadTest05 获取线程名字ThreadTest06 sleep方法sleep面试题ThreadTest08 终止线…

不同路径-力扣62-java 动态规划

一、题目描述一个机器人位于一个 m x n 网格的左上角 &#xff08;起始点在下图中标记为 “Start” &#xff09;。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&#xff08;在下图中标记为 “Finish” &#xff09;。问总共有多少条不同的路径&#xff1f…

H12-831题库(有详细的解析)

1.&#xff08;单选&#xff09;某工程师利用2台路由器进行IPv6业务测试,通过运行BGP4模拟总部与分支的互联互通。如图所示,某工程师抓包查看R1发出的update报文。关于该报文信息的描述,以下哪个说法是正确的? A.该报文描述的路由的下一跳地址为:2001:db8::2345:1::1 B.该报文…

基于Pytorch,从头开始实现Transformer(编码器部分)

Transformer理论部分参考知乎上的这篇文章 Transformer的Attention和Masked Attention部分参考知乎上的这篇文章 Transformer代码实现参考这篇文章&#xff0c;不过这篇文章多头注意力实现部分是错误的&#xff0c;需要注意。 完整代码放到github上了&#xff0c;链接 Trans…

ASE50N06-ASEMI低压MOS管ASE50N06

编辑-Z ASE50N06在TO-252-2L封装里的静态漏极源导通电阻&#xff08;RDS(ON)&#xff09;为15mΩ&#xff0c;是一款N沟道低压MOS管。ASE50N06的最大脉冲正向电流ISM为200A&#xff0c;零栅极电压漏极电流(IDSS)为1uA&#xff0c;其工作时耐温度范围为-55~175摄氏度。ASE50N06…

2年手动测试,裸辞后找不到工作怎么办?

我们可以从以下几个方面来具体分析下&#xff0c;想通了&#xff0c;理解透了&#xff0c;才能更好的利用资源提升自己。一、我会什么&#xff1f;先说第一个我会什么&#xff1f;第一反应&#xff1a;我只会功能测试&#xff0c;在之前的4年的中我只做了功能测试。内心存在一种…

LDPC码的编译码原理简述

关于fpga调用ldpc IP core的相关参数问题可以看我的另一篇文章 LDPC码由Gallager在1962年提出&#xff0c;全称为 Low Density Parity-check Codes 低密度奇偶校验码 它的译码性能可以逼近Shannon信道容量限&#xff0c;广富盛名的Turbo码也被证明是LDPC码的一个特例。并且LDPC…

软件测试简单么,如何自学?

软件测试是不是简单其实需要自己学习了才知道&#xff0c;难易程度对于不同的人来说都是不一样的。都是需要实际去尝试了之后才知道。也要看是和谁对比&#xff0c;对于java这种来说肯定是容易多了。 软件测试其实算是互联网三大技术岗位中最轻松的工种&#xff0c;但是你学起…

idea中的Maven导包失败问题解决总结

idea中的Maven导包失败问题解决总结 先确定idea和Maven 的配置文件settings 没有问题 找到我们本地的maven仓库&#xff0c;默认的maven仓库路径是在\C:\Users\用户名.m2下 有两个文件夹&#xff0c;repositotry是放具体jar包的&#xff0c;根据报错包的名&#xff0c;找对应文…

重识html

html 重识html 万维网用url统一资源定位符标识分布因特网上的各种文档 各种概念 URL: 统一资源定位器 它是WWW的统一资源定位标志&#xff0c;就是指网络地址 在WWW上&#xff0c;每一信息资源都有统一的且在网上唯一的地址 网页: 由文字 图片 视频 音乐各种元素排列组…

面试热点题:stl中vector与list的优缺点对比、以及list的迭代器与vector迭代器的区别

vector的优点 下标随机访问 vector的底层是一段连续的物理空间&#xff0c;所以支持随机访问尾插尾删效率高 跟数组类似&#xff0c;我们能够很轻易的找到最后一个元素&#xff0c;并完成各种操作cpu高速缓存命中率高 因为系统在底层拿空间的时候&#xff0c;是拿一段进cpu&am…

软件测试5年,一路走来的艰辛路程

前言 不论你是什么时候开始接触测试这个行业的&#xff0c;你首先听说的应该是功能测试。通过一些测试手段来验证开发做出的代码是否符合产品的需求&#xff1f;当然你也有自己对功能测试的理解&#xff0c;但是最近两年感觉功能测试好像不太受欢迎&#xff0c;同时不少同学真的…

JavaEE简单示例——动态SQL之更新操作<set>元素

简单介绍&#xff1a; 在之前我们做的学生管理系统的时候&#xff0c;曾经有一个环节是修改学生的数据。我们在修改的时候是必须将student对象的三个属性全部填入信息&#xff0c;然后全部修改才可以&#xff0c;这样会造成一个问题就是在我们明明只需要修改一个属性的时候却要…

华为外包测试2年,不甘被替换,168天的学习转岗成正式员工

我25岁的时候&#xff0c;华为外包测试&#xff0c;薪资13.5k&#xff0c;人在深圳。 内卷什么的就不说了&#xff0c;而且人在外包那些高级精英年薪大几十的咱也接触不到&#xff0c;就说说外包吧。假设以我为界限&#xff0c;25岁一线城市13.5k&#xff0c;那22-24大部分情况…

干货|最全焊接不良汇总,你知道如何避免吗?

良好的焊接&#xff0c;是保证电路稳定持久工作的前提。下面给出了常见的8种焊接缺陷&#xff0c;看看你遇到过多少种&#xff1f;焊接中的常见问题一、锡珠形成原因&#xff1a;渣或杂质&#xff1a;在焊接过程中&#xff0c;如果焊接区域附近有过多的杂质或者脏污&#xff0c…

毕业论文图片格式、分辨率选择及高质量Word转PDF方法

已知1&#xff1a;毕业论文盲评通常需要提交PDF文件。 已知2&#xff1a;PDF文件太大可能会导致翻页卡顿以及上传盲评网站失败。 已知3&#xff1a;Word转PDF方法不当可能会导致图像模糊。 已知4&#xff1a;打印机分辨率通常为300dpi。 问题1&#xff1a;论文插图分辨率设置…

分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测

分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测 目录分类预测 | MATLAB实现WOA-CNN-LSTM鲸鱼算法优化卷积长短期记忆网络数据分类预测分类效果基本描述模型描述程序设计参考资料分类效果 基本描述 1.Matlab实现WOA-CNN-LSTM多特征分类预测&…