MATLAB风光柴储微网粒子群算法

         本程序实现了风光柴储微网中的粒子群优化(PSO)算法,用于优化微网的能源调度问题。具体来说,程序考虑了光伏发电、风力发电、柴油机发电(柴储),并使用粒子群算法来优化这些能源的调度,以满足负载需求。以下是对代码的详细说明:

1. PSO算法参数设置
  • 最大迭代次数 maxgen:设定粒子群算法的最大迭代次数为2000次。
  • 种群规模 N:设定粒子群中的粒子数量为100。
  • 粒子速度限制 v_maxv_min:粒子速度的上限和下限,分别为2和-2。
  • 惯性权重 w_maxw_min:控制粒子群在搜索空间中探索的幅度。
  • 学习因子 c1c2:分别表示个体认知学习因子和社会学习因子。
2. 初始化
  • 负载 P_load:表示微网的负荷需求。
  • 光伏发电 solar:光伏电池板的发电量,按时间分布。
  • 风力发电 pv:风力发电机组的发电量,按时间分布。
  • 发电总量 P_pv:光伏和风力发电总和。

     粒子群的初始化过程中,粒子位置 x 和速度 v 被随机生成。粒子的位置对应了微网中不同能源的发电量(包括风力、光伏、柴油发电机组等),这些位置的初始值是根据各能源的最大发电能力进行约束的。

3. 适应度计算

每个粒子的适应度是通过调用 fitness 函数来计算的。适应度函数衡量了粒子方案的优劣,旨在通过最小化成本、最大化系统效率或实现其他优化目标。

4. 主循环

在每次迭代中,粒子的位置和速度会根据以下公式进行更新:

  • 速度更新:结合了惯性项、个体认知项和社会认知项。
  • 位置更新:通过粒子的当前速度更新位置。

每个粒子的边界都会根据各个能源的最大值和最小值进行限制,并采用反转速度的方式进行边界处理,以确保粒子不会越过边界。

5. 粒子群更新

每个粒子在更新其位置和速度后,会重新评估其适应度。如果当前粒子的适应度比之前的最优适应度更好,则更新该粒子的最佳位置。全局最优解(即整个群体中最优的粒子)会在每次迭代后更新。

6. 结果可视化

程序会绘制多个图表展示优化结果:

  • 图1:展示已消纳的功率与总光伏发电功率的关系。
  • 图2:展示已消纳的功率与总风电发电功率的关系。
  • 图3:展示光伏发电的已消纳功率。
  • 图4:展示风电发电的已消纳功率。

这些图表帮助分析不同能源的调度效果,以及微网在负荷需求下的能源使用情况。

