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

📄 lpc.m

📁 用matlab编写的遗传算法结合潮流计算的程序
💻 M
字号:
    %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);
        
         
    
   

⌨️ 快捷键说明

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