【电力系统】基于YALMIP 的微网(光伏+风电+蓄电池+微电网+柴油机)优化调度模型附matlab代码

本文主要是介绍【电力系统】基于YALMIP 的微网(光伏+风电+蓄电池+微电网+柴油机)优化调度模型附matlab代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。

🍎个人主页:Matlab科研工作室

🍊个人信条:格物致知。

更多Matlab仿真内容点击👇

智能优化算法  神经网络预测 雷达通信  无线传感器

信号处理 图像处理 路径规划 元胞自动机 无人机  电力系统

⛄ 内容介绍

⛄ 部分代码

%% 请先确保YALMIP工具箱和CPLEX正确安装,MATLAB导入对应文件,否则无法运行程序!!

%% 初始化

clc;

clear all;close all;

%yalmip;

%Cplex;

%% 各变量及常量定义

%------------------------变量定义-----------------------%

Pw=sdpvar(1,24,'full'); %风机出力

Ppv=sdpvar(1,24,'full');%光伏出力

Pbat=sdpvar(1,24,'full');%蓄电池出力

% Pde=sdpvar(1,24,'full');%柴油机组出力

Pnet=sdpvar(1,24,'full');%交换功率

Pbuy=sdpvar(1,24,'full');%从电网购电电量

Psell=sdpvar(1,24,'full');%向电网售电电量

Temp_net=binvar(1,24,'full'); % 购|售电标志

Temp_cha=binvar(1,24,'full'); %充电标志

Temp_dis=binvar(1,24,'full'); %放电标志

Temp_static=binvar(1,24,'full'); %电池静置标志

% Temp_de=binvar(1,24,'full'); %柴油机发电标志

Pcha=sdpvar(1,24);

Pdis=sdpvar(1,24);

Constraints = [];

%-------------------------常量定义-----------------------%

Load=[88.24  83.01  80.15  79.01  76.07  78.39  89.95  128.85  155.45  176.35  193.71  182.57  179.64  166.31  164.61  164.61  174.48  203.93  218.99  238.11  216.14  173.87  131.07  94.04];

%风机预测出力

Pw=[66.9 68.2 71.9 72 78.8 94.8 114.3 145.1 155.5 142.1 115.9 127.1 141.8 145.6...

    145.3 150 206.9 225.5 236.1 210.8 198.6 177.9 147.2 58.7];

%光伏预测出力

Ppv=[0 0 0 0 0.06 6.54 20.19 39.61 49.64 88.62 101.59 66.78 110.46 67.41 31.53...

    50.76 20.6 22.08 2.07 0 0 0 0 0];

%分时电价

C_buy=[0.25 0.25 0.25 0.25 0.25 0.25 0.25 0.53 0.53 0.53 0.82 0.82...

    0.82 0.82 0.82 0.53 0.53 0.53 0.82 0.82 0.82 0.53 0.53 0.53];

C_sell=[0.22 0.22 0.22 0.22 0.22 0.22 0.22 0.42 0.42 0.42 0.65 0.65...

    0.65 0.65 0.65 0.42 0.42 0.42 0.65 0.65 0.65 0.42 0.42 0.42];

%储能电池参数定义

Ebattery = 300;

soc0     = 0.5;

socmin   = 0.3;

socmax   = 0.95;

Pcs      = 40 ;

POWER    = 160 ;

figure;

plot(Load      ,'r-*','LineWidth',1.5);

axis([1 24 0 240]) ;

xlabel('时间(h)','FontSize',14);

set(gca,'xTick',(1:2:24),'yTick',(0:40:240));

ylabel('功率(kw)','FontSize',14);

hold on; 

plot(Pw        ,'g-d','LineWidth',1.5);

axis([1 24 0 240]) ;

xlabel('时间(h)','FontSize',14);

set(gca,'xTick',(1:2:24),'yTick',(0:40:240));

ylabel('功率(kw)','FontSize',14);

hold on; 

plot(Ppv      ,'b-o','LineWidth',1.5);

axis([1 24 0 240]) ;

xlabel('时间(h)','FontSize',14);

set(gca,'xTick',(1:2:24),'yTick',(0:40:240));

