function [ output_args ] = MaxBranchDeviation( ~, Linei,Linej,Liner,Linex,Lineb,Transfori,Transforj,Transforr,Transforx,Branchi,Branchg,Branchb,Transfork0,Volt0,UAngel0,Volt,UAngel,FileName,PD0,QD0) %% 最大支路功率偏差 % 支路功率包括线路和变压器 %% 先用加了误差的负荷功率计算潮流值 [Busnum,Balance,PQstandard,Precision,~,~,~,~,~,kmax,~ ,... ~,~,~,~,~,~,~,Pointpoweri,PG,QG,PD,QD,PVi,PVu,~,~,~,~,~,~,~]= openfile2(FileName); PD=PD0; QD=QD0; %% 形成节点导纳矩阵 [~,Y,r,c,Angle] = admmatrix(Busnum,Linei,Linej,Liner,Linex,Lineb,Transfori,Transforj,Transforr,... Transforx,Transfork0,Branchi,Branchg,Branchb); [P0,Q0,U,Uangle] = Initial(PG,PD,PQstandard,Pointpoweri,QG,QD,Busnum); %求功率不平衡量 %disp('迭代次数i 最大不平衡量'); %% 循环体计算 for i = 0:kmax [Jacob,PQ,U,Uangle] = jacobian(Busnum,Balance,PVi,PVu,U,Uangle,Y,Angle,P0,Q0,r,c); %形成雅克比矩阵 % disp('第一次雅克比'); m = max(abs(PQ)); m=full(m); %fprintf(' %u %.8f \n',i,m); if m > Precision %判断不平衡量是否满足精度要求 [Uangle,U] = solvefun(Busnum,Jacob,PQ,Uangle,U); %求解修正方程,更新电压变量 else disp(['收敛,迭代次数为',num2str(i),'次']); break %若满足精度要求,则计算收敛 end end Volt0=U; UAngel0=Uangle; [dispLineloss0 dispTransloss0]=Lineloss(Linei,Linej,Liner,Linex,Lineb,Transfori,Transforj,Transforr,Transforx,Branchi,Branchg,Branchb,Transfork0,Volt0,UAngel0); [dispLineloss dispTransloss]=Lineloss(Linei,Linej,Liner,Linex,Lineb,Transfori,Transforj,Transforr,Transforx,Branchi,Branchg,Branchb,Transfork0,Volt,UAngel); t1=(dispLineloss0(:,3) - dispLineloss(:,3))./dispLineloss0(:,3); t2=(dispTransloss0(:,3) - dispTransloss(:,3))./dispTransloss0(:,3); t11=dispLineloss0(:,3)>1e-5;% 太小的值不计算 t22=dispTransloss0(:,3)>1e-5;% 太小的值不计算 t3=abs([t1(t11);t2(t22)]); output_args=max(t3(t3~=Inf)); end