m基于遗传优化的不同等级电动汽车充电站的选址方案matlab仿真
目录
1.算法描述
2.仿真效果预览
3.MATLAB核心程序
4.完整MATLAB
1.算法描述
作为电动汽车的普及与推广,必要的基础配套服务设施、充电站的建设位置和选址规划对整体行业的发展起着重要的意义,本文中提出了一个不同等级电动汽车充电站的选址与求解算法,考虑到了备选地址的分布情况,基于目标规划的整体思路,建立了一个使得电站建设初始成本,以及用户充电总成本最小化的不同等级充电站的选址解决模型,为了求解,运用了遗传搜索算法,针对其中表示电站址等级和用户分配的两个决策变量,设计了遗传编码和初始解构建相结合的新颖方案,并采用了遗传变异策略,可同时确定出充电站的建址位置、建设等级以及各个需求点的分配,该算法有很好的电站寻址能力,通过模型求得的解能很好的解答该题。
从定量建模的角度出发,建立一个考虑多种等级的充电站选址模型,希望可以同时决策充电站的建址位置、建设等级以及各个需求点分配给哪个充电站进行服务等问题,同时结合考虑建站成本最小以及用户出行成本最小的问题,针对建立的模型,设计了一个遗传收搜算法来进行求解。
根据已给数据,充电站的建设分为4个等级,各等级充电站的动力蓄电池存储能力、日服务能力等各不相同,具体如表1所示:
首先我们要做的就是通过演算来决定怎样选择Station地点才能使各个方面的成本最小化。结合给定的条件,可以想到是,将每种可能性尝试一遍,计算出成本,并且记录已知最小值与此时的Station信息。那么我们可以算出,但用这种方法,我们需要循环测试5的十次方种可能性,然而这种方法的时间复杂度为 。随着充电站数量的增多或者在模型中需要加入其他考虑因素的话,枚举算法在运算时间上就难以接受。因此在这里我们需要考虑更加合适的启发式算法---遗传算法。
电动汽车充电站的运营成本主要是按购电电价(分时电价)向电网公司支付电费,它的主要收入来源于按照制定给用户的充电电价收取的充电费用。充电站通过两者的差价来实现盈利。因此我们研究充电站分时充电电价时段的制定,希望通过用户的自主响应,以达到有序充电的目的,实现充电站的最大盈利。
第一步:获取用户的充电需求
当用户驶入电站,根据用户自身条件选择(1)即充(不等待,即刻充电)(2)可以最大等待时间区间(即用户在附近上班、公务或其他事宜,可延迟充电最大时间)(3)无充电时间,更换电池板。充电站则根据充电站通过电动汽车上的电池管理系统获取电动汽车电池容量Bi,以及电池当前荷电状态(state of charge,SOC) Asi (即电动汽车当前电池电量与其电池总容量的比例)。合理制定用户的充电分时电价时段。
第二步:会根据用户选择以及充电站内系统运行状态给予用户一个实时分时电价
电动汽车充电站以实现削峰填谷为目标,并以满足客户充电需求以及充电站变压器不过载为约束,动态制定面向该用户的分时电价。
第三步:用户自主响应分时电价,确定充电计划。
充电站在制定的分时电价后,用户自主响应选择充电模式,可选择延迟电动汽车充电开始时间至低电价时段或立即开始充电,或重新调整以上三个不同的充电模式,直至与充电站内的电荷状态及盈利模式相符。充电站最后根据用户选择确定电动汽车充电计划,实现站内接入电动汽车的有序充电控制。否则,即视为充电需求不满足,用户离开。
综上所述 ,系统的优化目标函数为:
一项是充电站建站成本,一项是电动车在充电过程中消耗的成本(包括路程上的消耗及占用用户的时间成本)
2.仿真效果预览
matlab2022a仿真如下:
3.MATLAB核心程序
% 充电站级别 服务量 EV数量/天 建站成本 RMB/万
% 1 350 650
% 2 250 530
% 3 110 400
% 4 70 350
global CDZ_lvl;
global CDZ_Ev;
global CDZ_my;
global CDZ_my2;global Icar;
global Xcar;
global Ycar;
global EVcar;global ICDZ;
global XCDZ;
global YCDZ;
global Myrod;
global CDZage;global Car1;
global Car2;
global Car3;
global TYPE;CDZ_lvl = [1,2,3,4];
CDZ_Ev = [350,250,110,70];
CDZ_my = 1e4*[650,530,400,350];
CDZ_my2 = 1e4*[650,530,400,350]*0.08;%充电的电动车分布及数量
Icar = [1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26;27;28;29;30];
Xcar = 9.6/700*[1268.49126300000;1222.61962400000;1345.25604800000;1151.47177400000;1265.68279600000;1207.64112900000;1167.38642500000;1166.45026900000;1142.11021500000;1045.68615600000;1087.81317200000;948.325941000000;831.306452000000;816.327957000000;927.730511000000;823.817204000000;816.327957000000;689.946909000000;760.158602000000;678.713038000000;567.310484000000;568.246640000000;529.864247000000;420.334005000000;191.911962000000;240.592070000000;400.674731000000;541.098118000000;596.331317000000;695.563844000000];
Ycar = 9.6/700*[453.572581000000;427.360215000000;492.891129000000;429.232527000000;527.528898000000;589.315188000000;630.506048000000;582.762097000000;528.465054000000;503.188844000000;597.740591000000;605.229839000000;426.424059000000;350.595430000000;382.424731000000;493.827285000000;584.634409000000;444.211022000000;241.065188000000;271.958333000000;409.573253000000;333.744624000000;461.997984000000;459.189516000000;335.616935000000;211.108199000000;204.555108000000;235.448253000000;482.593414000000;501.316532000000];
EVcar = [33;35;22;29;28;34;37;45;37;45;50;33;29;35;43;42;23;34;31;37;41;24;29;32;32;22;24;26;33;31];%汽车类型随机划分
II = randperm(length(Icar));
Car1 = II(1:12);
Car2 = II(13:21);
Car3 = II(22:30);
TYPE = ones(1,length(Icar));
TYPE(Car1)=1;
TYPE(Car2)=2;
TYPE(Car3)=3;ICDZ = [1;2;3;4;5;6;7;8;9;10];
XCDZ = 9.6/700*[1284.40591400000;1162.70564500000;1158.02486600000;857.518817000000;772.328629000000;725.520833000000;574.799731000000;464.333333000000;205.954301000000;920.241263000000];
YCDZ = 9.6/700*[463.870296000000;593.059812000000;418.934812000000;562.166667000000;343.106183000000;302.851478000000;448.891801000000;377.743952000000;315.021505000000;427.360215000000];%用户路程成本
Myrod = 1;
%充电站建设使用周期为10年
CDZage = 10;MAXGEN = 200;
NIND = 500;
Nums = 10;
Chrom = crtbp(NIND,Nums*10);%sh
Areas = [];
for i = 1:NumsAreas = [Areas,[0;4]];% 目标范围0到4,如果是0,则表明该位置不安装充电桩
endFieldD = [rep([10],[1,Nums]);Areas;rep([0;0;0;0],[1,Nums])];gen = 0;
for a=1:1:NIND %计算对应的目标值X = round(4*rand(1,Nums));%初始值[epls,f1,f2,Aim] = func_obj(X);E = epls;Js(a,1) = E;
endObjv = (Js+eps);
gen = 0; %%
while gen < MAXGEN; genPe0 = 0.995;pe1 = 0.005; FitnV=ranking(Objv); %编码Selch=select('sus',Chrom,FitnV);%选择 Selch=recombin('xovsp', Selch,Pe0); %交叉 Selch=mut( Selch,pe1); %变异phen1=bs2rv(Selch,FieldD); for a=1:1:NIND X = round(phen1(a,:));%计算对应的目标值[epls,f1,f2,Aim]= func_obj(X);E = epls;JJ(a,1) = E;end Objvsel=(JJ); [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel); gen=gen+1; %保存参数收敛过程和误差收敛过程以及函数值拟合结论index1 = isnan(JJ);index2 = find(index1 == 1);JJ(index2) = [];index3 = find(JJ==10000000000000);JJ(index3) = [];Error(gen) = mean(JJ);[VV,II]=min(JJ);end figure;
plot(Error,'linewidth',2);
grid on
xlabel('迭代次数');
ylabel('遗传算法优化过程');
legend('Average fitness');[V,I] = min(JJ);
X = round(phen1(I,:))[epls,f1,f2,Aim]= func_obj(X);%成本输出
epls
f1
f2%显示布局图
ii=find(X==0);
X(ii)=[];
XCDZ(ii)=[];
YCDZ(ii)=[];
figure;
for i = 1:length(X)if X(i)==1plot(XCDZ(i),YCDZ(i),'bo','LineWidth',2,...'MarkerEdgeColor','k',...'MarkerFaceColor','b',...'MarkerSize',10);hold ontext(XCDZ(i)+0.2,YCDZ(i)+0.2,num2str(X(i)));hold onendif X(i)==2plot(XCDZ(i),YCDZ(i),'rs','LineWidth',2,...'MarkerEdgeColor','k',...'MarkerFaceColor','r',...'MarkerSize',10);hold ontext(XCDZ(i)+0.2,YCDZ(i)+0.2,num2str(X(i))); hold onend if X(i)==3plot(XCDZ(i),YCDZ(i),'k^','LineWidth',2,...'MarkerEdgeColor','k',...'MarkerFaceColor','c',...'MarkerSize',10);hold ontext(XCDZ(i)+0.2,YCDZ(i)+0.2,num2str(X(i)));hold onendif X(i)==4plot(XCDZ(i),YCDZ(i),'r>','LineWidth',2,...'MarkerEdgeColor','k',...'MarkerFaceColor','g',...'MarkerSize',10);hold ontext(XCDZ(i)+0.2,YCDZ(i)+0.2,num2str(X(i)));hold onend
end
hold on
plot(Xcar,Ycar,'gx');
for i = 1:length(Aim)plot([Xcar(i),XCDZ(Aim(i))],[Ycar(i),YCDZ(Aim(i))],'b-o','LineWidth',1,...'MarkerEdgeColor','k',...'MarkerFaceColor','y',...'MarkerSize',5);hold ontext(Xcar(i)+0.2,Ycar(i)+0.2,num2str(i));hold on
end
02_052m
4.完整MATLAB
V
m基于遗传优化的不同等级电动汽车充电站的选址方案matlab仿真相关推荐
- m基于GA遗传优化算法的陆基制导系统地面站布设策略matlab仿真,并输出GDOP值
目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 遗传算法的起源可追溯到20世纪60年代初期.1967年,美国密歇根大学J. Holland教授的学生 ...
- 基于PSO优化的OFDM系统PAPR抑制PTS算法MATLAB仿真
目录 1.算法仿真效果 2.MATLAB核心程序 3.算法涉及理论知识概要 4.完整MATLAB 1.算法仿真效果 matlab2022a仿真结果如下: 2.MATLAB核心程序 .......... ...
- MATLAB代码:基于粒子群算法的电动汽车充电站最优选址和定容
MATLAB代码:基于粒子群算法的电动汽车充电站最优选址和定容 关键词:选址定容 电动汽车 充电站位置 仿真平台:MATLAB 主要内容:代码主要做的是一个电动汽车充电站的选址定容问题,提出了能够计及 ...
- 一种综合的两阶段方法,用于高速公路网上独立电动汽车充电站的选址和规模确定。
本文提出了一种综合的两阶段方法,用于高速公路网上独立电动汽车充电站的选址和规模确定.在第一阶段,从提供有交通需求和电池数据的蒙特卡罗模拟中获得单个车辆需要充电服务的位置:提出了一个整数规划模型来确定潜 ...
- 基于双层优化的微电网系统规划设计方法matlab程序(yalmip+cplex)
基于双层优化的微电网系统规划设计方法matlab程序(yalmip+cplex) 参考文献:基于双层优化的微电网系统规划设计方法 摘要:规划设计是微电网系统核心技术体系之一.从分布式电源的综合优化(组 ...
- 【第 01 章 基于直方图优化的图像去雾技术-全套系统MATLAB智能驾驶深度学习】
毋庸置疑的是,在汽车智能技术.汽车新能源技术.汽车电子这个群雄逐鹿的赛道.智能驾驶技术的要求也在不断的提升. 智能车辆教学平台.智能网联教学平台.汽车电子教学设备.在环仿真系统,目前主流的系统有很多, ...
- 电机调速设计并用matlab仿真,终稿毕业论文设计_基于PWM控制的直流电动机调速系统设计及MATLAB仿真.doc最终版(备份存档)...
<毕业论文_基于PWM控制的直流电动机调速系统设计及MATLAB仿真.doc>由会员分享,可免费在线阅读全文,更多与<(终稿)毕业论文设计_基于PWM控制的直流电动机调速系统设计及M ...
- SVPWM仿真和基于DSP28335的PIL(处理器在环) 仿真模型(将matlab仿真算法生成代码在DSP中在线运行返回数据给Matlab)验证算法可行性和实时性
SVPWM仿真和基于DSP28335的PIL(处理器在环) 仿真模型(将matlab仿真算法生成代码在DSP中在线运行返回数据给Matlab)验证算法可行性和实时性. 对于数字信号处理很有用. ID: ...
- 【优化求解】基于遗传算法优化PARSEC 方法的翼型形状附matlab代码
1 内容介绍 航天航空技术的快速发展和市场竞争的日益激烈,导致人们对飞行器的运输效率.飞行品质和气动性能等方面的要求越来越高,使得飞行器的设计过程面临着更大的挑战.因此,对飞行器气动外形的优化设计方法 ...
最新文章
- ipad无法与itunes同步,提示因为这台电脑不再被授权使用在此ipad上购买的项目解决方案...
- 运维-系统架构师经验总结:
- Flutter 调用地图软件(高德、百度、腾讯、苹果)同时实现另类国际化
- 能源项目xml文件 -- springMVC-servlet.xml
- SAP S4 Finance6个支持企业实时财务管理的主要创新领域
- php://input
- 不能忽视的情绪 -- 喜怒哀惧,也不过度关注
- 刘意JavaSE 学习笔记 Day19-Day21——异常,IO(File类/字符流/字节流)
- matlab配置vlfeat库(0.9.21)
- 如何使用Github实现协同工作(例子:两人合作写代码)
- AdobeFlashPlayer 安装包
- 小天使改名(水题 杭电排位赛-2)
- 使用钉钉自定义机器人发信息
- 微信小程序 #项目笔记# | 从0到1实现外卖点餐系统小程序
- 使用响应扩展的响应面(Rx)
- Android diva 分析(全)
- 【SpringBoot】升级2.4.0所出现的问题:When allowCredentials is true, allowedOrigins cannot contain the specia
- 6大核心议题首度揭晓,2021下半年最强热点来了! | 2021世界区块链大会·杭州...
- matlab算法封装成库,将函数封装成库使用的实现方法
- PCA(Principal Component Analysis,主成分分析)降维
热门文章
- 性能调优--gzip、缓存、content-download、逐针渲染、Queueing、动态延迟加载、最小化主线程工作
- 编程打印如下形式的杨辉三角形,打印的杨辉三角形的行数n(不超过10行)要求由用户从键盘输入。要求按照如下函数原型进行编程,不能使用全局变量
- 51单片机学习笔记(清翔版)(19)——串口通信
- 简述组装计算机硬件流程,计算机硬件组装的步骤有哪些?
- sysbench官网
- 判断当前时间是否在股票开盘时间,不考虑周六周日和节假日
- jquery之empty()方法详解
- 领导层必看:要想公司管理好,办公软件少不了
- 自由与规则——《程序员羊皮卷》
- python语句print(type)的输出结果是_Python语句print(type(1/2))的输出结果是_____