www.pudn.com > powerflow-genetical.gorithm.rar > lpc.m, change:2009-01-05,size:4075b


    %function [rst,F0]=gacs(N,pcro,pmut,pre,n) 
    %pcro交叉概率,pmut变异概率,N为迭代次数 
    %rst染色体,F0最后最好的染色体 
    clc 
    clear 
    N=5;                        %遗传次数 
    pcro=0.75;                  %取0比取0.75更容易得到满足电压要求的解,但损耗值较大 
    pmut=0.05; 
    num=100;                      %种群个数 
    length1=12;                 %染色体长度    
    B2=[1,-1.6-0.8j,1,1;2,-2-4j,1,1;3,-3.7-1.3j,1,1;4,5,1.05,2;5,0,1.00,3];%1.05-1.00    
    [U,sunhao]=chaoliu(B2); 
    disp('补偿前网损'); 
    disp(sunhao); 
    disp('补偿前节点电压'); 
    disp(U); 
    N_B2=B2; 
    %第一列存储节点号 
    %第二列存储节点的功率 
    %第三列存储节点的电压 
    %第四列存储节点的类型  ;其中1为PQ节点,2为PV节点,3为平衡节点 
    pop=zeros(num,12); 
    s=0; 
    ii=1; 
while (s<num)     
        pop2=randint(1,12); 
        y=zeros(1,3); 
        a=1:4:9; 
        j=1:3; 
        y(j)=8*pop2(a)+4*pop2(a+1)+2*pop2(a+2)+pop2(a+3);  %二进制转化为十进制 
        y=y';                                            %行向量转化为列向量 
        if y(1)<=8&y(2)<=10&y(3)<=13 
           zhi=sum(y); 
             if zhi<=30&zhi>=0             %%%%%%%%电容太少,效果差   电容太多,无功流动,损耗反而可能增加 
                  
 
                  BB2=charu(y,B2);                    %将3×1变为5×1的矩阵 
                  B2(:,2)=BB2; 
                  [U,sunhao]=chaoliu(B2);    
                  B2=N_B2; 
                 if max(U)<=1.06&min(U)>=0.94      %平衡节点电压为1.05  上下偏移量限设为5% 
                     %disp('电压U的值'); 
                     %disp(U); 
                     pop(ii,:)=pop2; 
                     ii=ii+1; 
                     s=s+1; 
                 end 
             end 
        end 
end 
pop; 
 
 
 
    gen=0;                                            %单次遗传代数初始化; 
    fmax=0;    
    while(gen<=N) 
         fit0=0;                                      %初始化函数 
         fit=zeros(1,num);                            %初始化适应度       
         for b=1:num 
             c=pop(b,:);                              %解码 
             y=zeros(1,3); 
             a=1:4:9; 
             j=1:3; 
             y(j)=8*c(a)+4*c(a+1)+2*c(a+2)+c(a+3);    %二进制转化为十进制 
             y=y'; 
             BB2=charu(y,B2);                         %将3×1变为5×1的矩阵 
             B2(:,2)=BB2; 
             [U,sunhao]=chaoliu(B2);                 
             B2=N_B2; 
             F=sunhao; 
             fit0=1/F; 
             fit(b)=fit0;                             %求个体的适应度 
             if fit(b)>fmax 
                fmax=fit(b);                          %求各代的最高适应度的个体 
                popfmax=pop(b,:);                     %把最好的个体存储下来  popfmax表示种群中最好适应度的个体   
             end 
         end 
          
         q=zeros(1,num); 
         q(1)=fit(1);                           
         for ii=2:num 
             q(ii)=q(ii-1)+fit(ii);                   %累加个体适应度形成赌轮 
         end                                          %遗传操作_________%%%%%%%%%%%%%%%%%%%%%%%% 
          
         popnew=select(pop,q,num);                    %轮盘赌选择 
         pop=crossover(pop,pcro,num,length1);         %两点交叉 
         pop=mutation(pop,pmut,num,length1);          %均匀变异 
         gen=gen+1;                                   %下一代 
    end 
             F0=popfmax; 
             disp('最佳个体'); 
             disp(F0); 
             y=zeros(1,3); 
             a=1:4:9; 
             j=1:3; 
             y(j)=8*F0(a)+4*F0(a+1)+2*F0(a+2)+F0(a+3); %二进制转化为十进制 
             disp('1,2,3节点补偿电容个数'); 
             disp(y); 
             y=y'; 
             disp('补偿电容总个数'); 
             disp(sum(y)); 
             BB2=charu(y,B2);                           %将3×1变为5×1的矩阵 
             B2(:,2)=BB2; 
             [U,sunhao]=chaoliu(B2); 
             disp('节点电压幅值'); 
             disp(abs(U)); 
             disp('补偿后网损'); 
             disp(sunhao);