(文章复现)基于改进秃鹰算法的微电网群经济优化调度研究

参考文献:

[1]周辉,张玉,肖烈禧,等.基于改进秃鹰算法的微电网群经济优化调度研究[J].太阳能学报,2024,45(02):328-335.

1.基本原理

        微电网群由3个独立的微电网(microgrid , MG)组成,各微电网内部包含光伏(photovoltaic , PV)、风力发电机(windturbine,WT)、电动汽车(electric vehicle,EV)、微型燃气轮机( microturbine, MT)、储能电池(battery , BT)及负荷,通过能量管理中心实现彼此之间电能交互及向配电网买卖电,如图1所示。

1.1 微电网系统模型

1.1.1 微型燃气轮机

1.2.2 储能系统

1.2.3 电动汽车负荷

1.2目标函数

        考虑微电网群系统运行成本及环境成本,构建微电网群经济优化调度模型,其中运行成本包括可控分布式发电单元的发电成本、设备运行维护成本、BT 运行成本、电能交易成本;环境成本为 CO2、SO2、NOx污染物气体的排放惩罚成本,以微电网群系统总运行成本为目标函数进行优化调度。

1.2.1 运行成本

1.2.2 环境成本

1.3约束条件

1.3.1 系统功率平衡约束

1.4.2 MT 爬坡功率约束

1.4.3 BT 约束

1.4.4 MG 之间交互功率约束

1.4.5 MG 与配电网之间交互功率约束

2.求解方法 

2.1基本秃鹰搜索算法

        BES 是一种针对秃鹰狩猎行为提出的自然启发式算法,包含选择搜索空间、搜索猎物及俯冲3个阶段 。

2.1.1 选择搜索空间阶段

        该阶段秃鹰根据猎物数量随机选择搜索区域,飞到当前最优个体附近,计算公式为:

2.1.2 搜索猎物阶段

        该阶段秃鹰在选定的搜索空间内螺旋飞行,加速搜索猎物,计算公式为:

2.1.3 俯冲阶段

        该阶段秃鹰从当前最优位置以螺旋飞行的方式冲向猎物,计算公式为:

2.2改进秃鹰搜索算法

2.2.1 反向学习

        反向学习可根据当前解获得相对中心的反向解,通过对比二者保留更好的解,从而扩大算法寻优范围,计算公式为:

2.2.2 柯西变异

        柯西分布产生的随机数分布范围较广,可有效提高算法的全局搜索能力,跳出局部最优。柯西分布函数为:

2.2.3 融合反向学习和柯西变异策略

        综上所述,在秃鹰算法搜索猎物空间步骤中,通过反向学习扩大秃鹰算法搜索范围,并采用柯西变异跳出局部最优,两者通过选择概率 P 来决定执行,计算公式为:

2.2.4 算法步骤

        综上所述,本文提出的 IBES 流程如图 2 所示。

3.编程思路分析

3.1相关参数和决策变量定义

1 相关参数的定义

2 决策变量的定义

3.2编程思路

        根据对文献内容的解读,可以设计下面的编程思路:

步骤1:输入所需数据

        这一步比较简单。算例分析用到的部分数据可以从原文中找到,其他数据可以自己假设一下。然后将所有需要的数据,按照表1的定义格式输入即可。

步骤2改进秃鹰搜索算法的实现

        实现基本的秃鹰搜索算法和改进秃鹰搜索算法,并使用文中提到的四个测试函数进行验证。文中所提供基准测试函数中,f3和f4都存在问题,其中测试函数f3的公式表述不清,测试函数f4没有提供参数aij的取值。因此我在标准测试函数中随便找了两个当作测试函数。

步骤3将改进秃鹰搜索算法用于微网调度问题

        如表2所示,原文中共包含4个决策变量,都是3×24的变量,也就是说决策变量的总数是3×24×4=288,需要将其组合成一个1×288的变量,便于使用改进秃鹰搜索算法求解,也就意味中文中涉及的优化问题维度为288,具体变量设置如下:

        智能优化算法中对于约束条件的处理有很多种形式,我在代码中使用罚函数法进行处理,即将不满足约束的部分作为惩罚添加到目标函数中。

        此外,文献中忽略了MG之间的交互功率总和需要为0这一约束,也就是下面的公式:

        不加上这一项约束的话,MG之间交互功率即使都为正,也是满足文中所提到的约束,但很明显是不符合实际情况的。另外,如果只遵循上下限约束生成初始种群,可能导致生成的种群中大部分甚至全部的个体都是不满足约束的,因此生成种群和更新种群时,还是要满足一定规则,使得生成的种群尽可能都满足约束。

