function result=fitness(x)
data1=xlsread('E:\最终结果程序\选址定容\33节点测试系统.xls'); %测试系统参数
data2=xlsread('E:\测试函数\微电源参数.xls');%微源参数
%%%%%%分布式电源成本计算,只计算运行维护成本&&&&&&&
w=zeros(8,1);
for i=1:8
w(i)=10*1289*0.33*0.0096*x(i); %年运行维护费用 ,31870是光伏电池发电量
end
Cdg = 0;
for j=1:8
Cdg=w(j)+Cdg; %DG成本计算
end
%%%%%环境成本%%%%%%
Ig=zeros(8,1);%%%光伏电池的有功标幺值
Q2max=zeros(8,1);
P2=zeros(8,1);
for k=1:8
Ig(k)=x(k)*data2(:,9);%%PI注入电流标幺值,x32维,只能放在32个位置
P2(k)=x(k)*data2(:,8)/10000;%%%光伏电池的有功标幺值
Q2max(k)=3*P2(k);
end
Ce=0;
for i=1:8
Ce=-(2.78*8+9*6+860*0.023)/100* P2(k)+Ce;
end
%潮流程序
N=zeros(33,33);
for k=1:32
i=data1(k,2);
m=data1(k,3);
N(i,m)=1;
end
%L&NU的形成
%节点层次矩阵L为方阵
L=zeros(18,18);
NU=zeros(1,33);
L(1,1)=1;
for n=1:18 %18层节点
for m=1:18 %找下层节点L的n+1列
if L(m,n)==0
break
else
a1=find(N(:,L(m,n)));%N的第L(m,n)列非零元素所在行
a2=find(N(L(m,n),:));%N中符合条件的元素的列数
a=[a1' a2];
l=length(a);
if m==1
r=1;
else
r=r;
end
end
if ~isempty(a)
for t=1:l
if all(L~=a(t)) %%有问题已解决
L(r,n+1)=a(t);
r=r+1;
NU(1,a(t))=L(m,n);
end
end
end
end
end
% clear j;
%%节点负荷功率
SL=zeros(33,1);
for k=2:33
SL(k)=(data1(k-1,6)+j*data1(k-1,7))/10;
end
SL(1)=0;
%%线路阻抗
Z=zeros(33,1);
for m=2:33
Z(m)=(data1(m-1,4)+j*data1(m-1,5))/10;
end
Z(1)=0;
%%电压赋初值
v=ones(33,1);
v(1)=1.05;
delt=zeros(33,1);
% clear i;
V=v.*cos(delt)+j*v.*sin(delt);
%%%%负荷节点注入电流
I=zeros(33,1);%支路电流
I1=zeros(33,1);
I2=zeros(33,1);%光伏加负荷
Qg=zeros(8,1);%%%光伏电池的无功标幺值
Q2=zeros(8,1);
%%%%%%%%%%%%%%%%%%%%%%迭代主程序%%%%%%%%%%%%%%%%%%%%%%
for dd=1:100
V=v.*cos(delt)+j*v.*sin(delt);
U=V;
u=abs(U);
for c=1:33
I1(c)=conj(SL(c))/conj(V(c));
end
if k~=8 && 14 && 20 && 24 && 25 && 29 && 30 && 31
I2(k)=I1(k);
end
I2(8)=I1(8)+Ig(1);
I2(14)=I1(14)+Ig(2);
I2(20)=I1(20)+Ig(3);
I2(24)=I1(24)+Ig(4);
I2(25)=I1(25)+Ig(5);
I2(29)=I1(29)+Ig(6);
I2(30)=I1(30)+Ig(7);
I2(31)=I1(31)+Ig(8);
for n=18:-1:1 %%节点支路电流
row=find(L(:,n)==0,1);%row是一个数
C=L(1:(row-1),n);%L的列元素n层节点(上层阵)
for t=1:row-1
i=C(t);
if any(NU==C(t))%判断n层节点有没有下层节点
col=find(NU==C(t));%找对应下层节点阵
d=length(col);%j对应下层支路电流和
Sum=0;
for k=1:d
Sum=Sum+I(col(k));%计算支路j电流
end
I(i)=I1(i)/conj(V(i))+Sum;
else
I(i)=I1(i)/conj(V(i)); %j的问题
end
end
end
%%%%%%%%%%%电压回推计算
for m=2:18
row=find(L(:,m)==0,1);
C=L(1:(row-1),m);%L的非零层节点
l=length(C);
for t=1:l
i=C(t);%本层节点
i0=NU(i);%j0是上层节点
V(i)=V(i0)-Z(i)*I(i);
end
end
%%%%%%%%%%%%%%PI越限判断与节点修正 光伏%%%%%%%%%
Q2(1)=sqrt(abs(Ig(1))^2*(real(V(8)^2+imag(V(8)^2)))-P2(1)^2);%K+1次迭代后可以处理为PQ节点
if Q2(1)>Q2max(1)
Q2(1)=Q2max(1);
Ig(1)=conj(-P2(1)-j*Q2(1))/conj(V(8));%越限后的节点电流
end
Q2(2)=sqrt(abs(Ig(2))^2*(real(V(14)^2+imag(V(8)^2)))-P2(2)^2);%K+1次迭代后可以处理为PQ节点
if Q2(2)>Q2max(2)
Q2(2)=Q2max(2);
Ig(2)=conj(-P2(2)-j*Q2(2))/conj(V(14));%越限后的节点电流
end
Q2(3)=sqrt(abs(Ig(3))^2*(real(V(20)^2+imag(V(20)^2)))-P2(3)^2);%K+1次迭代后可以处理为PQ节点
if Q2(3)>Q2max(3)
Q2(3)=Q2max(3);
Ig(3)=conj(-P2(3)-j*Q2(3))/conj(V(20));%越限后的节点电流
end
Q2(4)=sqrt(abs(Ig(4))^2*(real(V(24)^2+imag(V(24)^2)))-P2(4)^2);%K+1次迭代后可以处理为PQ节点
if Q2(4)>Q2max(4)
Q2(4)=Q2max(4);
Ig(4)=conj(-P2(4)-j*Q2(4))/conj(V(24));%越限后的节点电流
end
Q2(5)=sqrt(abs(Ig(5))^2*(real(V(25)^2+imag(V(25)^2)))-P2(5)^2);%K+1次迭代后可以处理为PQ节点
if Q2(5)>Q2max(5)
Q2(5)=Q2max(5);
Ig(5)=conj(-P2(5)-j*Q2(5))/conj(V(25));%越限后的节点电流
end
Q2(6)=sqrt(abs(Ig(6))^2*(real(V(29)^2+imag(V(29)^2)))-P2(6)^2);%K+1次迭代后可以处理为PQ节点
if Q2(6)>Q2max(6)
Q2(6)=Q2max(6);
Ig(6)=conj(-P2(6)-j*Q2(6))/conj(V(29));%越限后的节点电流
end
Q2(7)=sqrt(abs(Ig(7))^2*(real(V(30)^2+imag(V(30)^2)))-P2(7)^2);%K+1次迭代后可以处理为PQ节点
if Q2(7)>Q2max(7)
Q2(7)=Q2max(7);
Ig(7)=conj(-P2(7)-j*Q2(7))/conj(V(30));%越限后的节点电流
end
Q2(8)=sqrt(abs(Ig(8))^2*(real(V(31)^2+imag(V(31)^2)))-P2(8)^2);%K+1次迭代后可以处理为PQ节点
if Q2(8)>Q2max(8)
Q2(8)=Q2max(8);
Ig(8)=conj(-P2(8)-j*Q2(8))/conj(V(31));%越限后的节点电流
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%收敛条件%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if max(abs(v-u))<0.00001
break
end
delt=angle(V);
end
deltS=0;
for j=2:14
deltS=deltS+(V(data1(j-1,2))-V(data1(j-1,3)))*conj(I(data1(j-1,3)));%视在功率
end
P=real(deltS);
Closs=P*10*1000*8760*0.65;
result=(0.2*Cdg+0.55*Ce+0.25*Closs)/10000;
end
- 1
- 2
前往页