ylabel('功率(kw)','FontSize',14);

legend('电负荷','风机预测出力','光伏预测出力');

%% 约束

for k = 1:24

  Constraints = [Constraints, -POWER<=Pnet(1,k)<=POWER,0<=Pbuy(1,k)<=POWER, -POWER<=Psell(1,k)<=0]; %主网功率交换约束,不大于160kW

  Constraints = [Constraints,Pnet(1,k)+Pw(1,k)+Ppv(1,k)==Load(1,k)+Pbat(1,k)];              %功率平衡约束   ,电网+风电+光伏 = 负载 + 电池充电

  Constraints = [Constraints, implies(Temp_net(1,k),[Pnet(1,k)>=0,Pbuy(1,k)==Pnet(1,k),Psell(1,k)==0])]; %购电情况约束   Pnet>0是购电,Pnet<0是售电电,

  Constraints = [Constraints, implies(1-Temp_net(1,k),[Pnet(1,k)<=0,Psell(1,k)==Pnet(1,k),Pbuy(1,k)==0])]; %售电情况约束

%----------------------蓄电池约束--------------------%

% sum_bat=zeros(1,24);

  Constraints = [Constraints, -Pcs<=Pbat(1,k)<=Pcs,0<=Pcha(1,k)<=Pcs,-Pcs<=Pdis(1,k)<=0];%电池充放电约束,PCS功率是40kW

  Constraints = [Constraints, implies(Temp_cha(1,k),[Pbat(1,k)>=0,Pcha(1,k)==Pbat(1,k),Pdis(1,k)==0])];%充电情况约束

  Constraints = [Constraints, implies(Temp_dis(1,k),[Pbat(1,k)<=0,Pdis(1,k)==Pbat(1,k),Pcha(1,k)==0])];%放电情况约束

  Constraints = [Constraints, implies(Temp_static(1,k),[Pbat(1,k)==0,Pdis(1,k)==0,Pcha(1,k)==0])];%静置情况约束

  Constraints = [Constraints,Temp_cha(1,k)+Temp_dis(1,k)+Temp_static(1,k)==1];

%    sum_bat(1,k+1)=sum_bat(1,k)+Pcha(1,k)+Pdis(1,k);%计算SOC

  Constraints=[Constraints,Ebattery*(socmin - soc0)<=sum(Pdis(1,1:k)+Pcha(1,1:k))<=Ebattery*(socmax - soc0)] ;%SOC约束,电池容量300kwh,初始S0C为0.4,0.3<=SOC<=0.95

end

  Constraints=[Constraints,sum(Pdis+Pcha)==0] ;%ST=S0,始末SOC相等约束

%% 目标函数

 F=0;

%------------------总费用--------------------%

for k = 1:24

  F = F + 0.52*Pw(:,k)+0.72*Ppv(:,k)+C_buy(:,k)*Pbuy(:,k)+C_sell(:,k)*Psell(1,k)+0.2*Pdis(1,k);

end

ops=sdpsettings('solver', 'cplex');%参数指定程序用cplex求解器

optimize(Constraints,F,ops);

disp(['总费用=']);value(F) 

%% 画图

x=1:24;

PP=[Pbuy;-Pdis;Pw;Ppv];

PP_neg=[Psell;-Pcha];

figure

bar(PP','stack');hold on;

bar(PP_neg','stack');hold on;

plot(x,value(Load),'r','linewidth',2);

xlabel('时间(h)','FontSize',16);

set(gca,'xTick',(1:2:24),'yTick',(0:50:300));

ylabel('功率(kw)','FontSize',16);

legend('电网购电','蓄电池放电','风机出力','光伏出力','电网售电','蓄电池充电','负荷');

hold off;

figure

plot(x,value(Pbuy+Psell),'r-*','LineWidth',1.5);

hold on;

plot(x,value(Pdis+Pcha),'b-o','LineWidth',1.5);

hold off;

xlabel('时间(h)','FontSize',16);

set(gca,'xTick',(1:2:24),'yTick',(-120:20:60));

ylabel('功率(kw)','FontSize',16);

legend('电网交互功率曲线','储能交互功率曲线');

soc = zeros(1,25);

s = zeros(1,25);

soc(1)=soc0;

for k=1:24

    s(k)=value(sum(Pdis(1,1:k)+Pcha(1,1:k)))/Ebattery+soc0;

    soc(k+1)=s(k);

end

soc(1)=soc0;

xx=0:24;

figure

% yyaxis left

subplot(211)

plot(xx,soc,'b-*','LineWidth',1.5);

hold on

ylabel('soc值');

title('SOC曲线')

% yyaxis right

subplot(212)

bar(Pdis',0.5,'stack')

hold on

bar(Pcha',0.5,'stack')

xlabel('时间(h)');

title('蓄电池SOC状态');

legend('电池充电','电池放电');

⛄ 运行结果

⛄ 参考文献

[1]孔得壮. 计及动态需求响应的热电联产型微网竞价优化策略[D]. 重庆大学, 2019.

[2]王怡云, 吴雷. 基于改进天牛群算法的微电网优化调度[J]. 电子测量技术, 2020, 43(16):6.​

⛄ Matlab代码关注

❤️部分理论引用网络文献,若有侵权联系博主删除

❤️ 关注我领取海量matlab电子书和数学建模资料

这篇关于【电力系统】基于YALMIP 的微网(光伏+风电+蓄电池+微电网+柴油机)优化调度模型附matlab代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/238484

相关文章

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

C#实现千万数据秒级导入的代码

《C#实现千万数据秒级导入的代码》在实际开发中excel导入很常见,现代社会中很容易遇到大数据处理业务,所以本文我就给大家分享一下千万数据秒级导入怎么实现,文中有详细的代码示例供大家参考,需要的朋友可... 目录前言一、数据存储二、处理逻辑优化前代码处理逻辑优化后的代码总结前言在实际开发中excel导入很

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

Python实现Excel批量样式修改器(附完整代码)

《Python实现Excel批量样式修改器(附完整代码)》这篇文章主要为大家详细介绍了如何使用Python实现一个Excel批量样式修改器,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一... 目录前言功能特性核心功能界面特性系统要求安装说明使用指南基本操作流程高级功能技术实现核心技术栈关键函

Redis实现高效内存管理的示例代码

《Redis实现高效内存管理的示例代码》Redis内存管理是其核心功能之一,为了高效地利用内存,Redis采用了多种技术和策略,如优化的数据结构、内存分配策略、内存回收、数据压缩等,下面就来详细的介绍... 目录1. 内存分配策略jemalloc 的使用2. 数据压缩和编码ziplist示例代码3. 优化的

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱

Python 基于http.server模块实现简单http服务的代码举例

《Python基于http.server模块实现简单http服务的代码举例》Pythonhttp.server模块通过继承BaseHTTPRequestHandler处理HTTP请求,使用Threa... 目录测试环境代码实现相关介绍模块简介类及相关函数简介参考链接测试环境win11专业版python

Python从Word文档中提取图片并生成PPT的操作代码

《Python从Word文档中提取图片并生成PPT的操作代码》在日常办公场景中,我们经常需要从Word文档中提取图片,并将这些图片整理到PowerPoint幻灯片中,手动完成这一任务既耗时又容易出错,... 目录引言背景与需求解决方案概述代码解析代码核心逻辑说明总结引言在日常办公场景中,我们经常需要从 W

Python实战之SEO优化自动化工具开发指南

《Python实战之SEO优化自动化工具开发指南》在数字化营销时代,搜索引擎优化(SEO)已成为网站获取流量的重要手段,本文将带您使用Python开发一套完整的SEO自动化工具,需要的可以了解下... 目录前言项目概述技术栈选择核心模块实现1. 关键词研究模块2. 网站技术seo检测模块3. 内容优化分析模

使用Spring Cache本地缓存示例代码

《使用SpringCache本地缓存示例代码》缓存是提高应用程序性能的重要手段,通过将频繁访问的数据存储在内存中,可以减少数据库访问次数,从而加速数据读取,:本文主要介绍使用SpringCac... 目录一、Spring Cache简介核心特点:二、基础配置1. 添加依赖2. 启用缓存3. 缓存配置方案方案