步骤4输出运行结果

        参考文中的图表的格式,输出结果即可。

4.Matlab代码


%% 设置种群参数
sizepop = 40;                       % 初始种群个数
dim = 10;                           % 空间维数
ger = 500;                          % 最大迭代次数   
% 选择适应度函数
[xmax0, xmin0, fun] = Select_fitnessfun(fitnesfun);
x_max = xmax0*ones(1,dim);          % 位置上限
x_min = xmin0*ones(1,dim);          % 位置下限
v_max = x_max*0.5;                  % 速度上限
v_min = -x_max*0.5;                 % 速度下限
a = 2;                              % 位置变化参数
a1 = 10;                            % 搜索点之间角的参数
R = 1.5;                            % 搜索周期数
c1 = 1.8;                           % 增加秃鹰移动强度的随机数
c2 = 1.8;                           % 增加秃鹰移动强度的随机数
[x,y] = polr(a,R,sizepop);          % 搜索猎物阶段的参数    
[x1,y1]=swoo_p(a,R,sizepop);        % 俯冲阶段的参数

%% 种群初始化
pop = x_min + rand(sizepop,dim).*(x_max-x_min);     % 初始化种群
pop_v = v_min + rand(sizepop,dim).*(v_max-v_min);   % 初始化种群速度        
pop_best = pop(1,:);                                % 初始化群体最优位置
fitness = zeros(1,sizepop);                         % 所有个体的适应度
fitness_best = inf;                                 % 初始化群体最优适应度

%% 初始的适应度
for k = 1:sizepop
    % 计算适应度值
    fitness(k) = fun(pop(k,:));
    if fitness(k) < fitness_best
        fitness_best = fitness(k);
        pop_best = pop(k,:);
    end
end
history_BES = zeros(1,ger);                         % BES历史最优适应度值
%% 迭代求最优解
iter = 1;
while iter <= ger
    for k = 1:sizepop
        % 1.选择搜索空间阶段
        pop_new = pop_best + 2*rand(1,dim).*(mean(pop) - pop(k,:));
        fitness_new = fun(pop_new);
        if fitness_new < fitness(k)
            fitness(k) = fitness_new;
            pop(k,:) = pop_new;
        end
        
        % 2.搜索猎物阶段
        if k <= sizepop - 1
            pop_new = pop(k,:) + y(k)*(pop(k,:) - pop(k + 1,:)) + x(k)*(pop(k,:) - mean(pop));
            fitness_new = fun(pop_new);
            if fitness_new < fitness(k)
                fitness(k) = fitness_new;
                pop(k,:) = pop_new;
            end
        end
        
        % 3.俯冲阶段
        pop_new = rand(1,dim).*pop_best + x(k)*(pop(k,:) - c1*mean(pop)) + y(k)*(pop(k,:) - c2*pop_best);
        fitness_new = fun(pop_new);
        if fitness_new < fitness(k)
            fitness(k) = fitness_new;
            pop(k,:) = pop_new;
        end
        
        % 更新位置并对位置进行边界处理
        for kk = 1:dim
            if  pop(k,kk) > x_max(kk)
                pop(k,kk) = x_max(kk);
            end
            if  pop(k,kk) < x_min(kk)
                pop(k,kk) = x_min(kk);
            end
        end
        
        % 更新种群最优
        if fitness(k) < fitness_best
            fitness_best = fitness(k);
            pop_best = pop(k,:);
        end
    end
    history_BES(iter) = fitness_best;
    iter = iter+1;
end
% time0 = toc;
% disp(['运行时间为:',num2str(time0) , '秒'])
% disp(['最优解:x=',num2str(pop_best)])
% disp(['最优函数值=',num2str(fitness_best)])
% plot(history_BES,'linewidth',1)
% ylabel('最优适应度值')
% xlabel('迭代次数')


function [xR,yR] = swoo_p(a,R,N)
th = a*pi*exp(rand(N,1));
xR = R.*sinh(th);
yR = R.*cosh(th);
xR = xR/max(abs(xR));
yR = yR/max(abs(yR));
end

