基于改进粒子群算法的多目标分布式电源选址定容规划(附带Matlab代码)

       通过分析分布式电源对配电网的影响,以有功功率损耗、电压质量及分布式电源总容量为优化目标,基于模糊理论建立了分布式电源在配电网中选址定容的多目标优化模型,并提出了一种改进粒子群算法进行求解。在算例仿真中,基于IEEE-14标准节点系统,采用MATLAB仿真工具对所提算法进行了测试,证实了所提算法全局搜索能力较强、收敛速度较快,并通过比较分析验证了该模型和算法的可行性及有效性。

 1.含DG的配电网潮流计算

      连接到配电网的 DG所采用的模型既可简化为 PV节点,也可以是PQ节点。本文将其当成具有恒定功率因数的PQ节点,由于DG 的位置一般靠近负荷中心,因此假设DG的位置就在负荷节点上。DG接入负荷节点的模型如下图所示,只需考虑改变接入DG 节点的负载功率变化即可。

       建立了DG接入配电网模型后,便可以根据相应的节点发电负载功率参数和配电网线路参数进行潮流计算,进而得到配电网中各个节点的电压以及功率分布。本文在算例仿真过程中采用牛顿拉夫逊法进行潮流计算,该方法具有良好的线性收敛性能。

2.基于改进粒子群优化算法多目标优化的DG选址定容的流程

3.仿真代码

clc;
clear;
close all;
nbus=14;
V=without_DG_process(nbus);%初始电压
voltval1=V;
%% 设置种群迭代参数
iter_max=100;        %迭代次数    
no_of_pop=100;       %种群数量 
prop_crsval=0.7;    %交叉概率
no_of_crs=2*round(prop_crsval*no_of_pop/2);  prop_mutval=0.3;    %突变概率                          
no_of_mut=round(prop_mutval*no_of_pop);   
mu=0.02;   
sigma=2;
% runpf(case14)
% mpc=case14;
% mpc.branch ;linedt =bus_line_data(14);%% 初始化种群
int_tmp_pop.Position=[];
int_tmp_pop.Cost=[];
int_tmp_pop.Rank=[];
int_tmp_pop.DominationSet=[];
int_tmp_pop.DominatedCount=[];
int_tmp_pop.CrowdingDistance=[];% 拥挤度
%储存每次迭代结果
population_func_data=repmat(int_tmp_pop,no_of_pop,1);
%B = repmat(A,m,n),将矩阵 A 复制 m×n 块,即把 A 作为 B 的元素,B 由 m×n 个 A 平铺而成。B 的维数是 [size(A,1)*m, size(A,2)*n] 。
%% dg位置与容量约束
minval1=1;     %dg位置
maxval1=nbus;  %dg位置,在1-14节点中
minval2=0;     %dg容量
maxval2=50;    %dg容量
no_of_dg=4;    %dg数量%% randsrc函数,无参数形式,随机输出
for locm=1:no_of_pop%产生变量,随机生成dg位置与容量,population_func_data(locm).Position=[randsrc(1,no_of_dg,minval1:maxval1) randsrc(1,no_of_dg,minval2:maxval2)];%计算出随机生成对应位置与容量情况下的目标函数值population_func_data(locm).Cost=feed_power(nbus,population_func_data(locm).Position);end
[population_func_data, rankval]=non_dominate_sorting_process(population_func_data);%% 非支配种群排序过程
population_func_data=cal_crown_dist(population_func_data,rankval);%% 计算种群拥挤度
[population_func_data, rankval]=sort_process(population_func_data);%% 排序过程
%% 迭代
for iter=1:iter_max%% 种群交叉population_cross=repmat(int_tmp_pop,no_of_crs/2,2);%B = repmat(A,m,n),将矩阵 A 复制 m×n 块,即把 A 作为 B 的元素,B 由 m×n 个 A 平铺而成。B 的维数是 [size(A,1)*m, size(A,2)*n] 。for k=1:no_of_crs/2loc1=randi([1 no_of_pop]);loc1_data=population_func_data(loc1);loc2=randi([1 no_of_pop]);loc2_data=population_func_data(loc2);[population_cross(k,1).Position, population_cross(k,2).Position]=cross_over_process(loc1_data.Position,loc2_data.Position,minval1,maxval1,minval2,maxval2);population_cross(k,1).Cost=feed_power(nbus,population_cross(k,1).Position);population_cross(k,2).Cost=feed_power(nbus,population_cross(k,2).Position);endpopulation_cross=population_cross(:);%% 种群变异population_mute=repmat(int_tmp_pop,no_of_mut,1);for k=1:no_of_mutlocm=randi([1 no_of_pop]);data_locm=population_func_data(locm);population_mute(k).Position=mutation_process(data_locm.Position,mu,sigma,minval1,maxval1,minval2,maxval2);population_mute(k).Cost=feed_power(nbus,population_mute(k).Position);end%% 完成筛选population_func_data=[population_func_data;population_cross;population_mute]; [population_func_data, rankval]=non_dominate_sorting_process(population_func_data);population_func_data=cal_crown_dist(population_func_data,rankval);population_func_data=sort_process(population_func_data);population_func_data=population_func_data(1:no_of_pop);[population_func_data, rankval]=non_dominate_sorting_process(population_func_data);population_func_data=cal_crown_dist(population_func_data,rankval);[population_func_data, rankval]=sort_process(population_func_data);resout_final=population_func_data(rankval{1});res1=[resout_final.Cost];plot3(res1(1,:),res1(2,:), res1(3,:),'b*')
xlabel('1网损')
ylabel('2电压稳定性')
zlabel('3容量和')
grid on
hold off
title('目标优化结果')
drawnowend
%% 结果输出
datart=resout_final(end).Position;
%最优变量,位置和容量
DG_LOCATION=datart(1:4)
DG_UNIT_SIZE=datart(5:8)
load resg.mat 
POWER_LOSSES_WITH_DG=POWER_LOSSES
STABILITY_INDEX_WITH_DG=STABILITY_INDEX;%稳定性指数
voltval2=V;
EIGEN_VALUE=diag(d1).';%特征值
%% 画图
figure,plot(1:nbus,voltval1,'p-s','linewidth',2);
hold on,
plot(1:nbus,voltval2,'b-s','linewidth',2);
grid on;
legend('无DG时电压分布','有DG时电压分布');
xlabel('节点');
ylabel('电压幅值/pu');