7 主程序代码
clc;
clear;
%rng default;
%pso参数设置
format long;
maxgen=2000;%迭代次数
N=100;%种群规模
%c1=2;%自我学习因子
%c2=2;%群体学习因子
v_max=2; v_min=-2;%个体速度
w_max=0.9;w_min=0.1;
dmaxp=10;
dminp=0;
wminp=-10;
wmaxp=10;
s=1;
P_load=[52 50 50 51 56 63 70 75 76 80 78 74 72 72 76 80 85 88 90 87 78 71 65 56 ];%负载
%P_load=[152 150 150 151 156 163 170 175 176 180 178 174 172 172 176 180 185 188 190 187 178 171 165 156 ];
solar=[0 0 0 0 1 3 5 10 15 16 17 20 20 20 18 15 15 10 10 5 0 0 0 0 ]%光伏
pv=[75 65 60 55 50 57 60 66 50 58 60 60 57 50 61 58 55 65 56 60 72 66 75 76 ];%风力
P_pv=pv+solar;
%初始化种群
for i=1:N;for j=1:96;%4个维度v(i,j)=0.0;if j<=24;x(i,j)=rand()*pv(j);elseif j>24&&j<=48;x(i,j)=rand()*solar(j-24);elseif    j>48&&j<=72;x(i,j)=dminp+rand()*(dmaxp-dminp);elseif   j>72&&j<=96;  x(i,j)=wminp+rand()*(wmaxp-wminp);endend
end%计算各个粒子的适应度,并初始化Pi和Pg
for i=1:Np(i)=fitness(x(i,:),s);y(i,:)=x(i,:);%每个粒子的个体寻优值
end
Pbest=fitness(x(1,:),s);
pg=x(1,:);%Pg为全局最优
for i=2:Nif fitness(x(i,:),s)<fitness(pg,s)Pbest=fitness(x(i,:),s);pg=x(i,:);%全局最优更新end
end
%进入主循环
for t=1:maxgenfor i=1:Nw=w_max-(w_max-w_min)*t/maxgen;%惯性权重更新c1=(0.5-2.5)*t/maxgen+2.5; %认知c2=(2.5-0.5)*t/maxgen+0.5; %社会认识 
v(i,:)=w*v(i,:)+c1*rand()*(y(i,:)-x(i,:))+c2*rand()*(pg-x(i,:));
for m=1:96if(v(i,m)>v_max)v(i,m)=v_max;elseif(v(i,m)<-v_max)v(i,m)=-v_max;end
endx(i,:)=x(i,:)+v(i,:);%对粒子边界处理for n=1:96if n<25if x(i,n)<0x(i,n)=0;v(i,n)=-v(i,n); elseif x(i,n)>pv(n)x(i,n)=pv(n);v(i,n)=-v(i,n); %反转运动方向endelseif n>24&&n<49if x(i,n)<0x(i,n)=0;v(i,n)=-v(i,n);  elseif  x(i,n)>solar(n-24)x(i,n)=solar(n-24);v(i,n)=-v(i,n);                     endelseif n>49&&n<73if x(i,n)<dminpx(i,n)=dminp;v(i,n)=-v(i,n); elseif x(i,n)>dmaxpx(i,n)=dmaxp;v(i,n)=-v(i,n); endelse if x(i,n)<wminpx(i,n)=wminp;v(i,n)=-v(i,n); elseif x(i,n)>wmaxpx(i,n)=wmaxp;v(i,n)=-v(i,n); endendendend %对粒子进行评价,寻找最优值if fitness(x(i,:),t)<p(i)p(i)=fitness(x(i,:),t);y(i,:)=x(i,:);end if p(i)<PbestPbest=p(i);pg=y(i,:);s=t;end
endfor m=1:24pg1(m)=pg(m);
end
for m=25:48pg2(m-24)=pg(m);
end
for m=49:72pg3(m-48)=pg(m);
end
for m=73:96pg4(m-72)=pg(m);
end  figure(1);
plot( pg1,'r-')
hold on
plot( pv,'-')
xlim([1 24])
grid 
legend('已消纳功率','总光伏功率');
xlabel('时间');
ylabel('功率');
title('风机发电出力')figure(2);
plot( pg2,'g-')
hold on
plot( solar,'-')
xlim([1 24])
grid
legend('已消纳功率','总风电功率');
xlabel('时间');
ylabel('功率');
title('光伏发电出力')figure(3);
plot( pg3,'b-')
xlim([1 24])
grid       figure(4);
plot( pg4,'k-')
xlim([1 24])
grid   %plot (P_load,'-')
grid on

8 代码获取

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

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

相关文章

解决Windows版Redis无法远程连接的问题

&#x1f31f; 解决Windows版Redis无法远程连接的问题 在Windows系统下使用Redis时&#xff0c;很多用户会遇到无法远程连接的问题。尤其是在配置了Redis并尝试通过工具如RedisDesktopManager连接时&#xff0c;可能会报错“Cannot connect to ‘redisconnection’”。今天&am…

解决 HTTP 请求中的编码问题:从乱码到正确传输

