Matlab|考虑源荷两侧不确定性的含风电电力系统低碳调度

目录

1 主要内容

目标函数:

约束条件:

程序亮点总结:

2 代码问题与程序测试

设备出力运行结果:

3 下载链接 


主要内容

本程序是对《考虑源荷两侧不确定性的含风电电力系统低碳调度》的方法复现,主要实现了基于模糊机会约束的源荷两侧不确定性对含风电电力系统低碳调度的影响,将源荷不确定性采用清晰等价类进行处理,最终采用matlab+cplex进行求解。

目标函数:

约束条件:

功率平衡约束
新能源出力约束
常规水电机组约束
火电机组出力、爬坡、最小启停时间约束
储能约束
旋转备用约束

程序亮点总结:

  1. 非线性处理,很显然,火电机组成本目标函数里含有两个非线性项:分别是平方项和两个布尔变量乘积,但是源程序这里还是存在问题的,详细看第二节程序运行对比。
  2. 火电机组最小启停时间约束,这个程序理解可以看文末视频。

代码问题与程序测试

该程序代码为本人早期编写,代码弱点也很清楚,经过n次打磨,现可以就这部分问题进行分享,一是线性化处理的部分缺少一个约束,导致线性化处理不等价,存在严重偏差。

平方项分段线性化代码如下:

%分段线性化
gn=5;
gl1=(Pgmax-Pgmin)./gn;
gl2=zeros(5,gn+1);
for i=1:5
gl2(i,:)=Pgmin(i):gl1(i):Pgmax(i);
end
​
cons = [cons, x_pf(1,:)==gl2(1,:).^2*gw1];
cons = [cons, x_pf(2,:)==gl2(2,:).^2*gw2];
cons = [cons, x_pf(3,:)==gl2(3,:).^2*gw3];
cons = [cons, x_pf(4,:)==gl2(4,:).^2*gw4];
cons = [cons, x_pf(5,:)==gl2(5,:).^2*gw5];
cons = [cons, gw1(1,:)<=gz1(1,:)];
for i=2:gncons = [cons, gw1(i,:)<=gz1(i-1,:)+gz1(i,:)];
end
cons = [cons, gw1(gn+1,:)<=gz1(gn,:)];
cons = [cons, sum(gz1)==ones(1,Horizon)];
cons = [cons, gw2(1,:)<=gz2(1,:)];
for i=2:gncons = [cons, gw2(i,:)<=gz2(i-1,:)+gz2(i,:)];
end
cons = [cons, gw2(gn+1,:)<=gz2(gn,:)];
cons = [cons, sum(gz2)==ones(1,Horizon)];
cons = [cons, gw3(1,:)<=gz3(1,:)];
for i=2:gncons = [cons, gw3(i,:)<=gz3(i-1,:)+gz3(i,:)];
end
cons = [cons, gw3(gn+1,:)<=gz3(gn,:)];
cons = [cons, sum(gz3)==ones(1,Horizon)];
cons = [cons, gw4(1,:)<=gz4(1,:)];
for i=2:gncons = [cons, gw4(i,:)<=gz4(i-1,:)+gz4(i,:)];
end
cons = [cons, gw4(gn+1,:)<=gz4(gn,:)];
cons = [cons, sum(gz4)==ones(1,Horizon)];
cons = [cons, gw5(1,:)<=gz5(1,:)];
for i=2:gncons = [cons, gw5(i,:)<=gz5(i-1,:)+gz5(i,:)];
end
cons = [cons, gw5(gn+1,:)<=gz5(gn,:)];
cons = [cons, sum(gz5)==ones(1,Horizon)];
cons = [cons, PG(1,:)==gl2(1,:)*gw1];
cons = [cons, PG(2,:)==gl2(2,:)*gw2];
cons = [cons, PG(3,:)==gl2(3,:)*gw3];
cons = [cons, PG(4,:)==gl2(4,:)*gw4];
cons = [cons, PG(5,:)==gl2(5,:)*gw5];

