基于改进多目标灰狼算法的热电联产微网运行优化

目录

1 主要内容

2 部分代码

3 程序结果

4 程序链接


1 主要内容

程序主要参考《基于改进多目标灰狼算法的冷热电联供型微电网运行优化》,但是未考虑冷能,仅对热电能量进行分析,针对热电联产微电网运行调度的优化问题,为实现节能减排的目标,以微电网运行费用和碳排放量为优化目标,建立了包含风机、微型燃气轮机、余热锅炉等微源的微电网优化模型,模型优化求解使用改进的多目标灰狼优化算法,得到多目标问题的 Pareto最优解集。

并考虑了四种模式以及适应范围:

四模式:无、单一加储电、单一加储热、既储电又储热

(1)未加储能和储热:适应于新能源刚发展,渗透率低的地区

适应于光照风速特稳定或电能质量要求不高的地区

(2)单一加储热:适合北部严寒地区,储热需求大,这里注意下储热目前成本上相较于储电只有1到2成,所以优先储热提高消纳

(3)单一加储电:适合南部不需要储热的地区,或者中部对电能质量要求更高的地区,或者风光波动过大的地区

(4)储电加储热:电热都有需求且电波动较大的地区。

(注:程序运行时间比较长,需要足够的耐心)

2 部分代码

%随机生成MT出力clcclear%种群初始化nVar=48;% Lower bound and upper boundlb(1,1:24 )=20;lb(1,25:48 )=-50;ub(1,1:24 )=40;    %把上下边界像单个粒子的位置一样,横向排列ub(1,25:48 )=25;Socmin=50;Socmax=250;GreyWolves_num=500;     MaxIt=5000;  % Maximum Number of Iterations% Initialization   初始化 GreyWolves = zeros( GreyWolves_num ,   nVar+2+2    );    %创建空粒子  for i=1:GreyWolves_num           %首先是MT初始化    for j=1 : nVar/2           GreyWolves(i,j)=  lb(j)+rand()*( ub(j) - lb(j)  );        %加一个向上取整函数,可以方便控制微燃机出力,也方便画图,也方便筛选粒子。        GreyWolves(i,j)=  ceil(GreyWolves(i,j));    end       %下面是储热功率初始化    Soc=100 ;    for j=nVar/2+1 : nVar          GreyWolves(i,j)=  -50+rand()*(50+25 ) ;        %上面是概率生成功率P_BA,没有考虑超出容量限制的问题,下面将解决。        Soc=Soc+GreyWolves(i,j) ;        if   Soc > 250  ||   Soc < 50    %如果越限             Soc=Soc-GreyWolves(i,j) ;  %撤销容量             GreyWolves(i,j) =0;        %撤销功率        end     end      GreyWolves(i,nVar+1:nVar+2)= Double_CC_fitness(GreyWolves(i,1:nVar/2), GreyWolves(i,1+nVar/2:nVar)); end  Archive_num=100;Archive=[];%%% MOGWO main loopfor it=1:MaxIt         a=2-it*((2)/MaxIt);        %首先非支配排序    GreyWolves  = Non_Dominated( GreyWolves ,nVar,2 );    %获取paroto等级为0、1、2的粒子,为选取头狼做准备    Graywolves_rank_0=Get_Graywolves_rank_0(GreyWolves );%     Graywolves_rank_1=Get_Graywolves_rank_1(GreyWolves );%     Graywolves_rank_2=Get_Graywolves_rank_2(GreyWolves );    %将rank_0放进存储库Archive,然后拥挤度排序,选择拥挤度最大的前Archive_num个狼,放进存储库    Archive=[ Archive;               Graywolves_rank_0  ];    Archive  = Non_Dominated( Archive ,nVar,2 );         Archive  =Get_Graywolves_rank_0(Archive );        [Archive ,Alpha,Beta,Delta] = Congestion_rank_select(Archive ,Archive_num) ;     %头狼的选取,首先应该是先0,后1,后2    %其次是尽量选择拥挤度小的    %把整群个体数设置的大一点,确保第一代就极有可能使得存储库大于3只狼%     %先判断0里狼的个数是否超过三只% %     if size(Graywolves_rank_0,1) >= 3%         %拥挤度排序后,选择拥挤度最大的三个%     end    %其次是,利用Alpha、Beta、Delta作为基准位置,对所有粒子进行更新。    for i=1:GreyWolves_num        for  j=1:nVar            r1=rand(); % r1 is a random number in [0,1]            r2=rand(); % r2 is a random number in [0,1]            A1=2*a*r1-a; % 计算系数A,Equation (3.3)            C1=2*r2; % 计算系数C,Equation (3.4)            % Alpha狼位置更新            D_alpha=abs(C1*Alpha(1,j)-GreyWolves(i,j)); % Equation (3.5)-part 1            X1=Alpha(1,j)-A1*D_alpha; % Equation (3.6)-part 1            X1 =   max( [min([  X1, ub(j) ] )  ,lb(j)  ]  );            r1=rand();            r2=rand();            A2=2*a*r1-a; % 计算系数A,Equation (3.3)            C2=2*r2; % 计算系数C,Equation (3.4)            % Beta狼位置更新            D_beta=abs(C1*Beta(1,j )-GreyWolves(i,j)); % Equation (3.5)-part 1            X2=Beta(1,j )-A1*D_beta; % Equation (3.6)-part 1            X2 =   max( [min([  X2, ub(j) ] )  ,lb(j)  ]  );            r1=rand();            r2=rand();             A3=2*a*r1-a; % 计算系数A,Equation (3.3)            C3=2*r2; % 计算系数C,Equation (3.4)            % Delta狼位置更新            D_delta=abs(C1*Delta(1,j )-GreyWolves(i,j )); % Equation (3.5)-part 1            X3=Delta(1,j )-A1*D_delta; % Equation (3.6)-part 1            X3 =   max( [min([  X3, ub(j) ] )  ,lb(j)  ]  );            % 位置更新            GreyWolves(i,j)=(X1+X2+X3)/3;% Equation (3.7)                %下面是位置越限处理            GreyWolves(i,j)=round( GreyWolves(i,j)   );         end        Soc=100;        %因为22点是峰时,23,24点是谷电,并且夜间风大。所以我大概率假设,23,24在充电。        %充电两小时后,为5+2.5*2=10kWh;        %因此,我将日开始Soc设置为10;当时刻容量越限时,容量等于边限,功率等于0;        for  j= 1+nVar/2 : nVar            %首先是把储热放热整定为100的倍数            %上面是概率生成功率P_BA,没有考虑超出容量限制的问题,下面将解决。            Soc=Soc+GreyWolves(i,j) ;            if   Soc > 250  ||   Soc < 50     %如果越限                 Soc=Soc-GreyWolves(i,j) ;  %撤销容量                 GreyWolves(i,j) =0;        %撤销功率            end         end        GreyWolves(i,nVar+1:nVar+2)= Double_CC_fitness(GreyWolves(i,1:nVar/2), GreyWolves(i,1+nVar/2:nVar));        end    figure(1)    Archive_Cost=Archive(:,49);    Archive_Carbon=Archive(:,50);    plot(Archive_Cost,Archive_Carbon,'*' );%     hold on     figure(2)    GreyWolves_Cost=GreyWolves(:,49);    GreyWolves_Carbon=GreyWolves(:,50);    plot(GreyWolves_Cost,GreyWolves_Carbon,'o' );end xlswrite('Archive.xlsx', Archive );

3 程序结果

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

电力程序小学童

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值