• 【优化充电】基于matlab粒子群算法电动汽车充电动态优化策略【含Matlab源码 2163期】


    一、粒子群算法电动汽车充电优化

    1 电动汽车充电负荷估算
    电动汽车的充电负荷主要与电动汽车起始充电时刻和充电时长相关,而起始充电时刻是由电动汽车用户的到家时间决定的,充电时长主要与电动汽车的行驶里程和充电倍率相关。

    目前电动汽车还没有大规模运营, 只能通过统计燃油车的相关规律来代替电动汽车。对北京市某小区的私家车用户进行统计,回家时间主要分为三种: 一是正常朝九晚五的上班族,到家时间基本服从N(17.6,1.3)的正态分布, 这类用户占的比重最大;二是加班或者上半夜班的用户,到家时间基本服从N (0.7,1.6)的正态分布;三是少部分后半夜上班的人,到家时间基本服从N (7.8,1.22)的正态分布。三类用户所占的比例分别为0.68、0.24和0.08。
    目前大部分私人用电动汽车的常规充电功率约为3 k W,根据以上相关信息,可以通过蒙特卡洛计算机仿真模拟方法,求出包含上述三类用户的居民小区平均每天一辆电动汽车的充电功率需求,如图1所示。
    在这里插入图片描述
    图1电动汽车一天平均充电功率需求
    根据电动汽车平均一天的充电功率需求曲线,只要设置居民小区的电动汽车用户数量,就可以求出相应规模电动汽车的充电负荷曲线。

    2 光伏出力曲线和常规用电负荷
    固定铺设面积的光伏出力曲线主要与光照强度和温度相关,在实际条件下主要表现为天气变化和季节性变化。通过对某楼顶10 k W光伏发电系统功率输出数据进行统计和处理,可得不同季节该光伏发电系统满发的出力曲线,如图2所示。
    在这里插入图片描述
    图2四季光伏满发出力曲线

    居民小区的负荷曲线主要和小区的用户规模相关,通过对北京市某小区居民楼的实际负荷数据进行统计,可得夏季和冬季每户平均家庭常规用电负荷曲线,如图3所示。
    在这里插入图片描述
    图3某小区每户平均家庭常规负荷曲线

    2 电动汽车优化充电模型
    2.1 目标函数

    本文以平抑小区配电网的负荷波动和降低电动汽车用户充电电费为小区电动汽车充电优化的目标函数。以分钟为单位,将一天分为1 440 min。

    1)以平抑负荷波动为目标函数
    2)以用户电费最少为目标函数
    针对上述两个目标,考虑两者目标函数的量纲不同,对每个目标函数进行规范化,采用线性加权和法将多目标优化问题转化为单目标优化问题,

    2.2 约束条件
    居民小区电动汽车充电优化调度的约束条件主要满足用户使用方面和电网运行的要求。对于用户使用方面的要求主要体现在用户开始充电时间和充电时长;对于电网运行的要求主要体现在总功率不能超过电网节点功率的限制。

    1)用户需求约束
    本约束条件的要求是要保证电动汽车在用户离开家的时间之前完成充电。

    2)电网运行约束
    本约束条件的要求是要保证小区在引入电动汽车充电负荷和光伏发电输出的情况下,电网节点的功率要维持在电网的合理安全范围之内。

    2.3求解方法
    居民小区电动汽车的优化充电问题是一个多维、多变量、多约束条件以及非线性的优化问题,线性规划等经典优化算法难以解决。这里采用粒子群优化算法,考虑到基本粒子群算法容易陷入局部最优的问题,本文将采用改进的自适应变异粒子群优化算法进行求解。

    粒子群算法即模拟鸟群的捕食行为,通过鸟群的集体协作达到群体最优值,算法通过式(9) 和式(10)实现粒子位置和速度的更新
    式中,ω为惯性权重,一般在0.1 ~0.9之间取值; d=1,2,…,D;i=1,2,…,n;k为当前迭代次数;Vid为粒子的速度;Xid为粒子的位置;c1和c2为非负的常数,称为加速度因子;r1和r2为0~1区间的随机数。

    粒子群优化算法存在早熟收敛现象,需要对惯性权重和学习因子进行改进。对于惯性权重ω, 若ω在0.5~1之间随机取值,则实验表明该算法比线性递减策略准确度更高,收敛速度更快
    对于学习因子c1和c2采用非线性反余弦加速, c1先大后小,而c2先小后大,能解决陷入局部最优的问题。基本思想是搜索初期粒子飞行主要参考本身的历史信息c1,到了后期则更加注重群体信息c2,即
    根据上述分析,得到相应的优化算法的求解过程如下:

    1)初始化粒子群中粒子的位置与速度,并根据约束条件对粒子位置进行修正。

    2)计算粒子的适应度值(目标函数值)。

    3)将个体最优值设置为当前位置,群体最优值gbest设置为初始群体中最佳粒子的位置。

    4)再根据式(9)和式(10)更新粒子速度和相应位置。

    5)计算粒子群粒子的适应度,更新并记录粒子最优位置和群体最优位置。

    6)根据式(14)式(16)计算群体适应度方差σ2。

    7)根据式(17)计算变异概率pm。

    8)产生在0~1的随机数,如果该数小于变异概率pm,则执行式(18)的变异操作,并进行相应修正。

    9)判断是否达到结束条件,如果为真,则停止计算,并输出优化的解;如果为假,返回步骤4)。

    二、部分源代码

    function[info,fv] = PSO2(N,c1,c2,w,M,knownEV_info,k,n,timeInterval,load_grid)
    % info EVs with the start times which give the smallest fitness value
    % fv the smallest fitness value

    % c1,c2 learning factor
    % w inertia weight
    % M maximum number of iterations
    % D number of vehicles needed to be arranged %need to be changed to vinfo
    % N number of particles
    % k kth interval to be arranged

    % EVs with manageable start time
    aEV = knownEV_info(find(knownEV_info(:,5) >= (k-1)*timeInterval)😅;
    %
    bEV = knownEV_info(find(knownEV_info(:,5) < (k-1)*timeInterval)😅;

    % initalize particles

    for i = 1:N
    for j=1:length(aEV(:,5))
    x(i,j) = aEV(j,2) + (aEV(j,4) - aEV(j,3)- aEV(j,2))rand;
    % x(i,j) = 0;
    % while (x(i,j) < (k-1)15) || (x(i,j) > (aEV(j,4) - aEV(j,3)))
    % x(i,j) = randn
    12
    60; % initialize the start time of vehicles
    % end
    v(i,j) = randn; % initialize the speed
    end
    end

    % calculate the fitness and initialize particle optimal and global optimal
    for i=1:N
    aEV(:,5) = x(i,:)';
    vehicle_info = sortrows([aEV;bEV],1);
    p(i) = fitness(vehicle_info,n,load_grid);
    y(i,:) = x(i,:);
    end
    % find the global optimal
    pg = x(N,:);
    vg = p(N);
    for i=1:(N-1)
    if(p(i) pg = x(i,:);
    vg = p(i);
    end
    end

    % main iteration
    for t=1:M
    for i=1:N % update the speed and the start time
    v(i,:)=wv(i,:)+c1rand*(y(i,:)-x(i,:))+c2rand(pg-x(i,:));

        for j=1:length(aEV(:,5))
            if ((x(i,j)+v(i,j)) >= aEV(j,2)) &&  ((x(i,j)+v(i,j)) <= (aEV(j,4) - aEV(j,3)))
                x(i,j) = x(i,j)+v(i,j);
            end
        end
        
        aEV(:,5) = x(i,:)';
        vehicle_info = sortrows([aEV;bEV],1);
        if fitness(vehicle_info,n,load_grid) < p(i)
            p(i)=fitness(vehicle_info,n,load_grid);
            y(i,:) = x(i,:);
        end
        if p(i) < vg
            pg = y(i,:);
            vg = p(i);
        end
    end
    Pbest(t) = vg;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    end

    % result
    aEV(:,5) = pg’;
    info = sortrows([aEV;bEV],1);
    fv = vg;

    三、运行结果

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    四、matlab版本及参考文献

    1 matlab版本
    2014a

    2 参考文献
    [1]庞松岭,张超,张帝,刘汉炜,严乙桉.基于自适应变异粒子群算法的居民小区电动汽车优化充电策略[J].电气应用. 2015,34(20)

    3 备注
    简介此部分摘自互联网,仅供参考,若侵权,联系删除

  • 相关阅读:
    FPGA如此火热,ASIC和FPGA到底选哪个好?
    End-to-end 3D Point Cloud Instance Segmentation without Detection
    「Verilog学习笔记」用优先编码器①实现键盘编码电路
    springcloud 整合gateway 网关
    jenkins安装配置maven
    Etsy店铺防防关联,自养号防关联环境搭建要点
    【文件终结者 Objective-C语言】
    如何优雅的写 Controller 层代码?
    搜索中常见数据结构与算法探究(二)
    基于MRF和CNN的图像生成
  • 原文地址:https://blog.csdn.net/TIQCmatlab/article/details/127253995