文章目录 解决 HTTP 请求中的编码问题&#xff1a;从乱码到正确传输1. **问题背景**2. **乱码问题的原因**2.1 **客户端编码问题**2.2 **请求头缺失**2.3 **服务器编码问题** 3. **解决方案**3.1 **明确指定请求体编码**3.2 **确保请求头正确**3.3 **动态获取响应编码** 4. **调…

VS Code 配置优化指南

目录 一、安装与基础设置1. 安装 VS Code2. 中文语言包 二、插件推荐三、常见配置项与优化1. 用户 / 工作区设置2. 全局配置 / Settings Sync3. 常用设置示例 四、性能优化五、调试与终端配置1. 调试配置2. 内置终端配置 六、快捷键配置七、美观与主题八、总结 VS Code&#xf…

基于NXP+FPGA永磁同步电机牵引控制单元(单板结构/机箱结构)

永磁同步电机牵引控制单元&#xff08;单板结构/机箱结构&#xff09; 永磁同步电机牵引控制单元&#xff08;TCU-PMSM&#xff09;用于牵引逆变器-永磁同步电机构成的牵引电传动系统&#xff0c;采用轴控方式。执行高性能永磁同步电机复矢量控制策略&#xff0c;具有响应迅速…

/etc/sysconfig/jenkins 没有这个文件

在 CentOS 或其他基于 Red Hat 的 Linux 系统中&#xff0c;/etc/sysconfig/jenkins 文件通常用来存储 Jenkins 的配置参数&#xff0c;例如 JENKINS_HOME 的路径。但是&#xff0c;如果你发现没有这个文件&#xff0c;你可以通过以下几种方式来解决或确认&#xff1a; 检查 J…

conda 安装软件报错 Found conflicts! Looking for incompatible packages.

问题描述&#xff1a; 利用 conda 安装某包 conda install -c "nvidia/label/cuda-11.8.0" cuda-nvcc时发现报错&#xff1a; Collecting package metadata (current_repodata.json): done Solving environment: failed with initial frozen solve. Retrying with…

MySQL 衍生表(Derived Tables)

在SQL的查询语句select …. from …中&#xff0c;跟在from子句后面的通常是一张拥有定义的实体表&#xff0c;而有的时候我们会用子查询来扮演实体表的角色&#xff0c;这个在from子句中的子查询会返回一个结果集&#xff0c;这个结果集可以像普通的实体表一样查询、连接&…

STM32配套程序接线图

1 工程模板 2 LED闪烁 3LED流水灯 4蜂鸣器 5按键控制LED 6光敏传感器控制蜂鸣器 7OLED显示屏 8对射式红外传感器计次 9旋转编码器计次 10 定时器定时中断 11定时器外部时钟 12PWM驱动LED呼吸灯 13 PWM驱动舵机 14 PWM驱动直流电机 15输入捕获模式测频率 16PWMI模式测频率占空…

鸿蒙初级考试备忘

Module类型 Module按照使用场景可以分为两种类型&#xff1a; Ability类型的Module&#xff1a; 用于实现应用的功能和特性。每一个Ability类型的Module编译后&#xff0c;会生成一个以.hap为后缀的文件&#xff0c;我们称其为HAP&#xff08;Harmony Ability Package&#x…

语音识别踩坑记录

本来想在原来的语音识别的基础上增加本地扩展本地词典&#xff0c; 采用的语音识别是Vosk识别器&#xff0c;模型是 vosk-model-small-cn-0.22 // 初始化Vosk识别器 if (recognizer null) {using (Model model new Model(modelPath)){string grammar "{""…

SpringCloud 学习笔记1(Spring概述、工程搭建、注册中心、负载均衡、 SpringCloud LoadBalancer)

文章目录 SpringCloudSpringCloud 概述集群和分布式集群和分布式的区别和联系 微服务什么是微服务&#xff1f;分布式架构和微服务架构的区别微服务的优缺点&#xff1f;拆分微服务原则 什么是 SpringCloud &#xff1f;核心功能与组件 工程搭建父项目的 pom 文件 注册中心Rest…

