优化调度基于matlab改进的遗传算法求解风电场优化调度问题含Matlab源码 1245期

Posted 紫极神光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了优化调度基于matlab改进的遗传算法求解风电场优化调度问题含Matlab源码 1245期相关的知识,希望对你有一定的参考价值。

一、遗传算法简介

1 引言


2 遗传算法理论
2.1 遗传算法的生物学基础


2.2 遗传算法的理论基础




2.3 遗传算法的基本概念






2.4 标准的遗传算法


2.5 遗传算法的特点


2.6 遗传算法的改进方向

3 遗传算法流程



4 关键参数说明

二、部分源代码

v0=10.5;a1=0;%初始风速、风向
PopSize=100;%种群规模
MaxGen=1000; %遗传代数
ChromLen=10;  %编码长度
N=16;%优化变量个数
LLimits = 0;%优化变量的下限
HLimits = 0.33;%优化变量的上限
Chrom=round(rand(PopSize,N*ChromLen));%随机产生初始种群的染色体
for k=1:MaxGen    
    for s=1:PopSize  %种群产生
       m=Chrom(s,:);
       %解码
       for i=1:N
         m1=m(1+ChromLen*(i-1):1:ChromLen*i);
         DigVal=0;b=1;
         for j=1:ChromLen
             DigVal=DigVal+m1(j)*b;
             b=b*2;
         end
         x(s,i) = LLimits+(HLimits-LLimits)*DigVal/(2^ChromLen-1); 
       end
       [P,Pz,v]=Pmax(v0,a1,x(s,:));%求目标函数
    end
    Fit0=(1./Pz);  %适应度函数
    %适应度函数尺度变换
    C=1.5;
    f_avg= sum(Fit0)/PopSize;
    f_max =max(Fit0);    
    f_min =min(Fit0);
    if f_min>(C*f_avg- f_max)/( C-1)    
        a=(C-1)/(f_max-f_avg)*f_avg;
        b=(f_max-C*f_avg)/(f_max-f_avg)*f_avg;
    else
        a=f_avg/(f_avg - f_min);
        b= - (f_min*f_avg)/(f_avg-f_max);
    end
    Fit =a*Fit0+b;
    %轮盘赌式选择
    totalfit=sum(Fit);%求适应值之和 
    fitvalue=cumsum(Fit); 
    for newin = 1:PopSize
        fitin = 1;
        temp=rand*totalfit;
        while  temp  > fitvalue(fitin)
           fitin=fitin+1;
        end        
        TempChrom(newin,:)=Chrom(fitin,:);         
    end
    Chrom = TempChrom;
    Pc=0.6;
    for i=1:2:(PopSize-1)      %单点交叉
        temp=rand;
        if Pc>temp
          n=ceil(N*ChromLen*rand);
          for j=n:N*ChromLen
            TempChrom(i,j)=Chrom(i+1,j);
            TempChrom(i+1,j)=Chrom(i,j);
          end            
        end
    end
   function v=wake_speed(x,y,v0,a,a0)                       %计算一台风机风机前尾流风速
x=x-1;y=y-1;D=300;R=31.5;
X=x*D*cos(a)+y*D*sin(a);                                 %根据风向偏角进行坐标变换
Y=y*D*cos(a)-x*D*sin(a);
i=0;j=0;v2=0;
for m=1:4    
    for n=1:4                                            %循环计算每台风机的尾流影响
        k=i*D*cos(a)+j*D*sin(a);l=-i*D*sin(a)+j*D*cos(a);
        if (X-k) > 0                                     %判断两台风机上下游位置关系
            rx=R+(X-k)*0.04;
            if ((Y+R) < (l-rx)) || ((Y-R) > (l+rx))      %判断是否无尾流遮挡并计算
                v1=v0;
                b=0;
            else
                if ((Y-R) > (l-rx)) && ((Y+R) < (l+rx))  %判断是否为全遮挡并计算
                    Ct=4*a0(i+1,j+1)*(1-a0(i+1,j+1));
                    v1=v0*(1-((R/rx)^2)*(1-(1-Ct)^0.5));
                    b=1;
                else
                    [v1,b]=Ashad(k,l,X,Y,v0,a0(i+1,j+1));%计算部分遮挡
                end
            end
            v2=v2+b*((1-v1/v0)^2);                       %对各个风机的尾流影响风速累加
        else
        end
end
[BestFit,BestId] = max(Fit);
figure
plot(Jlist)
%输出结果
Result = x(BestId,:)
[P,Pz,v]=Pmax(v0,a1,Result)
function [v,B]=Ashad(x1,y1,x2,y2,v0,a)
D=63;Ct=4*a*(1-a);                           %初始条件
rx=0.5*D+abs(x2-x1)*0.04;                    %尾流半径
v=v0*(1-((0.5*D/rx)^2)*(1-(1-Ct)^0.5));
y=((rx)^2-(0.5*D)^2-y1^2+y2^2)/(2*(y2-y1));
z=((0.5*D)^2-(y-y2)^2)^0.5;
d=abs(y2-y1);
A=((rx)^2)*acos((d^2+(rx)^2-(0.5*D)^2)/(2*d*rx))+((0.5*D)^2)*acos((d^2+(0.5*D)^2-(rx)^2)/(2*d*rx))-d*z;
B=A/(2*pi*(0.5*D)^2);                        %尾流遮挡面积与风轮面积之比
end

三、运行结果

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
《智能优化算法及其MATLAB实例(第2版)》包子阳 余继周 杨杉著 电子工业出版社

以上是关于优化调度基于matlab改进的遗传算法求解风电场优化调度问题含Matlab源码 1245期的主要内容,如果未能解决你的问题,请参考以下文章

优化配置基于matlab遗传算法求解风电混合储能容量优化配置问题含Matlab源码 228期

优化调度基于matlab多目标粒子群算法求解风电光伏储能电网发电与需求响应调度优化问题含Matlab源码 239期

优化调度基于matlab多目标粒子群算法求解风电光伏储能电网发电与需求响应调度优化问题含Matlab源码 239期

车间调度基于遗传算法求解混合流水车间调度最优问题matlab源码

车间调度基于遗传算法求解混合流水车间调度最优问题matlab源码

MATLAB实战系列(二十六)-遗传算法求解车间调度问题