平方线性化的理论很简单,分段采用直线代替曲线,很多文献都采用这种方法来处理,这段线性化约束中x_pf为PG的平方项变量,因为没有设定x_pf大于等于0的约束,导致程序结果出现严重错误,下图为截取的部分运行结果,优化结果中x_pf存在小于0的数值,这是严重不对的。

设备出力运行结果:

补充上x_pf大于等于0的约束后,x_pf就不会出现负值。将PG进行平方和x_pf进行对比看一下误差情况。

这是1个火电机组的优化结果对比,PG的平方远比其线性化后的平方值大,这和火电机组运行区间以及线性化的精细度相关,但是这种偏差会导致结果与预期差距大,并且找不出程序原因。

大家可以翻看一下【深度学习】模块的资料,里面有关于非线性的例子,我们采用直接非线性约束的方式进行优化,看一下优化结果。

为了对比一下优化结果的差异性,见下面对比图。

很明显存在较大差异,再来看一下平方项的对比图。

两条曲线完全重合,说明采用非线性化约束得到的结果没有问题,对于哪种情况下可以直接非线性约束哪种情况需要线性化,后期我专题分享一下这部分内容。

本次将线性化处理后的程序和非线性约束直接表达的程序一并打包,以供大家在学术过程中做个对比,方便大家不断探索和进步,下面贴出其他部分程序代码。

Pgmin=[230 200 150 120 70]';%火电机组功率下限
Pgmax=[460 400 350 300 150]';%火电机组功率上限
Phmin=0;%水电下限
Phmax=280;%水电上限
rud=[240 210 150 120 70]';%火电爬坡
On_min=[8 7 6 4 3]';%开机时间
Off_min=[8 7 6 4 3]';%关机时间
a=1e-5.*[1.02 1.21 2.17 3.42 6.63]';%火电机组表格数据,下同
b=[0.277 0.288 0.29 0.292 0.306]';
c=[9.2 8.8 7.2 5.2 3.5]';
Sit=[25.6 22.3 16.2 12.3 4.6]';
e=[0.877 0.877 0.877 0.877 0.979]';
lam=[0.94 0.94 0.94 0.94 1.03]';
%储能参数
capmax=400;
EESmax=100;
EESmin=0;
socmax=0.9;
socmin=0.2;
theta=0.01;%自放电率
yita=0.95;
%-------------
w=50;d=100;tao=0.25;%碳交易价格、区间长度、增长幅度
Horizon=24;%时间参数
ngen=5;%火电机组数量
%% 决策变量
PG = sdpvar(ngen, Horizon);%火电
PH = sdpvar(1, Horizon);%水电
x_P_ch = sdpvar(1, Horizon);%充电
x_P_dis = sdpvar(1, Horizon);%放电
x_P_w = sdpvar(1, Horizon);%风电
x_P_v = sdpvar(1, Horizon);%水电
x_u_ch = binvar(1, Horizon);%充电状态
x_u_dis = binvar(1, Horizon);%放电状态
OnOff = binvar(ngen,Horizon);%火电机组状态
lin = sdpvar(1, Horizon);%目标3中间变量
%P的平方线性化参数
gn=5;
x_pf=sdpvar(ngen, Horizon);
gw1=sdpvar(gn+1,Horizon);
gw2=sdpvar(gn+1,Horizon);
gw3=sdpvar(gn+1,Horizon);
gw4=sdpvar(gn+1,Horizon);
gw5=sdpvar(gn+1,Horizon);
gw6=sdpvar(gn+1,Horizon);
gz1=binvar(gn, Horizon);gz2=binvar(gn, Horizon);gz3=binvar(gn, Horizon);gz4=binvar(gn, Horizon);gz5=binvar(gn, Horizon);
%模型构建
%% 约束条件生成
cons = [];
%火电机组cons_gen = getConsGen1(PG,Pgmax,Pgmin,rud, Horizon,OnOff,On_min,Off_min);cons = [cons, cons_gen];
%水电机组
cons = [cons, repmat(Phmin,1,Horizon)<=PH<=repmat(Phmax,1,Horizon)];
%储能约束cons_ees = getConsEES(x_P_ch, x_P_dis, x_u_ch, x_u_dis, EESmax, EESmin, capmax, Horizon,theta);cons = [cons, cons_ees];
%新能源出力约束
cons = [cons,0 <= x_P_w <=pw, 0 <= x_P_v <=pv]; 

