微电网两阶段鲁棒优化经济调度方法(完美复现)

news2024/11/14 16:39:05

针对微电网内可再生能源和负荷的不确定性,建立了 min-max-min 结构的两阶段鲁棒优化模型,可得到最恶劣场 景下运行成本最低的调度方案。模型中考虑了储能、需求侧 负荷及可控分布式电源等的运行约束和协调控制,并引入了 不确定性调节参数,可灵活调整调度方案的保守性。基于列 约束生成算法和强对偶理论,可将原问题分解为具有混合整 数线性特征的主问题和子问题进行交替求解,从而得到原问 题的最优解。最终通过仿真分析验证了所建模型和求解算法 的有效性,同时给出了分时电价机制下微电网对储能进行调 度的边界条件,可为微电网投资商规划储能及配电网运营商 设计激励机制提供参考。

2、部分代码
function [BBB,UB] = SP(X)
%% 1.参数设置
%燃气轮机参数设置
pg_max=800;         %燃气轮机最大功率限制
pg_min=80;          %燃气轮机最小功率限制
a=0.67;             %燃气轮机成本系数a,b设置
b=0;


%蓄电池参数设置
ps_max=500;         %储能允许最大充放电给功率
Es_max=1800;        %蓄电池调度过程中允许的最大剩余容量
Es_min=400;         %蓄电池调度过程中允许的最小剩余容量
Es_0=1000;          %调度过程中初始容量
Ks=0.38;            %折算后充放电成本
yita=0.95;          %充放电效率


%需求响应负荷参数设置
K_DR=0.32;          %需求响应负荷单位调度成本
D_DR=2940;          %需求响应总用电需求
D_DR_min=50;
D_DR_max=250;


%配电网交互功率参数设置
pm_max=1500;        %微电网与配电网交互功率最大值


%配电网日前交易电价,为24*1向量
price = [0.48;0.48;0.48;0.48;0.48;0.48;0.48;0.9;1.35;1.35;1.35;0.9;0.9;0.9;0.9;0.9;0.9;0.9;1.35;1.35;1.35;1.35;1.35;0.48];


%光伏日前预测,为24*1向量
p_pv_forecast_0 = [0; 0; 0; 0; 0; 0; 40; 200; 500; 860; 1040; 1180; 900; 830; 600; 400; 200; 50; 0; 0; 0; 0; 0; 0];
%p_pv_forecast=[0; 0; 0; 0; 0; 0; 40; 200; 425; 731; 884; 1180; 900; 830; 600; 510; 340; 50; 0; 0; 0; 0; 0; 0];      %初始最坏数据
%负荷日前预测,为24*1向量
p_l_forecast_0=[400; 350; 320; 300; 300; 310; 410; 510; 550; 680; 720; 810; 810; 760; 700; 660; 705; 730; 790; 810; 850; 800; 505; 410];
%p_l_forecast=[400; 350; 320; 300; 300; 310; 451; 561; 605; 748; 720; 810; 891; 836; 770; 726; 775.5; 730; 790; 810; 850; 800; 505; 410];        %初始最坏数据
%
C=[];
c=[a*ones(1,24)     Ks*yita*ones(1,24)      (Ks/yita)*ones(1,24)        zeros(1,24)     K_DR*ones(1,48)     price'  -price'   zeros(1,48)];
%% 2.变量设置
%对偶变量设置
miu=sdpvar(192,1);        %(h-Fx)'为1*192矩阵,miu必须为192行;子问题约束中G'为240*192矩阵,右侧c为240*1向量,因此miu必须为1列。所以miu为192*1
pai=sdpvar(48,1);         %u'为1*48矩阵,pai必须为48行;子问题约束中I'为240*48矩阵,右侧c为240*1向量,因此pai必须为1列。所以pai为192*1


%二元变量B设置
B=binvar(48,1);           %B为子问题初始二元变量,取到1即为最坏情况 


%% 3.1 设子问题第一行约束
%其中,D为192*240矩阵,d为192*1矩阵
D=[eye(24)  zeros(24,216);
  -eye(24)  zeros(24,216);
  zeros(24,24)   yita.*tril(ones(24,24),0)  -1/yita.*tril(ones(24,24),0) zeros(24,168);
  zeros(24,24)   -yita.*tril(ones(24,24),0)  1/yita.*tril(ones(24,24),0) zeros(24,168);
  zeros(24,72)   eye(24)   zeros(24,144);
  zeros(24,72)   -eye(24)  zeros(24,144);
  zeros(24,96)   eye(24)   zeros(24,120);
  zeros(24,120)   eye(24)   zeros(24,96);];


d=[pg_min.*ones(24,1);
   -pg_max.*ones(24,1);
   (Es_min-Es_0).*ones(24,1);
   -(Es_max-Es_0).*ones(24,1);
   D_DR_min.*ones(24,1);
   -D_DR_max.*ones(24,1);
   zeros(48,1)];


%其中,K为50*240矩阵,s为50*1矩阵
K=[zeros(1,24)   yita.*ones(1,24)  -1/yita.*ones(1,24) zeros(1,168);
   zeros(1,72)  ones(1,24)  zeros(1,144);
   zeros(24,72) eye(24)     eye(24)     -eye(24)    zeros(24,96);
   eye(24)     -eye(24)    eye(24)     -eye(24)    zeros(24,48)    eye(24) -eye(24)    eye(24) -eye(24)];
s=[0;
   2940;       %总的需求响应
   80;70;60;50;70;70;90;100;120;150;160;200;140;100;100;130;140;150;190;200;200;190;100;80;     %每个调度时刻的期望需求响应
   zeros(24,1)];


%其中,G为192*240矩阵,h为192*1向量,F为192*48矩阵
G=[zeros(24,48)     eye(24)    zeros(24,168);
   zeros(24,48)     -eye(24)   zeros(24,168);
   zeros(24)        eye(24)    zeros(24,192);
   zeros(24)        -eye(24)   zeros(24,192);
   zeros(24,144)    eye(24)    zeros(24,72);
   zeros(24,144)    -eye(24)   zeros(24,72);
   zeros(24,168)    eye(24)    zeros(24,48);
   zeros(24,168)    -eye(24)   zeros(24,48)];
h=[zeros(72,1);
   -ps_max.*ones(24,1);
   zeros(72,1);
   -pm_max.*ones(24,1)];
F=[zeros(24,48);
   ps_max.*eye(24)  zeros(24,24);
   zeros(24,48);
   -ps_max.*eye(24) zeros(24,24);
   zeros(24,48);
   zeros(24,24)     pm_max*eye(24);
   zeros(24,48);
   zeros(24,24)     -pm_max*eye(24);];




%I为48*240矩阵,u为48*1向量
I=[zeros(24,192)    eye(24)     zeros(24);
   zeros(24,216)    eye(24)];


u0=[p_pv_forecast_0;p_l_forecast_0];
C = [C, D'*gamma+K'*lamda+G'*miu+I'*pai<=c'];        %子问题第一行约束


%% 3.2 设立子问题第二、三行约束


delta_u=[0; 0; 0; 0; 0; 0; 6; 30; 75; 129; 156; 177; 135; 124.5; 90; 60; 30; 7.5; 0; 0; 0; 0; 0; 0;
         40; 35; 32; 30; 30;  31; 41; 51; 55; 68; 72; 81; 81; 76;  70; 66; 70.5; 73; 79; 81;  85; 80;  50.5;  41];
BB=binvar(48,1);        %引入的辅助变量B’,记为BB


C = [C, gamma>=0];
C = [C, miu>=0];
%C = [C, lamda>=0];
%C = [C, pai>=0];
C = [C, BB>=0];
C = [C, 0<=BB,BB<=1000000*B];
%C = [C, BB>=pai-10*(ones(48,1)-B)];
C = [C, pai-1000000*(1-B)<=BB,BB<=pai];
C = [C, sum(B(1:24,:))<=6];
C = [C, sum(B(25:48,:))<=12];
%for k=1:48
   % C = [C, BB(k,1)>=0];                                %子问题第二行约束前半部分
    %C = [C, BB(k,1)<= 10000*B(k,1)];                      %子问题第二行约束后半部分
    %C = [C, BB(k,1)>= pai(k,1) - 10000* ( 1-B(k,1) ) ];   %子问题第三行约束前半部分
    %C = [C, BB(k,1)<= pai(k,1)] ;                         %子问题第三行约束后半部分
%end


%L1=[ones(1,24) zeros(1,24)];
%L2=[zeros(1,24) ones(1,24)];
%C = [C, L1*B<=12];
%C = [C, L2*B<=12];


%% 4.设目标函数


Z= -(d'*gamma+s'*lamda+(h-F*X)'*miu+u0'*B+delta_u'*BB);




%% 5.求解


ops = sdpsettings('solver','cplex');  






result = optimize(C,Z,ops);


BBB=value(B);
BBBB=value(BB);
GAMMA=value(gamma);
LAMDA=value(lamda);
MIU=value(miu);
PAI=value(pai);
UB=value(-Z);

 

 

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

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

相关文章

Java基于springboot+vue+element医疗用品销售购物商城系统 前后端分离

开发背景和意义 网络购物己经成为一个常态化的消费手段&#xff0c;足不出户即可享受互联网发展的红利&#xff0c;对于购物商城的应用&#xff0c;普通消费者目前普遍使用。医疗用品作为一个大众消费的商品&#xff0c;由于其健康的特点&#xff0c;也越来越为大家喜欢&#…

TypeScript 知识点总结

对于有着强制类型语言经验的开发来讲&#xff0c;刚开始接触 JavaScript 的时候&#xff0c;大多都有一种 “心如芒刺&#xff0c;如鲠在喉” 的感觉。 从最初的好感 -——开放包容&#xff0c;到后来的厌恶之情——放荡不羁 TypeScript 犹如黑暗之中的一缕阳光&#xff0c;拯救…

【单片机基础】ADC0832详解

文章目录一、ADC0832介绍1、功能特点2、引脚说明3、ADC0832与单片机接口4、工作时序二、例程一、ADC0832介绍 ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小&#xff0c;兼容性&#xff0c;性价比高而深受单片机爱好者及企业欢迎&#x…

Java_笔记_static_静态变量方法工具类_main方法

static表示静态&#xff0c;是Java中的一个修饰符&#xff0c;可以修饰成员方法和成员变量。 一、静态变量: 被static修饰的成员变量 1.特点&#xff1a; 1&#xff09;被该类所有的对象共享。 2&#xff09;不属于对象&#xff0c;属于类。 3&#xff09;随着类的加载而加载…

(个人记录)Ensight后处理EDEM学习笔记

①EDEM计算完毕 ②左上角,点击输出data 先点击一下 然后再把EXPORT FORMAT改为ensight的格式 file name选择要保存到的文件夹,保存格式为.case文件 设置保存的时间步 填入“10”的意思是0.01*10=0.1,在ensight中以0.1的时间步展示结果 点击queries 在ensight里只能…

七段显示译码器

我们会把它放在系统中来显示多位&#xff0c;很多位的表达会用到小数点 12.34 我只想显示&#xff0c;我现实系统的数字大小有一个范围&#xff0c;比如整数四位&#xff0c;小数四位 我显示12.34 就意味着首先两位就是空着&#xff0c;最后两位也是空着 这几位从输入的数字…

Android 基础知识4-1 用户界面简介VIewGroup、Onclick事件处理

引言&#xff1a; 一个好的应用界面的必备条件是&#xff1a;内容清楚、指示明白、屏幕美观和有亲切感。界面通常包含图形和文字。应用界面的设计是对控件进行适当的取舍及功能的选择和处理的过程。在程序设计中&#xff0c;需要对设计的方法反复推敲、琢磨&#xff0c;才能使其…

spfa算法判断负环【什么是负环】【出现负环会怎么样】【牢记,此时不是求最短路】

欢迎观看我的博客&#xff0c;如有问题交流&#xff0c;欢迎评论区留言&#xff0c;一定尽快回复&#xff01;&#xff08;大家可以去看我的专栏&#xff0c;是所有文章的目录&#xff09; 文章字体风格&#xff1a; 红色文字表示&#xff1a;重难点 蓝色文字表示&#xff1a;思…

【推荐题目】

一&#xff0c;题目 1. 猪队友&#xff08;pigmate.cpp&#xff09; 【问题描述】 "不怕神一样的对手&#xff0c;就怕猪一样的队友"&#xff0c;这不&#xff0c;小A需要将小B写的 n 张不同的明信片 放到一一对应的 n 个不同的信封中去&#xff0c;可是不管你信不…

代码不到200行!Tkinter上课点名程序来了

前言 今天给大家分享一个比较有意思的Python应用&#xff0c;使用Tkinter开发了一款上课点名程序&#xff0c;此程序可以用于点名、抽奖代码不到200行&#xff0c;程序简单又实用&#xff0c;分享给到大家&#xff5e; 开发工具 Python版本&#xff1a; 3.8 相关模块&#xff1…

I2C、SPI、CAN、PCIe 对比

唯一标识 在社会上&#xff0c;靠身份证号&#xff0c;来唯一标识一个人。 在计算机的世界里&#xff0c;通过什么来唯一标识一个外设呢&#xff1f;方案还不止一种 I2C 使用地址&#xff08;7 或 10 位&#xff09;来唯一标识一个外设 SPI 使用 CS 引脚来唯一确定通信的外设…

0.安装和配置

我们不要怕&#xff0c;我们要一直向前&#xff0c;为了我们的目标。 对应关系是: https://www.rabbitmq.com/which-erlang.html 安装 Erlang https://www.erlang.org/downloads 选中 64 位 进行下载 下载后&#xff0c;双击 进行安装 选择 安装的路径 路径为&#xff1a; …

[附源码]计算机毕业设计校园招聘系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

Android深色主题背景的实现及主题背景颜色互换

layout: post title: Android深色主题背景的实现及主题背景颜色互换 date: 2-12-03 21:52:38 发布 author: ‘zhangtao’ header-img: ‘img/post-bg-2015.jpg’ catalog: false tags: -android -android studio -ide 目录 深色主题背景的优势&#xff1a; 如何实现Android的…

MySQL进阶

文章目录数据库约束NULL约束UNIQUE&#xff1a;唯一约束DEFAULT&#xff1a;默认值约束PRIMARY KEY&#xff1a;主键约束FOREIGN KEY&#xff1a;外键约束表的设计——一对一、一对多、多对多增删改查进阶聚合函数Group by分组having:分组后的条件过滤联合查询内连接外连接自连…

【 第六章 事务操作、事务四大特性、并发事务问题、事务隔离级别】

第六章 事务操作、事务四大特性、并发事务问题、事务隔离级别 1.事务简介&#xff1a; ①事务是一组操作的集合&#xff0c;它是一个不可分割的工作单位&#xff0c;事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0…

Kafka - 13 Java 客户端实现消费者消费消息

文章目录1. 独立消费者案例&#xff08;订阅主题&#xff09;2. 独立消费者案例&#xff08;订阅分区&#xff09;3. 消费者组案例1. 独立消费者案例&#xff08;订阅主题&#xff09; 需求&#xff1a;创建一个独立消费者&#xff0c;消费主题中数据&#xff1a; [roothadoo…

Linux系统移植三:移植Kernel生成zImage和dtb文件

Linux系统移植系列 Linux系统移植一&#xff1a;移植U-BOOT 添加自己的板子并编译&#xff08;非petalinux版&#xff09; Linux系统移植二&#xff1a;生成fsbl引导文件并制作BOOT.bin 下载源码包 Xilinx官方linux源码包下载地址&#xff1a;https://github.com/Xilinx/lin…

linux+window+macos下的JDK安装

1. Linux中安装JDK &#xff08;1&#xff09;下载Linux版本的jdk压缩包 &#xff08;2&#xff09;解压 tar -zxvf 压缩包名 例如&#xff1a; tar -zxvf jdk-8u251-linux-x64.tar.gz&#xff08;3&#xff09;在系统配置文件配置java 编辑profile配置文件 vim /etc/prof…

JVM Metaspace内存溢出问题

更多内容&#xff0c;前往 IT-BLOG 一、现象 x项目线上环境因为jvm报OOM的异常而报警,导致整个服务不可用并被拉出集群,现象如下: 当时的解决方案是增加metaspace的容量: -XX:MaxMetaspaceSize512m, 从原来默认的256m改为512m, 虽然没有再出现oom,但这个只是临时解决方案,通过…