【分布式能源的选址与定容】基于多目标粒子群算法分布式电源选址定容规划研究(Matlab代码实现)

这篇具有很好参考价值的文章主要介绍了【分布式能源的选址与定容】基于多目标粒子群算法分布式电源选址定容规划研究(Matlab代码实现)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

💥1 概述

1.1 功率损耗

​编辑1.2 电压质量

1.3 DG总容量

📚2 运行结果

🌈3 Matlab代码实现

🎉4 参考文献


💥1 概述

参考文献:

【分布式能源的选址与定容】基于多目标粒子群算法分布式电源选址定容规划研究(Matlab代码实现),分布式,能源,算法

本文采用的是换一个算法解决, 基于基于多目标粒子群算法分布式电源选址定容规划研究。

将可再生能源的分布式发电技术与大电网结 合,是 普 遍 公认的节能减排、绿色 环 保、安全可靠的电力系统运行方式, 是电力发展的方向。分布式电源(DG)是指在一定的地域范围内,以分散方式布置在用户附近, 与环境兼容的小型模块化发电单元,其发电功率为几千瓦到 几十兆瓦。

分布式发电系统目前大多与配电网并网运行。DG 入 电 网后,会对配电网的潮流分布产生影响,进而可以优化配电网 络,缓解配电网输 配 用 电 压 力。但 是 由 于 DG 的 投 入 和 退出有很大的随 机 性,且输出功率的稳定性易受环境影响,因此,DG的不当接入会对电网产生诸多负面影响,如 影 响 配 电网的稳定性及电压质量,产 生 谐 波 等。这 些 影 响 的 大 小 与DG的容量和接入位置有很大关,因此,DG 的选址定容是在 DG规划阶段中需要考虑的重点问题。

由于规划的优化目标较为单一,传 统 的 规 划 方 法 无 法 很 好地解决这一问题。近 年 来,考 虑 电 压、电流质量和环境等因素的多目标优化迅速发展,但量纲的不统一,使得求解的复杂性大大提高,给多目标优化提出了新的挑战。本文在 研究标准粒子群优化算法的基础上,针 对 配 电 网 中 DG 的 选址定容问题,建立了包括有功率损耗、电压质量及接入 DG 的总容量为目标函数的数学模型,基于多目标粒子群算法分布式电源选址定容规划研究,用Matlab解决之。

1.1 功率损耗

电能在从发电端传输到负载端的过程中,输电线路上产生的电能损耗不可址 见,只议r地减小有功功率损耗,提理地配置配电网中的 DG,可以有效地减小有功功率损耗,提高发电利用率,节约能量。基于有功功率损耗的目标函数最优数学表达式为:

1.2 电压质量

 某些状况下,电力系统在遭受干扰后的几秒或几分钟内,系统中的某些母线电压可能经历大幅度﹑持续性降低,从而使得系统的完整性遭到破坏,功率不能正常地传送给用户。这种灾变称为系统电压不稳定﹐其灾难后果则是电压崩溃。通常用静态电压稳定指标来表示系统电压稳定性。配电网中电
压质量受配电系统的电压稳定性影呵。今乂术用能T网P电压基于期望电压的方差来描述电压质量。基于电压质量的目标函数最优数学表达式为:

【分布式能源的选址与定容】基于多目标粒子群算法分布式电源选址定容规划研究(Matlab代码实现),分布式,能源,算法

1.3 DG总容量

在实际应用中不仅要考虑改善电网带来的经济效应,还需要考虑DG安装、运行和维护的成本费用问题。本文中不涉及经济模型,仅考虑接入配电网的DG总容量。基于DG总容量的目标函数最优数学表达式为:
【分布式能源的选址与定容】基于多目标粒子群算法分布式电源选址定容规划研究(Matlab代码实现),分布式,能源,算法

📚2 运行结果

【分布式能源的选址与定容】基于多目标粒子群算法分布式电源选址定容规划研究(Matlab代码实现),分布式,能源,算法

🌈3 Matlab代码实现

部分代码:

%% 雅可比矩阵
J=[jpt jpv; jqt jqv];
X = (inv(J))*M;%偏差
%% 相位偏差
dTh = X(1:nbus-1);
%% 电压偏差
dV = X(nbus:end);
[e1,d1,n1]=eig(JR);%计算矩阵A的特征值和特征向量的函数是eig(A)[V,D,W] = eig(A),[V,D,W] = eig(A)返回满矩阵 W,其列是对应的左特征向量,使得 W’A = DW’。
%diag(A),若A是一个矩阵,则diag函数的作用是产生提取矩阵的对角线;若a是一个向量,则diag函数的作用是产生一个对角线为a的矩阵
%% 目标2 电压稳定性
f2val=max(1./diag((d1)))*max(abs(dQ));%目标2,稳定性
del(2:nbus) = dTh + del(2:nbus);
k = 1;
for i = 2:nbus
    if type(i) == 3
        V(i) = dV(k) + V(i);
        k = k+1;
    end