3 下载链接 

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

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

相关文章

【QT+QGIS跨平台编译】之七十六:【QGIS_Native+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

文章目录 一、QGIS_Native介绍二、QGIS下载三、文件分析四、pro文件五、编译实践一、QGIS_Native介绍 QGIS_Native模块是QGIS软件的核心部分,提供了许多基本功能和核心组件,主要用于处理与底层操作系统的关系。 二、QGIS下载 QGIS网址: QGIS Source Download 三、文件分析…

LeetCode:2386. 找出数组的第 K 大和(优先级队列 Java)

目录 2386. 找出数组的第 K 大和 题目描述&#xff1a; 实现代码与解析&#xff1a; 优先级队列&#xff08;小顶堆&#xff09; 原理思路&#xff1a; 2386. 找出数组的第 K 大和 题目描述&#xff1a; 给你一个整数数组 nums 和一个 正 整数 k 。你可以选择数组的任一 子…

Django学习笔记

Django学习笔记 一、Django整体流程跑通 1.1安装 pip install django //安装 import django //在python环境中导入django django.get_version() //获取版本号&#xff0c;如果能获取到&#xff0c;说明安装成功Django目录结构 Python310-Scripts\django-admi…

前端框架的发展历程

文章目录 前言 一、静态页面时代 二、JavaScript的兴起 三、jQuery的出现 四、前端框架的崛起 1.AngularJS 2.React 3.Vue.js 五、面向组件化的发展趋势 总结 前言 前端框架的发展史就是一个不断进化的过程&#xff0c;它的发展和进化一定程度…

力扣刷题Days14第二题--80删除数组中重复元素||(js)

目录 1&#xff0c;题目-中等 2&#xff0c;代码 双指针 3&#xff0c;学习与总结 思路学习与整理 1&#xff0c;题目-中等 给你一个有序数组 nums &#xff0c;请你 原地 删除重复出现的元素&#xff0c;使得出现次数超过两次的元素只出现两次 &#xff0c;返回删除后数组…

区块链和人工智能的关系以及经典案例

目录 1.区块链与人工智能的关系 2.应用案例&#xff1a;基于区块链的医疗数据共享平台 2.1背景 2.2方案 2.3优势 2.4挑战 区块链技术和人工智能&#xff08;AI&#xff09;是两种不同的技术&#xff0c;但它们之间存在着互补关系。区块链技术提供了一种安全、透明、去中心…

Android Studio下载gradle超时问题解决