function [xR,yR] = polr(a,R,N)
th = a*pi*rand(N,1);
r = th+R*rand(N,1);
xR = r.*sin(th);
yR = r.*cos(th);
xR = xR/max(abs(xR));
yR = yR/max(abs(yR));
end

        以上仅为基本秃鹰搜索算法的matlab代码主函数部分,完整论文复现的matlab代码可以从这个链接获取:

(文章复现)基于改进秃鹰算法的微电网群经济优化调度研究的matlab代码资源-CSDN文库

5.运行结果

  • 43
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 电网日前经济调度数据集.csv是一个数据文件,用于记录电网系统在日前进行经济调度时的相关数据。这个数据集包含了各种与经济调度相关的信息,可以帮助我们分析和了解电网系统的运行情况。 首先,这个数据集包含了电网系统的基本信息,如系统的名称、编号等。通过这些信息,我们可以对不同电网系统进行分类和比较。 其次,数据集还包括了电网系统的负荷信息。负荷是指电网系统在运行过程中需要供应的电能。负荷信息可以告诉我们电网系统的用电量大小,以及用电量的分布情况。通过分析负荷信息,我们可以了解不同电网系统在经济调度中的负荷特点,为系统的运行提供参考。 此外,数据集中还包含了电网系统的发电信息。发电是指电网系统自身产生的电能。通过分析发电信息,我们可以了解电网系统的发电能力和发电成本等。这些信息对于经济调度至关重要,可以帮助我们优化电网系统的发电策略,实现经济性和可持续性的平衡。 最后,数据集还可能包含一些其他与经济调度相关的信息,如电价、能源存储等。这些信息可以帮助我们更好地了解电网系统的运行环境,以及在经济调度中需要考虑的因素。 总之,电网日前经济调度数据集.csv是一个重要的数据资源,通过分析这些数据,我们可以深入了解电网系统的运行情况和经济调度策略,为电网系统的优化和发展提供支持。 ### 回答2: 电网日前经济调度数据集.csv是一个包含经济调度数据的文件。电网是指由多个分布式能源资源(如太阳能光伏、风能、储能等)组成的小型电网系统,其能够实现自主供电、自主调度的功能。 这个数据集中的信息包括了电网的日前经济调度数据。经济调度是指在给定的电力需求和可再生能源资源的情况下,通过优化调度方案来实现最低成本的电力供应。这些数据包括了各种与调度相关的信息,如发电设备的运行状态、发电能力、电力需求等。 通过对这些数据进行分析,可以获得电网系统的运行状态和效能情况。可以了解到电网中各种能源资源的产生和消耗情况,从而对电网运行进行优化和管理。此外,这些数据还可以用于分析电力需求预测的准确性,以及调度算法的效果评估等。 通过对电网日前经济调度数据集.csv的挖掘,我们可以改善电网运行效率,有效利用可再生能源资源,减少对传统能源的依赖,降低能源成本和环境污染。这些数据也可以为未来电网的规划和建设提供参考和指导,以实现更可持续、高效的能源供应系统。 ### 回答3: 电网日前经济调度数据集.csv是一个包含了电网系统在日前经济调度过程中的相关数据的文件。在能源管理和运营中,经济调度是指根据各种因素(如负荷需求、能源供应、成本等)对能源系统进行优化调度,以实现最佳的经济性和可靠性。 这个数据集可以提供一些关键的信息,帮助分析人员进行电网系统的性能评估和优化研究。其中可能包含的数据包括: 1. 负荷需求数据:记录了电网系统在不同时间段内的负荷需求,这可以帮助分析人员评估系统的负荷情况,了解负荷峰谷和负荷波动情况。 2. 能源供应数据:包括不同能源源的供应情况,如太阳能、风能、储能等。这些数据可以用来分析系统的能源供应能力,评估能源的可靠性和可持续性。 3. 成本数据:记录了电网系统在经济调度过程中的成本情况,可能包括能源采购成本、输电成本、能源储存成本等。这些成本数据对于评估系统的经济性非常关键。 分析人员可以通过对这些数据的统计分析和建模,来优化电网经济调度策略。例如,可以通过数据分析来确定最佳的能源调度方式,以降低系统的能源采购成本;还可以基于负荷需求数据,优化能源储存和供应策略,提高系统的可靠性和可持续性。 总之,电网日前经济调度数据集.csv是一个重要的信息源,可以帮助分析人员了解电网系统的负荷情况、能源供应情况和成本情况,从而为电网系统的性能评估和优化研究提供有力的支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

配电网和matlab

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

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

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

打赏作者

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

抵扣说明:

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

余额充值