end
%% 目标2和目标3
tval=sum(1./diag((d1)));
po_val=flow_cal(nbus,V,del,BMva);
f1val=sum(po_val);%各支路网损和
f3val=sum(datain(5:8));%DG容量和

fout=[f1val; f2val; f3val];

for i = 1 : N
    % Number of individuals that dominate this individual
    individual(i).n = 0;
    % Individuals which this individual dominate
    individual(i).p = [];
    for j = 1 : N
        dom_less = 0;
        dom_equal = 0;
        dom_more = 0;
        for k = 1 : M
            if (x(i,V + k) < x(j,V + k))
                dom_less = dom_less + 1;
            elseif (x(i,V + k) == x(j,V + k))
                dom_equal = dom_equal + 1;
            else
                dom_more = dom_more + 1;
            end
        end
        if dom_less == 0 && dom_equal ~= M   %大于等于的情况
            individual(i).n = individual(i).n + 1;
        elseif dom_more == 0 && dom_equal ~= M   %小于等于的情况
            individual(i).p = [individual(i).p j];
        end
    end   
    if individual(i).n == 0
        x(i,M + V + 1) = 1;
        F(front).f = [F(front).f i];
    end
end
% Find the subsequent fronts
while ~isempty(F(front).f)
   Q = [];
   for i = 1 : length(F(front).f)
       if ~isempty(individual(F(front).f(i)).p)
          for j = 1 : length(individual(F(front).f(i)).p)
              individual(individual(F(front).f(i)).p(j)).n = ...
                  individual(individual(F(front).f(i)).p(j)).n - 1;
               if individual(individual(F(front).f(i)).p(j)).n == 0
                   x(individual(F(front).f(i)).p(j),M + V + 1) = ...
                        front + 1;
                    Q = [Q individual(F(front).f(i)).p(j)];
                end
            end
       end
   end
   front =  front + 1;
   F(front).f = Q;
end

[temp,index_of_fronts] = sort(x(:,M + V + 1));
for i = 1 : length(index_of_fronts)
    sorted_based_on_front(i,:) = x(index_of_fronts(i),:);
end
current_index = 0;

%% Crowding distance
%The crowing distance is calculated as below
% ?For each front Fi, n is the number of individuals.
%   ?initialize the distance to be zero for all the individuals i.e. Fi(dj ) = 0,
%     where j corresponds to the jth individual in front Fi.
%   ?for each objective function m
%       * Sort the individuals in front Fi based on objective m i.e. I =
%         sort(Fi,m).
%       * Assign infinite distance to boundary values for each individual
%         in Fi i.e. I(d1) = ? and I(dn) = ?
%       * for k = 2 to (n ? 1)
%           ?I(dk) = I(dk) + (I(k + 1).m ? I(k ? 1).m)/fmax(m) - fmin(m)
%           ?I(k).m is the value of the mth objective function of the kth
%             individual in I

% Find the crowding distance for each individual in each front
for front = 1 : (length(F) - 1)
%    objective = [];
    distance = 0;
    y = [];
    previous_index = current_index + 1;
    for i = 1 : length(F(front).f)
        y(i,:) = sorted_based_on_front(current_index + i,:);
    end
    current_index = current_index + i;
    % Sort each individual based on the objective
    sorted_based_on_objective = [];
    for i = 1 : M
        [sorted_based_on_objective, index_of_objectives] = ...
            sort(y(:,V + i));
        sorted_based_on_objective = [];
        for j = 1 : length(index_of_objectives)
            sorted_based_on_objective(j,:) = y(index_of_objectives(j),:);
        end
        f_max = ...
            sorted_based_on_objective(length(index_of_objectives), V + i);
        f_min = sorted_based_on_objective(1, V + i);
        y(index_of_objectives(length(index_of_objectives)),M + V + 1 + i)...
            = Inf;
        y(index_of_objectives(1),M + V + 1 + i) = Inf;
         for j = 2 : length(index_of_objectives) - 1
            next_obj  = sorted_based_on_objective(j + 1,V + i);
            previous_obj  = sorted_based_on_objective(j - 1,V + i);
            if (f_max - f_min == 0)
                y(index_of_objectives(j),M + V + 1 + i) = Inf;
            else
                y(index_of_objectives(j),M + V + 1 + i) = ...
                     (next_obj - previous_obj)/(f_max - f_min);
            end
         end
    end
    distance = [];
    distance(:,1) = zeros(length(F(front).f),1);
    for i = 1 : M
        distance(:,1) = distance(:,1) + y(:,M + V + 1 + i);
    end
    y(:,M + V + 2) = distance;
    y = y(:,1 : M + V + 2);
    z(previous_index:current_index,:) = y;
end
f = z();

🎉4 参考文献

部分理论来源于网络,如有侵权请联系删除。

