EI论文复现:基于混沌模拟退火粒子群优化算法的电动汽车充电站选址与定容程序代码!

适用平台:Matlab+Yalmip+Cplex

程序提出了一种综合考虑全社会利益的选址定容规划模型。为了克服传统粒子群优化算法的早熟、局部收敛等缺点,将混沌理论与模拟退火算法与粒子群优化算法相结合,采用 Voronoi图思想及需求点栅格化理论来确定充电站的服务范围,使结果更加接近实际情况。程序中算例丰富、注释清晰、干货满满,可扩展性和创新性很高!下面对文章和程序做简要介绍!

程序创新点:

1引入模拟退火算法的概率突跳能力,使粒子群算法不但可以接受更好的解,也可以接受折中解,在退火温度的控制下能有效地提高全局搜索能力;

2)采用Voronoi图思想及需求点栅格化理论来确定充电站的服务范围,引入Floyd算法代替传统欧氏距离,使结果更加接近实际情况,求解结果可视化;

主要工作:

针对城市电动汽车充电站的选址与定容问题,建立了考虑充电站运营商、电动汽车用户以及电网企业综合利益的充电站选址定容规划模型。采用Voronoi图思想和需求点栅格化理论,结合Floyd最短路径算法划分充电站的服务范围,求解结果可视化!为了求解该模型,克服传统粒子群优化算法的早熟、局部收敛等缺点,将混沌理论与模拟退火算法与粒子群优化算法相结合,提出采用一种混沌模拟退火粒子群优化算法对问题进行求解,通过引入混沌理论使粒子更高效地遍历搜寻空间,并结合模拟退火算法的概率突跳特性使算法在迭代后期仍具有较高的全局寻优能力。通过算例分析表明,采用所提算法对城市电动汽车充电站选址定容进行优化规划的可行性和有效性。

(1)充电站选址定容数学模型

目前主流的电动汽车能源补给方式主要为充电方式及换电方式2种,电动汽车充电站是社会的公共服务设施,在进行选址定容时不仅应考虑运营方的效益,还应考虑其社会服务作用。在考虑充电站运营方、电网企业的电力负荷均匀性、电力线路走廊、电动汽车车主的方便程度的综合基础上,提出了一种全社会成本最小化的电动汽车充电站选址定容优化规划数学模型。

(2)粒子群算法的局限性和改进

粒子群优化算法在计算中虽然收敛速度较快,但非常容易陷入局部最优的情况。例如,处于全局最优位置的粒子其移动速度只由其自身的速度惯性决定,当自身速度为0时其将停止运动,当所有粒子被吸引运动到这个位置时将会停止搜寻。而在实际中,这个位置往往是局部极值。

为了解决粒子群优化算法后期收敛于局部极值的问题,提出了一种基于混沌理论和模拟退火算法的粒子群优化算法,引入模拟退火算法的概率突跳能力,使粒子群优化算法不但可以接受好的解,也能以一定的概率接受差的解,在退火温度的控制下能有效地提高全局搜索能力。同时引入混沌理论对0-1随机数进行动态赋值,使粒子种群的运动行为更加优化。

(3)Floyd算法概述

根据栅格化理论的思想,将城市道路和交通节点组成的二维图形视作栅格化后的图形。按照假设将道路上需要充电的车辆和每个栅格内的需要充电的车辆整合到道路节点处,将交通节点看作充电需求点。

划分充电站的服务范围:将充电站的选址集合看作二维平面上的点集,充电需求点视为平面上的点。根据Voronoi图原理可知,充电站服务范围内的充电需求点到该站的实际距离应小于等于充电需求点到其他充电站的实际距离。

文章及程序结果:

选址定容结果:

迭代结果:

部分程序:

%% 区域划分
Area1=1.0e+003 *[0.977   1.0860;
0.721    0.0088;0.634    0.7412;
0.3103    1.1040;0.6377   1.0860];
Area1=[Area1,1.*ones(size(Area1,1),1)];
Area2=1.0e+003 *[0.0086    0.0088;
0.9377   1.0860;0.3103    1.7040;
0.0086    0.7412;0.0086    0.0088];
Area2=[Area2,2.*ones(size(Area2,1),1)];
%区域分界
vv=[Area1;Area2];  
for k=1:size(bcs,1)
Ai=find(vv(:,3)==k);
xx=vv(Ai,1);
yy=vv(Ai,2);
kk=convhull(xx,yy);
%in = inpolygon(x,y,xv,yv)%注意xv,yv构成了多边形边界。x,y对应的是单点坐标,判断是否在多边形内。
%返回结果为逻辑logical类型,如果在对应的就返回1,否则为0。
in=inpolygon(b(:,1),b(:,2),xx(kk),yy(kk));
b(in,5)=1; 
%区域归属
Ep=[];
for i=1:size(bcs,1)
    gb=b(b(:,5)==i,:); 
    Ep=[Ep;[sum(gb(:,4)),round(mui.*sum(gb(:,4))./ns),i]]; 
%% 粒子群算法参数
PopSize=10; %种群数量
MaxIter=300;  %最大迭代次数
%学习因子
c1s=2.5;   c2s=0.5;c1e=0.5;   c2e=2.5;
w_start=0.9;   w_end=0.4;      
Iter=1;        
%上下限约束
xmax=1022; xmin=18;ymax=700; ymin=12;
x = xmin + (xmax-xmin).*rand(Tn,PopSize);
y = ymin + (ymax-ymin).*rand(Tn,PopSize);
%光伏选址
xvmax=33;xvmin=2;
xv=round(xvmin+(xvmax-xvmin).*rand(2,PopSize));
%定容
ypmax=0.4;ypmin=0.1;
yp=ypmin+(ypmax-ypmin).*rand(7,PopSize);

部分内容源自网络,侵权联系删除!

欢迎感兴趣的小伙伴关注,获取完整版代码可以查看个人简介!小编会不定期更新高质量的学习资料、文章和程序代码,为您的科研加油助力!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值