方法一 1. 配置根目录的setting.gradle.kts文件 pluginManagement {repositories {maven { urluri ("https://www.jitpack.io")}maven { urluri ("https://maven.aliyun.com/repository/releases")}maven { urluri ("https://maven.aliyun.com/repos…

Ubuntu18.04添加内核模块(字符设备)

Ubuntu18.04添加内核模块&#xff08;字符设备&#xff09; 虚拟机Ubuntu18.04&#xff08;内核版本linux-5.4.0-135-generic&#xff09; 参考 嵌入式Linux驱动开发&#xff08;一&#xff09;——字符设备驱动框架入门 1 编译内核模块 创建字符设备代码文件char_dev.c&a…

Open-Sora:开源 Sora 复现方案,成本降低 46%

Colossal-AI 开源了完整的 Sora 复现架构方案 Open-Sora&#xff0c;声称可降低 46% 复现成本&#xff0c;并将模型训练输入序列长度扩充至 819K patches。 演示站点&#xff1a; https://ai.uaai.cn UAAI 官方论坛&#xff1a; www.jingyuai.com京娱AI Sora 算法复现方案 在 …

springboot256基于springboot+vue的游戏交易系统

游戏交易系统设计与实现 摘 要 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&#xff0c;对游戏交…

[LeetCode][LCR143]树的子结构判断——递归

题目 LCR 143. 子结构判断 给定两棵二叉树 tree1 和 tree2&#xff0c;判断 tree2 是否以 tree1 的某个节点为根的子树具有相同的结构和节点值。注意&#xff0c;空树不会是以 tree1 的某个节点为根的子树具有相同的结构和节点值。 示例&#xff1a; 输入&#xff1a;tree1 …

3.9Code

基于顺序存储结构的图书信息表的图书去重 #include<iostream> #include<stdlib.h> #include<string.h>typedef int status;#define OK 1using namespace std;typedef struct{char no[50];char name[50];float price; }Book;typedef struct{Book* elem;int …

【leetcode热题】LRU缓存机制

难度&#xff1a; 困难通过率&#xff1a; 23.0%题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 题目描述 运用你所掌握的数据结构&#xff0c;设计和实现一个 LRU (最近最少使用) 缓存机制。它应该支持以下操作&#xff1a; 获取数据 get 和 写入数据 put …

鸿蒙App动画、弹窗

动画 属性动画 https://developer.harmonyos.com/cn/docs/documentation/doc-references-V3/ts-animatorproperty-0000001478181445-V3 组件的某些通用属性变化时&#xff0c;可以通过属性动画实现渐变过渡效果&#xff0c;提升用户体验。支持的属性包括width、height、backg…

【软件工程】软件工程定义、软件危机以及软件生命周期

&#x1f338;博主主页&#xff1a;釉色清风&#x1f338;文章专栏&#xff1a;软件工程&#x1f338; 今日语录&#xff1a;What matters isn’t how others think of your ambitions but how fervently you cling to them. 软件工程系列&#xff0c;主要根据老师上课所讲提及…

【ubuntu】安装 Anaconda3

目录 一、Anaconda 说明 二、操作记录 2.1 下载安装包 2.1.1 官网下载 2.1.2 镜像下载 2.2 安装 2.2.1 安装必要的依赖包 2.2.2 正式安装 2.2.3 检测是否安装成功 方法一 方法二 方法三 2.3 其他 三、参考资料 3.1 安装资料 3.2 验证是否成功的资料 四、其他 …

基于机器学习的工业用电量预测完整代码数据

视频讲解: 毕业设计:算法+系统基于机器学习的工业用电量预测完整代码数据_哔哩哔哩_bilibili 界面展示: 结果分析与展示: 代码: from sklearn import preprocessing import random from sklearn.model_selection import train_test_split from sklearn.preprocessing…

tensorflow 的学习与应用

文章目录 一、tensorflow 是什么二、TensorFlow 基本概念详解三、如何学习 TensorFlow四、TensorFlow 的应用领域 一、tensorflow 是什么 TensorFlow是由Google Brain团队开发的功能强大的开源软件库&#xff0c;用于实现深度神经网络。它可以帮助简化神经网络的编写和部署过程…

vue element plus Typography 排版

我们对字体进行统一规范&#xff0c;力求在各个操作系统下都有最佳展示效果。 字体# 字号# LevelFont SizeDemoSupplementary text12px Extra SmallBuild with ElementBody (small)13px SmallBuild with ElementBody14px BaseBuild with ElementSmall Title16px MediumBuild w…

个人健康管理系统|基于微信小程序的个人健康管理系统设计与实现(源码+数据库+文档)

个人健康管理小程序目录 目录 基于微信小程序的个人健康管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1、用户信息管理 2 运动教程管理 3、公告信息管理 4、论坛信息管理 四、数据库设计 1、实体ER图 五、核心代码 六、论文参考 七、最新计算机毕设…