function result=fitness(x,k)%判断粒子的适应度,x是一个行向量,适应度就是问题的解,每一个粒子算一次
C_MT=0;
C_GRID=0;
C_BA=0;
P_BA_sum=0;%储能
deltp_sum=0;
P_BA_sum_delt=0;
%储能荷电状态%
BAsocMax=200;%soc:核电状态
P_load=[11.7 12.4 11.7 12.4 11.7 22.4 81.9 122.4 241.3 242.0 241.3 241.3 241.3 240.7 241.3 240.7 241.3 161.0 122.2 121.1 102.9 101.2 23.0 11.1];%负荷
P_pv=[0 0 0 0 0 0 0 0.0391 19.5244 40.0204 50.1010 73.3946 74.3511 76.3489 72.8004 53.1185 4.6258 0 0 0 0 0 0 0];%光伏
G_price=[0 0 0 0 0 0 0 0 0.0931 0.0931 0.0931 0.0931 0.0931 0.0931 0.0931 0.0931 0.0931 0.0931 0.0931 0.0931 0.0931 0 0 0];%有可能是高峰电价
for i=1:72%相当于之前的j
if i
C_MT=C_MT+0.04*x(i);%第i个粒子的值
elseif i>24&&i<49
C_GRID= C_GRID+G_price(i-24)*x(i);
else
C_BA=C_BA+8*abs(x(i));%绝对值
end
end
for i=49:72
P_BA_sum=P_BA_sum+(-x(i));
P_BA_sum_delt= P_BA_sum_delt+max(0,P_BA_sum-BAsocMax);
end
if(P_BA_sum_delt<=0)
d=0;
elseif(P_BA_sum_delt>0&&P_BA_sum_delt<=0.001)
d=10;%%%%%迭代次数
elseif(P_BA_sum_delt>0.001&&P_BA_sum_delt<=0.1)
d=20;
elseif(P_BA_sum_delt>0.1&&P_BA_sum_delt<=1.0)
d=100;
else
d=1000;
end
%电功率平衡约束处理
for i=1:24
deltp(i)=abs(P_pv(i)+x(i)+x(i+24)+x(i+48)-P_load(i));
deltp_sum=deltp_sum+deltp(i);
end
if(deltp_sum==0)
r=0.0;
elseif(deltp_sum>0&&deltp_sum<=0.001)
% r=10*sqrt(k);%%%%迭代次数
r=10;
elseif(deltp_sum>0.001&&deltp_sum<=0.1)
r=20;
elseif(deltp_sum>0.1&&deltp_sum<=1.0)
r=100;
else
r=2000;
end
%电功率平衡约束处理
result=C_MT+C_GRID+C_BA+d*P_BA_sum_delt+r*deltp_sum;