首页 > 编程语言 >基于遗传算法的电动汽车有序充放电优化问题(附matlab源码)

基于遗传算法的电动汽车有序充放电优化问题(附matlab源码)

时间:2022-11-15 17:01:03浏览次数:52  
标签:24 1.5 hold 充放电 plot load 源码 matlab LineWidth

   为了减小电动汽车规模化充电给配电网安全稳定运行带来的不利影响,提出一种基于遗传算法的电动汽车有序充电策略。考虑用户出行规律及保证配电网的安全稳定运行,以 降低负荷曲线峰谷差与充电成本最小为目标,建立峰值不超过变压器容量和电池电量充满为约束 的优化模型。

1 、目标函数的建立  

                ​编辑

                  

                    

                     

2、求解及其算法流程

               

3、部分代码

clc
clear all
warning off
%% 不同车辆数结果对比
load EV200.mat
load EV300.mat
load zpe2.mat
load zpe3.mat
dianjia=[0.500000000000000,0.650000000000000,0.650000000000000,0.650000000000000,0.500000000000000,0.500000000000000,0.500000000000000,0.500000000000000,0.500000000000000,0.350000000000000,0.350000000000000,0.350000000000000,0.350000000000000,0.350000000000000,0.350000000000000,0.350000000000000,0.500000000000000,0.500000000000000,0.650000000000000,0.650000000000000,0.650000000000000,0.650000000000000,0.500000000000000,0.650000000000000];
Residential_load=[1393.85	1097.4	742.992	392.3	289.767	300.912	418.305	653.833	1010.47	1243.03	1482.27	1832.22	1880.51	1901.32	1888.69	1863.42	1883.49	1968.93	2067.75	2113.07	2086.32	1969.67	1829.25	1665.05];
fengdian=[236,210,198,182,240,180,168,96,48,30,96,108,84,132,150,132,108,72,96,110,136,192,192,180];
guangfu=[0 0 0 0 0 20 65 110 180 249.9 260 275 270 265 245 230 175 120 30 0 0 0 0 0];
xinnengyuan=fengdian+guangfu;

figure
plot(EV200,'k*-','LineWidth',1.5)
hold on 
plot(EV300,'r*-','LineWidth',1.5)
hold off
xlabel('时间/h')
ylabel('充电负荷(kw)')
title('电动车充电负荷曲线')
legend('200辆车','300辆车')
xlim([0,24])
set(gca,'xtick',[0:4:24])

figure
plot(Residential_load,'ko-','LineWidth',1.5);
xlabel('时间/h')
ylabel('总负荷(kw)')
title('基础负荷曲线')
xlim([1,24])
set(gca,'xtick',[0:4:24])

figure
plot(zpe2,'bo-','LineWidth',1.5);
hold on
plot(zpe3,'r*-','LineWidth',1.5);
hold off
xlabel('时间/h')
ylabel('总负荷(kw)')
title('无序充电负荷曲线')
legend('200辆车无序','300辆车无序')
xlim([1,24])
set(gca,'xtick',[0:4:24])

figure
plot(zpe2+Residential_load,'b-o','LineWidth',1.5);
hold on
plot(zpe3+Residential_load,'r-*','LineWidth',1.5);
hold off
xlabel('时间/h')
ylabel('总负荷(kw)')
title('考虑无序充电的总负荷曲线')
legend('200辆车无序','300辆车无序')
xlim([1,24])
set(gca,'xtick',[0:4:24])