[1]周洋,许维胜,王宁,邵炜晖.基于改进粒子群算法的多目标分布式电源选址定容规划[J].计算机科学,2015,42(S2):16-18+31. 

[2]冯元元. 基于多目标规划的分布式发电选址定容研究[D].华北电力大学,2015.  

[3]杨智君. 基于群智能算法的分布式电源选址与定容[D].太原科技大学,2019.DOI:10.27721/d.cnki.gyzjc.2019.000065.文章来源地址https://www.toymoban.com/news/detail-617893.html

到了这里,关于【分布式能源的选址与定容】基于多目标粒子群算法分布式电源选址定容规划研究(Matlab代码实现)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于多目标粒子群算法的配电网储能选址定容(含MATLAB程序)

    一、主要内容 程序是对文章《基于多目标粒子群算法的配电网储能选址定容》的方法复现,具体内容如下: 以系统节点电压水平(电网脆弱性)、网络损耗以及储能系统总容量 为目标建立了储能选址定容优化模型。求解过程中提出了一 种改进多目标粒子群算法(improved mult

    2024年02月02日
    浏览(41)
  • 2.文章复现《热电联产系统在区域综合能源系统中的定容选址研究》(附matlab程序)

    0. 代码链接 matlab程序《计及调度经济性的光热电站储热容量配置方法》文章复现资源-CSDN文库 1. 简述         光热发电是大规模利用太阳能的新兴方式,其储热系 统能够调节光热电站的出力特性,进而缓解光热电站并网带来的火电机组调峰问题。合理配置光热电站储热容量

    2024年02月10日
    浏览(46)
  • 【能量管理系统( EMS )】基于粒子群算法对光伏、蓄电池等分布式能源DG进行规模优化调度研究(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 能量管理

    2024年02月15日
    浏览(52)
  • MATLAB|考虑自动重合闸与分布式能源的配电网可靠性评估研究

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 ​ 🎉3 参考文献 🌈4 Matlab代码、数据、文

    2024年02月13日
    浏览(50)
  • 基于粒子群优化算法的配电网光伏储能双层优化配置模型[IEEE33节点](选址定容)(Matlab代码实现)

    目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码、数据、讲解 由于能源的日益匮乏,电力需求的不断增长等,配电网中分布式能源渗透率不断提高,且逐渐向主动配电网方向发展。此外,需求响应(demand response,DR)的加入对配电网的规划运行也带来了新的因素[1-2]。

    2024年02月14日
    浏览(42)
  • 多传感器分布式融合算法——多传感器网络协同目标跟踪和定位

    应用: 原创不易,路过的各位大佬请点个赞 主要讲解算法:          多传感器集中式融合算法/分布式融合算法/序贯融合算法          多速率多传感器异步融合算法          多传感器网络分布式一致滤波 应用于: 多传感器网络协同跟踪/定位/导航 联系WX: ZB823618313    

    2024年01月20日
    浏览(50)
  • 【分布式训练】基于Pytorch的分布式数据并行训练

    简介: 在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练 加速神经网络训练的最简单方法是使用GPU,它在神经网络中常见的计算类型(矩阵乘法和加法)上提供了比CPU更大的加速。随着模型或数据集变得越来越大,一个GPU很快就会变得不足。例如,像BERT和GPT-2这样的

    2024年02月17日
    浏览(49)
  • 【分布式训练】基于PyTorch进行多GPU分布式模型训练(补充)

    简介: 在PyTorch中使用DistributedDataParallel进行多GPU分布式模型训练。 原文链接:https://towardsdatascience.com/distributed-model-training-in-pytorch-using-distributeddataparallel-d3d3864dc2a7 随着以ChatGPT为代表的大模型的不断涌现,如何在合理的时间内训练大模型逐渐成为一个重要的研究课题。为了解

    2024年02月16日
    浏览(44)
  • 分布式锁实现方案-基于zookeeper的分布式锁实现(原理与代码)

    目录 一、基于zookeeper的分布式锁 1.1 基于Zookeeper实现分布式锁的原理 1.1.1 分布式锁特性说明 1.1.1.1 特点分析 1.1.1.2 本质 1.1.2 Zookeeper 分布式锁实现原理 1.1.2.1 Zookeeper临时顺序节点特性 1.1.2.2 Zookeeper满足分布式锁基本要求 1.1.2.3 Watcher机制 1.1.2.3 总结 1.2 分布式锁流程说明 1.2.1

    2024年04月24日
    浏览(38)
  • 基于zookeeper实现分布式锁

    目录 zookeeper知识点复习 相关概念 java客户端操作 实现思路分析  基本实现 初始化链接 代码落地  优化:性能优化  实现阻塞锁 监听实现阻塞锁 优化:可重入锁 zk分布式锁小结  Zookeeper(业界简称zk)是一种提供配置管理、分布式协同以及命名的中心化服务,这些提供的 功

    2024年02月02日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包