4.仿真算例与结果分析仿真

      在算例仿真中,基于IEEE-14标准节点系统,采用MATLAB仿真工具对所提算法进行了测试,证实了所提算法全局搜索能力较强、收敛速度较快,并通过比较分析验证了该模型和算法的可行性及有效性。

代码地址:

基于改进粒子群算法的多目标分布式电源选址定容规划

参考论文:

基于改进粒子群算法的多目标分布式电源选址定容规划

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/43249.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

26_ajax

目录 了解 接口 前后端交互 一、安装服务器环境 nodejs ajax发起请求 渲染响应结果 get方式传递参数 post方式传递参数 封装ajax_上 封装ajax下 了解 清楚前后端交互就可以写一些后端代码了。小项目 现在写项目开发的时候都是前后端分离 之前都没有前端这个东西&a…

OJ题:移动零

双指针法 c 语言实现 void moveZeroes(int* nums, int numsSize) {int dest,cur; //创建临时指针和目标指针destcur0;//出初始化while(cur<numsSize)//遍历{if(nums[cur]!0){swap(&nums[cur],&nums[dest]);cur;dest;}else{cur;}}} 思路是建立两个指针&#xff0…

Kubernetes对象基础操作

基础操作 文章目录 基础操作一、创建Kubernetes对象1.使用指令式命令创建Deployment2.使用指令式对象配置创建Deployment3.使用声明式对象配置创建Deployment 二、操作对象的标签1.为对象添加标签2.修改对象的标签3.删除对象标签4.操作具有指定标签的对象 三、操作名称空间四、…

命悬生死线:当游戏遭遇DDoS围剿,如何用AI破局?

文章作者&#xff1a;腾讯宙斯盾DDoS防护团队 一、血色战场&#xff1a;DDoS攻击游戏产业的致命瞬间 全球黑色星期五 这是一场波及全球的“黑色星期五”&#xff0c;起初无人察觉&#xff0c;包括小林。 他刚下班到家就迫不及待打开电脑&#xff0c;准备体验期待已久的《黑神话…

【数据结构】[特殊字符] 并查集优化全解:从链式退化到近O(1)的性能飞跃 | 路径压缩与合并策略深度实战

并查集的优化 导读一、合并优化1.1 基本原理1.2 按大小合并1.3 按秩合并1.4 两种合并的区别**1.4.1 核心目标****1.4.2 数据存储****1.4.3 合并逻辑****1.4.4 树高控制****1.4.5 适用场景****1.4.6 路径压缩兼容性****1.4.7 极端案例对比****1.4.8 小结**二、查找优化2.1 路径压…

[python]基于yolov12实现热力图可视化支持图像视频和摄像头检测

YOLOv12 Grad-CAM 可视化工具 本工具基于YOLOv12模型&#xff0c;结合Grad-CAM技术实现目标检测的可视化分析&#xff0c;支持图像、视频和实时摄像头处理。 注意 该项目使用的是yolov12-1.0模型进行测试通过&#xff0c;不是使用turbo模型&#xff0c;且由于yolov12-1.0由于…

进程Kill杀死后GPU显存没有释放仍然被占用,怎么杀死僵尸进程

参考链接&#xff1a; https://blog.csdn.net/qq_37591986/article/details/131118109 使用下面的命令&#xff1a; fuser -v /dev/nvidia0 | awk {print $0} | xargs kill -9一般来说他会杀掉整个用户的所有进程。

基于飞腾/龙芯+盛科CTC7132全国产交换机解决方案

产品介绍 盛科CTC7132,内置ARM-Cortex A53 主频1.2GHz&#xff1b;支持24个千兆电口&#xff0c;24个万兆光口&#xff08;850nm多模&#xff09;&#xff0c;1个千兆管理网口&#xff0c;1个管理串口&#xff1b;支持1个百兆健康管理网口&#xff1a;用于设备端口状态、电压、…

Tesseract OCR技术初探(Python调用)

一、Tesseract OCR技术解析 1.1 核心架构与发展历程 Tesseract是由HP实验室于1985年研发的光学字符识别引擎&#xff0c;2005年由Google开源并持续维护至今。其核心技术经历了三个阶段演进&#xff1a; 传统模式&#xff08;v3.x&#xff09;&#xff1a;基于特征匹配算法&a…

自动语音识别(ASR)技术详解

语音识别&#xff08;Automatic Speech Recognition, ASR&#xff09;是人工智能和自然语言处理领域的重要技术&#xff0c;旨在将人类的语音信号转换为对应的文本。近年来&#xff0c;深度学习的突破推动语音识别系统从实验室走入日常生活&#xff0c;为智能助手、实时翻译、医…

Cursor 汉化教程

# 问题 想把 cursor 改成中文 我这里是汉化过的 # 【第一种方法】安装插件 然后重启 # 【第二种方法】Ctrl Shift P 打开配置项 然后搜索输入 Configure Display Language 点一下 切换到 zh-cn 重启 cursor 即可 重启后就好了~

用 pytorch 从零开始创建大语言模型(三):编码注意力机制

从零开始创建大语言模型&#xff08;Python/pytorch &#xff09;&#xff08;三&#xff09;&#xff1a;编码注意力机制 3 编码注意力机制3.1 建模长序列的问题3.2 使用注意力机制捕捉数据依赖关系3.3 通过自注意力关注输入的不同部分3.3.1 一个没有可训练权重的简化自注意力…

Linux之基础知识

目录 一、环境准备 1.1、常规登录 1.2、免密登录 二、Linux基本指令 2.1、ls命令 2.2、pwd命令 2.3、cd命令 2.4、touch命令 2.5、mkdir命令 2.6、rmdir和rm命令 2.7man命令 2.8、cp命令 2.9、mv命令 2.10、cat命令 2.11、echo命令 2.11.1、Ctrl r 快捷键 2…

Java学习------源码解析之StringBuilder

1. 介绍 String中还有两个常用的类&#xff0c;StringBuffer和StringBuilder。这两个类都是专门为频繁进行拼接字符串而准备的。最先出现的是StringBuffer&#xff0c;之后到jdk1.5的时候才有了StringBuilder。 2. StringBuilder解析 从这张继承结构图可以看出&#xff1a; S…

数据化管理(一)---什么是数据化管理

目录 一、什么是数据化管理1.1 “聪明”的销售人员1.2 数据化管理的概念1.3 数据化管理的意义1.4 数据化管理的四个层次1.4.1 业务指导管理1.4.2 营运指导管理1.4.3 经营策略管理1.4.4 战略规划管理 1.5 数据化管理流程图1.5.1 分析需求1.5.2 收集数据1.5.3 整理数据1.5.4 分析…

笔记本电脑更换主板后出现2203:System configuration is invalid,以及2201、2202系统错误的解决

笔记本电脑更换主板后启动出现2203:System configuration is invalid,以及2201、2202系统错误的解决 自用的一台ThinkpadT490笔记本电脑 ,由于主板故障,不得不更换主板,通过某宝购置主板后进行了更换。 具体拆卸笔记本可搜索网络视频教程。 注意: 在更换主板时,注意先拍…

微型导轨和普通导轨有哪些区别?

微型导轨和普通导轨都是常用的工业机械传动装置&#xff0c;目前&#xff0c;市场上有各种各样的导轨产品。那么微型导轨和普通导轨有哪些区别呢&#xff1f; 1、尺寸&#xff1a;微型导轨尺寸较小&#xff0c;滑座宽度最小可达 8MM&#xff0c;长度最小可达 11MM 左右&#xf…

GMP调度模型

Golang调度器的由来 1.协程提高CPU利用率 线程分为用户态和内核态&#xff1b;协程其实就是用户态的线程。 协程和线程的映射关系 N:1关系 N个协程绑定一个线程&#xff0c;优点就是协程在用户态线程即完成切换&#xff0c;不会陷入到内核态&#xff0c;这种切换非常轻量快速…

jetson orin nano super AI模型部署之路(三)stable diffusion部署

先看一下部署后的界面和生成的图片。 在jetson orin nano super上部署stable diffusion比较简单&#xff0c;有现成的docker image和代码可用。 docker image拉取 使用的docker image是dustynv/stable-diffusion-webui&#xff0c;对于jetson orin nano super的jetpack6.2来说…

react如何引用(按需加载)百度地图,并结合and组件化封装

1.技术选项: vitereactantdesign load-script 2.实现思路&#xff1a; 1.按需加载如何实现? 要实现按需加载就不能直接在项目的入口文件这种地方去通过script标签引入&#xff0c;这里使用load-script封装了一个加载百度地图的Bmap.js方法,实现动态的插入script脚本。 根…