figure
plot(Residential_load,'ko-','LineWidth',1.5);
hold on
plot(EV200+Residential_load,'bo-','LineWidth',1.5);
hold on
plot(EV300+Residential_load,'ro-','LineWidth',1.5);
hold on
plot(zpe2+Residential_load,'b--','LineWidth',1.5);
hold on
plot(zpe3+Residential_load,'r--','LineWidth',1.5);
hold on
zzz=ones(1,24)*2800;
plot(zzz,'k--','LineWidth',1.5')
xlabel('时间/h')
ylabel('总负荷(kw)')
title('考虑电动车充电的总负荷曲线')
legend('基础负荷','200辆车有序','300辆车有序','200辆车无序','300辆车无序')
xlim([1,24])
set(gca,'xtick',[0:4:24])

figure
plot(Residential_load,'ko-','LineWidth',1.5);
hold on
plot(EV200+Residential_load,'bo-','LineWidth',1.5);
hold on
plot(zpe2+Residential_load,'b--','LineWidth',1.5);
xlabel('时间/h')
ylabel('总负荷(kw)')
title('200辆车有序与无序总负荷曲线')
legend('基础负荷','200辆车有序','200辆车无序')
xlim([1,24])
set(gca,'xtick',[0:4:24])

figure
plot(Residential_load,'ko-','LineWidth',1.5);
hold on
plot(EV300+Residential_load,'ro-','LineWidth',1.5);
hold on
plot(zpe3+Residential_load,'r--','LineWidth',1.5);
xlabel('时间/h')
ylabel('总负荷(kw)')
title('300辆车有序与无序总负荷曲线')
legend('基础负荷','300辆车有序','300辆车无序')
xlim([1,24])
set(gca,'xtick',[0:4:24])

%电价曲线
figure
DJ=[];
T=[];
for i=1:24
    T0=i-1:0.01:i;
    DJ=[DJ dianjia(i)*square(T0/(2*pi))];
    T=[T,T0];
end
plot(T,abs(DJ),'r-','LineWidth',1.5);
xlabel('时间/h')
ylabel('电价/元')
title('电价曲线')
xlim([1,24])
ylim([0 1])
set(gca,'xtick',[0:4:24])

%风电出力曲线
figure
plot(fengdian,'r-','LineWidth',1.5);
xlabel('时间/h')
ylabel('功率/kw')
title('风电出力曲线')
xlim([1,24])
set(gca,'xtick',[0:4:24])

%光伏出力曲线
figure
plot(guangfu,'r-','LineWidth',1.5);
xlabel('时间/h')
ylabel('功率/kw')
title('光伏出力曲线')
xlim([1,24])
set(gca,'xtick',[0:4:24])

%新能源出力曲线
figure
m_x=mean(xinnengyuan);
max_x=1.25*m_x*ones(24,1);
min_x=0.75*m_x*ones(24,1);

plot(xinnengyuan,'b-','LineWidth',1.5);
hold on
plot(max_x,'r--','LineWidth',1.5);
hold on
plot(min_x,'k--','LineWidth',1.5);
xlabel('时间/h')
ylabel('功率/kw')
title('新能源出力曲线')
legend('新能源出力曲线','高出力临界值','低出力临界值')
xlim([1,24])
ylim([0 500])
set(gca,'xtick',[0:4:24])

%% 利用量曲线
figure
%计算有序充电的新能源消纳率
st1=find(EV200-xinnengyuan>=0);%新能源发电全部用于汽车充电的时间段
st2=find(EV200-xinnengyuan<0);%新能源发电有剩余的时间段
xiaonalv=(sum(xinnengyuan(st1))+sum(EV200(st2)))/sum(xinnengyuan);
XL200(st1)=xinnengyuan(st1);
XL200(st2)=EV200(st2);

st3=find(EV300-xinnengyuan>=0);%新能源发电全部用于汽车充电的时间段
st5=find(EV300-xinnengyuan<0);%新能源发电有剩余的时间段
xiaonalv=(sum(xinnengyuan(st3))+sum(EV300(st5)))/sum(xinnengyuan);
XL300(st3)=xinnengyuan(st3);
XL300(st5)=EV300(st5);

st11=find(zpe2-xinnengyuan>=0);%新能源发电全部用于汽车充电的时间段
st22=find(zpe2-xinnengyuan<0);%新能源发电有剩余的时间段
xiaonalv=(sum(xinnengyuan(st11))+sum(zpe2(st22)))/sum(xinnengyuan);
WL200(st11)=xinnengyuan(st11);
WL200(st22)=zpe2(st22);

st33=find(zpe3-xinnengyuan>=0);%新能源发电全部用于汽车充电的时间段
st55=find(zpe3-xinnengyuan<0);%新能源发电有剩余的时间段
xiaonalv=(sum(xinnengyuan(st33))+sum(zpe3(st55)))/sum(xinnengyuan);
WL300(st33)=xinnengyuan(st33);
WL300(st55)=zpe3(st55);
plot(XL200, 'r-pentagram','LineWidth',1.5);
hold on
plot(WL200, 'c-o','LineWidth',1.5);
xlabel('时间/h')
ylabel('新能源利用量/kw')
title('200辆车有序与无序充电新能源利用量曲线')
legend('有序充电','无序充电')
xlim([1,24])
set(gca,'xtick',[0:4:24])

%% 计算有序无序充电的参数
%计算有序充电的峰谷差率
fh1=zpe2+Residential_load;
fgc=(max(fh1)-min(fh1))/max(fh1)*100;
disp('无序充电的峰谷差率')
fgc
%计算有序充电的电费
disp('无序充电的电费')
P=sum(0.8.*zpe2)
%计算有序充电的新能源消纳率
st1=find(zpe2-xinnengyuan>=0);%新能源发电全部用于汽车充电的时间段
st2=find(zpe2-xinnengyuan<0);%新能源发电有剩余的时间段
xiaonalv=(sum(xinnengyuan(st1))+sum(zpe2(st2)))/sum(xinnengyuan);
XL200(st1)=xinnengyuan(st1);
XL200(st2)=zpe2(st2);
disp('新能源消纳率')
xiaonalv

%计算有序充电的峰谷差率
fh1=zpe3+Residential_load;
fgc=(max(fh1)-min(fh1))/max(fh1)*100;
disp('无序充电的峰谷差率')
fgc
%计算有序充电的电费
disp('无序充电的电费')
P=sum(0.8.*zpe3)
st1=find(zpe3-xinnengyuan>=0);%新能源发电全部用于汽车充电的时间段
st2=find(zpe3-xinnengyuan<0);%新能源发电有剩余的时间段
xiaonalv=(sum(xinnengyuan(st1))+sum(zpe2(st2)))/sum(xinnengyuan);
XL200(st1)=xinnengyuan(st1);
XL200(st2)=zpe2(st2);
disp('新能源消纳率')
xiaonalv

 4、结果展示

 

 

 

 

标签:24,1.5,hold,充放电,plot,load,源码,matlab,LineWidth
From: https://www.cnblogs.com/lovematlab/p/16892994.html

相关文章

  • 基于粒子群优化深度置信网络的分类预测(matlab)
    1.深度置信网络(DBN)DBN由一层BP神经网络和若干层RBM栈式叠加而成。最顶层的softmax回归层作为标签层输出分类识别的结果,其余层完成特征提取。DBN的学习训练过程......
  • 基于多目标粒子群的微电网优化调度(附matlab代码)
    1、部分结果展示       %储能最大放电功率StorageMaxDischargingPower=250;%储能最大充电功率StorageMaxChargingPower=-200;%柴油发电机最大功率DGMa......
  • Vue3 —— 组件练习题(附源码)
    一、定义一个vue分页组件,实现客户端分页功能1.1、子组件A(页数按钮)<!--本组件用于遍历分页的页数按钮--><templatelang=""><divclass="btn-box"><!--......
  • C#万年历源码参考
    C#万年历源码参考万年历Class源码:   ///中国日历异常处理---注意,该异常处理必须是在Class之外,   publicclassChineseCalendarException:System.Exception ......
  • 在线直播系统源码,数组遍历提取,订单效果
    在线直播系统源码,数组遍历提取,订单效果 <!DOCTYPEhtml><html> <head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge"> ......
  • 直播平台源码,vue 写搜索效果
    直播平台源码,vue写搜索效果代码如下 <!DOCTYPEhtml><html><head><metacharset="utf-8"><title></title></head><body><divid="app"><h1>搜索水果</h1><inputtype=......
  • vue源码分析-基础的数据代理检测
    简单回顾一下这个系列的前两节,前两节花了大量的篇幅介绍了Vue的选项合并,选项合并是Vue实例初始化的开始,Vue为开发者提供了丰富的选项配置,而每个选项都严格规定了合并的策......
  • vue源码分析-挂载流程和模板编译
    前面几节我们从newVue创建实例开始,介绍了创建实例时执行初始化流程中的重要两步,配置选项的资源合并,以及响应式系统的核心思想,数据代理。在合并章节,我们对Vue丰富的选项......
  • vue源码分析-响应式系统工作原理
    上一章,我们讲到了Vue初始化做的一些操作,那么我们这一章来讲一个Vue核心概念响应式系统。我们先来看一下官方对深入响应式系统的解释:当你把一个普通的JavaScript对象传......
  • Matlab编译32位dll(c++)
    ##随手记录##核心:编译matlab核心工具链注意:需要把my_msvc_32bit_tc.m和myRtwTargetInfo.txt放在一个文件夹中,matlab目录文件也是转到此处step1:获取VC版本号方法一:在电......