⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compensation2.m

📁 关于无功补偿的matlab优化程序
💻 M
📖 第 1 页 / 共 3 页
字号:
function  compensation2                       
clear all;
Rmin=0;                                             %DATAmin的读标志
Rmax=0;                                             %DATAmax的读标志
flowoutput=fopen('compensation2result.txt','wt');   %创建补偿后潮流计算结果compensationresult.txt文件
fprintf(flowoutput,'线路固定补偿方式下两点补偿后潮流计算结果分析\n');
fprintf(flowoutput,'补偿组合1为节点5和7共同补偿,补偿组合2为节点5和8共同补偿,补偿组合3为节点6和10共同补偿,补偿组合4为节点4和8共同补偿\n');
while Rmax==0||Rmin==2                              %Rmin=2表示'DATAmin.txt'文件待读
   n=0;
   if Rmax==0
      fid=fopen('DATAmax.txt');                     %读'DATAmax.txt'文本文件
      Rmax=1;                                       %Rmax=1表示'DATAmax.txt'文件已读
   else
      fid=fopen('DATAmin.txt');                     %读'DATAmin.txt'文本文件
      Rmin=1;                                       %Rmin=1表示'DATAmin.txt'文件已读
   end          
  while feof(fid)==0                                %文件定位器不在文件结尾
    line=fgetl(fid);                                %读出定位器所在行 
    if double(line(1))>=48&&double(line(1))<=57||double(line(1))==43||double(line(1))==45                                                   
       n=n+1;
       if n==1
           PQ=line; 
           PQ=sscanf(PQ,'%f');                      %列向量PQ中下标为奇数的元素表示P,为偶数的表示Q
           n1=size(PQ)/2;
           numPQ=n1(1);                             %每行PQ节点个数计数      
           for j=1:numPQ;
               PQre(n,j)=PQ(2*j-1);
               PQim(n,j)=PQ(2*j);
           end      
        end
       if n==2
          S=line;                                  
          S=sscanf(S,'%f');                         %列向量S中下标为奇数的元素表示P,为偶数的表示Q
          n2=size(S)/2;                        
          numS=n2(1);                               %平衡节点S个数计数     
          for j=1:numS
               Sre(1,j)=S(2*j-1);
               Sim(1,j)=S(2*j);
          end             
       end       
       if n>=3
           Yb=line;                     
           Yb=sscanf(Yb,'%f');  
           n3=size(Yb)/2;  
           numYB=n3(1);    
           for j=1:numYB                            %节点导纳矩阵行元素个数计数
                YBre(n-2,j)=Yb(2*j-1);              %节点导纳矩阵实部
                YBim(n-2,j)=Yb(2*j);                %节点导纳矩阵虚部
           end              
       end                                       
     end                               
  end

              
%///上面为读取原始数据,形成节点导纳矩阵程序;下面为线路补偿方式下两点补偿后潮流计算程序///


  EEcopy=zeros(4);                                  %存放最大负荷时各补偿组合分别进行对应容量补偿后节点20的电压幅值
  EEEcopy=zeros(1);                                 %存放最小负荷时各补偿组合分别进行对应容量补偿后节点2的电压幅值
  PQcopy=zeros(2*numPQ,1); 
  PQcopy=PQ;
  T1copy =[ 0.0305  0.0391  0.0642  0.0888  0.1070  0.1170  0.1200  0.1222  0.1282];
  if Rmin==0
     fprintf(flowoutput,'最大负荷时选择最优补偿点\n'); 
     fprintf(flowoutput,'最大负荷时各补偿组合分别投入后,网络中各节点电压的恢复情况\n');
  else
     fprintf(flowoutput,'校验最大负荷情况下选择的补偿点在最小负荷时是否会出现过补偿现象\n'); 
  end 
  for flag=1:4
      if Rmin==0                                   %最大负荷时四种补偿组合分别补偿后结果输出
         fprintf(flowoutput,'选择补偿组合%g\n',flag); 
      else
          if Rmin==1&&flag==1                      %仅校验最大负荷情况下选择的最优组合在最小负荷情况下进行补偿时是否会出现过补偿现象
              fprintf(flowoutput,'选择补偿组合%g\n',flag); 
          else
              break;
          end
       end
       if flag==1
         PQ(8)= PQ(8)+T1copy(4);
         PQ(12)=PQ(12)+T1copy(6);         
       elseif  flag==2
         PQ(8)= PQ(8)+T1copy(4);
         PQ(14)=PQ(14)+T1copy(7);
       else
         if flag==3
           PQ(10)= PQ(10)+T1copy(5);
           PQ(18)=PQ(18)+T1copy(9);
         else
           PQ(6)= PQ(6)+T1copy(3);
           PQ(14)=PQ(14)+T1copy(7);
         end
      end
      QP=zeros(2*numPQ,1);
     for j=1:numPQ
      QP(2*j-1)=PQ(2*j);
      QP(2*j)=PQ(2*j-1);
     end
     E=ones(numPQ,1);                                    %PQ节点的电压和相位赋初值
     F=zeros(numPQ,1);                         
     P=zeros(numPQ,1);                                            
     Q=zeros(numPQ,1);
     epQP=zeros(2*numPQ,1);                              %存放P、Q的不平衡量
     epEF=zeros(2*numPQ,1);                              %存放PQ节点的节点电压和相位的不平衡量                                              
     E1=1.12;                                            %平衡节点1的节点电压幅值和相位
     F1=0;
     k=0;                                                %存放迭代次数
     while k<=20
        k=k;    
        for j=2:numPQ+1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -