• 大小: 20KB
    文件类型: .m
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: Matlab
  • 标签: 模拟退火  PS  

资源简介

本程序为电动汽车充电的模拟退火PSO算法。并且加入了高斯变异++考虑用户侧满意度、电动汽车建模的概率性。

资源截图

代码片段和文件信息

%本程序为电动汽车充电的模拟退火PSO算法。并且加入了高斯变异++考虑用户侧满意度、电动汽车建模的概率性
%为了使节点按先PQPV最后平衡节点次序编号,以便与公式对照,节点1与节点10对调。
clear;
num=xlsread(‘网络参数.xls‘);
e=xlsread(‘节点功率参数.xls‘);
num(:6)=num(:4)+num(:5)*sqrt(-1);
Y=zeros(10);   %生成空导纳矩阵
%创建节点导纳矩阵
for i=1:9;   %不考虑变压器和线路对地导纳
    p=num(i2);q=num(i3);
    Y(pq)=Y(pq)-1/num(i6);
    Y(qp)=Y(pq);
    Y(pp)=Y(pp)+1/num(i6);
    Y(qq)=Y(qq)+1/num(i6);
end    %根据支路参数算导纳矩阵
temp=Y(102);%保持原来的数据
P=zeros(948); %节点基本负荷,9个PQ节点一天48个点的负荷
Q=zeros(948);
Pv2r=zeros(948); %汽车用来行驶的电功率
Pev_leave=zeros(948);%电动汽车离开电网的时间
%Pv2r1=zeros(948);
Xc=zeros(1148); %Xc(1:D:)为一天48个点的控制变量,Xc(D+1:)为一天48个点的目标函数值
%获取节点日负荷曲线数据
for i=1:9 %平衡节点10不计算,标幺值
   for j=1:48
        P(ij)=e(26j)*e(i+44); Q(ij)=e(26j)*e(i+45);
        %Pv2r(ij)=e(18j)*e(i+49)/1000; %汽车行驶功率,标幺值
        Pv2r(ij)=e(20j)*e(i+49)/1000;
        Pev_leave(ij)=e(27j);%改变了汽车离开电网的分布。
        
   end
end
for i=1:48
    [UAngleline_Ploss_P_1(i)P0_10(i)]=niulafa(-P(:i)-Q(:i)1Ytemp);
end
meanP=mean(P0_10);
%粒子群优化算法
N=50; %种群大小
D=48; %搜索空间维数,即控制变量个数
Tmax=1200; %最大迭代次数
c1=1.49445;c2=1.49445; %学习因子
wmax=0.9;wmin=0.4; %惯性权重
T=1e6;b=0.9; %模拟退火的温度控制参数
scope=[00.0312  %Pev范围,均为标幺值
       0.951.05 %分接头t范围
       0.931.07 %节点电压范围
       0.0240.24
       -0.03120.0312
       02]; %电池储存能量范围
   %初始化粒子群
 xv_swarm=zeros(112*DN); %生成粒子群位置、速度、当前最优值矩阵
 %xv_swarm(1:101:DN)为N个粒子的位置,xv_swarm(1:10D+1:2*DN)为N个粒子的速度,xv_swarm(111:DN)为N个粒
 %子各个时刻的适应值(目标函数值),xv_swarm(即前面48个值的和1149N)为第N个粒子总的适应值,。 
 pg_swarm=zeros(11D+1N+1); %生成个体最优位置、群体最优位置和相应最优值矩阵
 %pg_swarm(1:101:D,N)为N个粒子的各自历史最优位置,pg_swarm(111:DN)为N个粒子的各自历史每时刻的最小适应值,
 %pg_swarm(1149N)为N个粒子的各自历史总的最小适应值,
 %pg_swarm(1:101:DN+1)为N个粒子的群体最优位置,pg_swarm(111:DN+1)为N个粒子的群体各个时刻最小适应值,
 %pg_swarm(1149N+1)为N个粒子的群体总的最小适应值
 ev_soc_re=zeros(949); %汽车SOC第一列为初始值,ev_soc(:2:49)为9个节点一天48个点的soc值
ev_soc=zeros(949N);
%ev_soc_re(:1)=rand(91);
%ev_soc_re(:1)=ev_soc_re(:1)*(scope(42)-scope(41))+scope(41); %soc初始化
ev_soc_re(:1)=rand*(0.12-0.05)+0.05; %soc初始化0.2-0.5
for n=1:N
ev_soc(:1n)=ev_soc_re(:1);
end
%ev_soc(1:91)=0.72;
%Pv2r=zeros(948);
%对N个粒子初始化
for n=1:N 
    sum_P=0;
 for j=1:48
     U=2; %使进入while循环
     count1=0;
  while  max(U)>1.07||min(U)<0.93||max(max(abs(line_P)))>3.932||max(ev_soc(:j+1n))>scope(42)||min(ev_soc(:j+1n))

评论

共有 条评论