基于粒子群算法的电动汽车充电站和光伏最优选址和定容 关键词:选址定容 电动汽车 充电站位置 仿真平台
基于粒子群算法的电动汽车充电站和光伏最优选址和定容 关键词:选址定容 电动汽车 充电站位置 仿真平台:MATLAB 主要内容:代码主要做的是一个电动汽车充电站和分布式光伏的选址定容问题,提出了能够计及地理因素和服务半径的2步筛选法,以此来确定充电站的候选站址 以规划期内充电站的建设运行成本、充电途中耗时成本、网损费用以及考虑碳排放流成本之和最小为目标,考虑了相关的约束条件,构造了电动汽车充电站最优规划的数学模型,并采用粒子群算法快速求解
最近在搞电动汽车充电站选址的问题,发现要考虑的因素真不少。比如充电站不能都扎堆在市中心吧?得考虑周边有没有停车场,电网容量够不够,用户过来充电方不方便。最头疼的是光伏板的位置还得跟着充电站一起规划,这俩得协同优化才划算。
先说说我们团队搞的这个"两步筛选法"。第一步用ArcGIS地图数据筛掉不靠谱的地块:坡度超过15%的直接pass,离主干道500米外的不要,周边停车场车位少于20个的踢出名单。第二步拿服务半径画圈,每个候选点要覆盖至少3个小区,这个用MATLAB的buffer函数实现起来特方便:
service_area = buffer(candidate_points, 2, 'kilometers'); valid_sites = findOverlaps(service_area, residential_areas);这么一筛,原本200多个候选点直接砍到30个靠谱的。有个坑得注意:buffer半径不是固定值,得根据路网动态计算可达距离,我们调用了HERE地图的API获取实时路况数据。
目标函数这块整了个四合一成本模型:①建站成本(变压器+充电桩+土地)②用户路上耗时的折算成本③电网网损④碳排放成本。举个网损计算的核心代码:
function losses = calcPowerLoss(busVoltage) Y = makeAdmittanceMatrix(); % 形成导纳矩阵 current = Y * busVoltage; losses = real(current' * diag(busVoltage) * conj(current)); end这里用了复数功率法算网损,注意busVoltage要实时更新。碳排放成本比较有意思,不是简单算用电量,而是追踪电网的边际碳排放因子,这个需要接入电力市场实时数据。
基于粒子群算法的电动汽车充电站和光伏最优选址和定容 关键词:选址定容 电动汽车 充电站位置 仿真平台:MATLAB 主要内容:代码主要做的是一个电动汽车充电站和分布式光伏的选址定容问题,提出了能够计及地理因素和服务半径的2步筛选法,以此来确定充电站的候选站址 以规划期内充电站的建设运行成本、充电途中耗时成本、网损费用以及考虑碳排放流成本之和最小为目标,考虑了相关的约束条件,构造了电动汽车充电站最优规划的数学模型,并采用粒子群算法快速求解
粒子群的编码方案设计是关键。每个粒子包含[x1,y1,cap1, x2,y2,cap2,...]这样的结构,x/y是位置坐标,cap是容量。有个骚操作是把光伏容量也打包编码进去,但要注意光伏和充电站的耦合关系——光伏容量不能超过充电站总负荷的120%。
约束处理上用了罚函数法。比如容量超限时,目标函数直接加个1e6的大数。不过建议试试动态惩罚系数,效果更好。粒子更新时有个小技巧:当位置跑到地图边界外时,不是简单弹回,而是生成新的随机方向向量,这样收敛更快。
跑了几个典型场景后发现个反直觉的现象:在某些区域,适当增加充电站间距反而能降低总成本。分析数据发现是因为集中布局会导致电网改造成本激增,这验证了模型考虑多因素耦合的必要性。
最后分享个调参经验:惯性权重从0.9线性降到0.4,社会因子取1.8,认知因子1.2时效果最佳。不过具体数值还得看地图规模,建议用超参数优化先跑个大概范围。代码仓库里有个自适应的参数调整模块,会根据收敛情况自动微调,欢迎来GitHub拍砖。