计算机网络-网络规划与设计

基本流程 需求分析—》通信规范分析—》逻辑网络设计—》物理网络设计—》实施阶段 需求分析&#xff1a; 确定需求&#xff0c;包括&#xff1a;业务需求、用户需求、应用需求、计算机平台需求、网络通信需求等。 产物&#xff1a;需求规范 通信规范分析&#xff1a; 现有…

《AI浪潮中的璀璨新星:Meta Llama、Ollama与DeepSeek的深度剖析》:此文为AI自动生成

《AI浪潮中的璀璨新星&#xff1a;Meta Llama、Ollama与DeepSeek的深度剖析》&#xff1a;此文为AI自动生成 引言&#xff1a;AI 大模型的群雄逐鹿时代 在科技飞速发展的当下&#xff0c;AI 大模型领域已成为全球瞩目的焦点&#xff0c;竞争激烈程度堪称白热化。从 OpenAI 推出…

基础知识《HTTP字段与状态码详细说明》

HTTP 协议字段与状态码完整指南 一、HTTP 字段&#xff08;请求头与响应头&#xff09; HTTP 头字段用于传递客户端和服务器之间的元数据&#xff0c;分为 请求头&#xff08;Request Headers&#xff09; 和 响应头&#xff08;Response Headers&#xff09;。 1. 常见请求头…

DeepSeek linux服务器(CentOS)部署命令笔记

Linux&#xff08;CentOS&#xff09;FinalShellOllama远程访问&#xff0c;本地部署deepseek 自备CentOS服务器&#xff0c;并且已经使用FinalShell连接到服务器 一、准备工作 1.更新服务器 apt-get update-y 2.下载Ollama curl -fsSL https://ollama.com/install.sh | …

C#通过API接口返回流式响应内容---分块编码方式

1、背景 上一篇文章《C#通过API接口返回流式响应内容—SSE方式》阐述了通过SSE&#xff08;Server Send Event&#xff09;方式&#xff0c;由服务器端推送数据到浏览器。本篇是通过分块编码的方式实现 2、效果 3、具体代码 3.1 API端实现 [HttpGet] public async Task Chu…

SSL 原理及实验

引言 为了实现远程办公或者远程客户访问内网的资源 &#xff08;1&#xff09;回顾历史&#xff1a; 起初先出现SSL(Secure Sockets Layer&#xff09;&#xff0d;安全套接层协议。 美国网景Netscape公司1994年研发&#xff0c;介于传输层TCP协议和应用层协议之间的一种协议…

C++ 布尔类型(bool)深度解析

引言 在 C 编程里&#xff0c;布尔类型&#xff08;bool&#xff09;是一种基础且极为关键的数据类型。它专门用于表达逻辑值&#xff0c;在程序的条件判断、循环控制等诸多方面都发挥着重要作用。接下来&#xff0c;我们将对 C 中的布尔类型展开全面且深入的探讨。 一、布尔…

UE5.5 Niagara发射器更新属性

发射器属性 在 Niagara 里&#xff0c;Emitter 负责控制粒子生成的规则和行为。不同的 Emitter 属性决定了如何发射粒子、粒子如何模拟、计算方式等。 发射器 本地空间&#xff08;Local Space&#xff09; 控制粒子是否跟随发射器&#xff08;Emitter&#xff09;移动。 ✅…

各省水资源平台 水资源遥测终端机都用什么协议

各个省水资源平台 水资源遥测终端机 的建设大部分从2012年开始启动&#xff0c;经过多年建设&#xff0c;基本都已经形成了稳定的通讯要求&#xff1b;河北瑾航科技 遥测终端机&#xff0c;兼容了大部分省市的通讯协议&#xff0c;如果需要&#xff0c;可以咨询和互相学习&…