MATLAB代码:配网节点电价 DLMP 考虑网损,电压,阻塞的配电网二阶锥节点电价 (DLMP)需要gurobi求解器

news2024/11/18 13:51:40

MATLAB代码:配网节点电价 DLMP

关键词:DLMP SOCP lindistflow
参考文档:《Distribution Locational Marginal Pricing (DLMP) for Congestion Management and Voltage Support》2018 SCI一区 IEEE Transactions on Power System 非完美复现
仿真平台:MATLAB+Gurobi
主要内容:

  1. 考虑网损,电压,阻塞的配电网二阶锥节点电价 (DLMP)需要gurobi求解器;
    2.在原本lindistflow上使用了二阶锥,精确了模型;
    3。
    可以轻松加东西,全网唯一
    4.PDF为参考文献,并非完美复现。

这段代码是一个用于优化配电网运行的算法。以下是对代码的解释:

首先,代码进行了一些初始化操作,如清除变量、设置格式和警告等。

然后,定义了一些常量和数据,包括优化时刻(NT)、基准功率(SB)、基准电压(VBase)等。

接下来,定义了配电网的拓扑结构和参数,包括线路号、首节点、末节点、阻抗、电流等。

代码中还定义了一些预测数据,如负荷值、风机出力等。

然后,定义了一些决策变量,如线路功率、节点电压、风机出力等。

接下来,定义了一些约束条件,如潮流约束、电压约束、无功补偿约束等。

最后,定义了目标函数,即最小化购电成本或最小化网损。

使用优化求解器对约束条件和目标函数进行求解。

这段代码是一个用Matlab编写的配电网优化问题的求解程序。它主要通过优化算法来确定配电网的运行策略,以最小化成本和确保系统的安全运行。以下是对代码的分析:

首先,代码定义了一些常量和变量,包括优化时刻(NT)、基准功率(SB)、基准电压(VBase)等。这些常量和变量用于计算和约束配电网的各项参数。

接下来,代码定义了一个包含配电网数据的矩阵PDN_Data。该矩阵包含了每条线路的起始节点、终止节点、电阻、电抗等信息。这些数据用于计算潮流方程和约束条件。

代码接着定义了一些变量,包括负荷功率(P_load、Q_load)、电压幅值(U2)、线路功率(P、Q)、风机出力(P_Wind)等。这些变量用于表示配电网的状态和决策变量。

代码定义了一系列约束条件,包括潮流方程、节点电压上下限、线路电流约束等。这些约束条件用于确保配电网的安全运行和满足系统要求。

代码定义了一个目标函数,即最小化成本。成本包括从上级电网购电的成本和网损的成本。通过优化算法,代码寻找最优的运行策略,以最小化成本。

最后,代码使用优化算法对定义的目标函数和约束条件进行求解。如果求解成功,将输出最优解的成本和其他相关信息。

该代码的优势在于它通过优化算法来求解配电网的运行策略,以最小化成本和确保系统的安全运行。它考虑了各种约束条件,如潮流方程、节点电压上下限、线路电流约束等,以保证系统的稳定性和可靠性。此外,代码还考虑了风机出力和无功补偿等因素,以进一步优化系统的运行效果。通过对目标函数和约束条件的优化求解,代码可以找到最优的运行策略,从而降低配电网的运行成本。

这段代码是一个MATLAB程序,主要用于配电网的优化调度问题。下面是对代码的逐行解释:

tic:开始计时,用于计算程序的运行时间。
clc; clear; close all;:清除命令行窗口的内容,清除所有变量,并关闭所有图形窗口。
format short:设置输出格式为短格式,即小数点后保留4位。
warning off:关闭警告信息的显示。
NT = 24;:定义优化时刻的数量为24。
SB = 10;:定义基准功率为10 MVA。
VBase = 12.66;:定义基准电压为12.66 kV。
ZB = VBase^2 SB;:计算基准电阻抗。
IB = SB (sqrt(3)*VBase);:计算基准电流。
PDN_Data = […:定义一个包含配电网数据的矩阵,包括线路号、首节点、末节点、阻抗、抗抗、线路最大潮流和线路最小潮流等信息。
NL = size(PDN_Data,1); NB = NL + 1 ;:计算线路数量和节点数量。
L_i = PDN_Data(:,2);:提取PDN_Data矩阵中的首节点信息。
L_j = PDN_Data(:,3);:提取PDN_Data矩阵中的末节点信息。
P_load = PDN_Data(:,4);:提取PDN_Data矩阵中的有功负荷信息。
Q_load = PDN_Data(:,5);:提取PDN_Data矩阵中的无功负荷信息。
R = PDN_Data(:,6) ZB;:计算线路阻抗的标幺值。
X = PDN_Data(:,7) ZB;:计算线路抗抗的标幺值。
Pmax = PDN_Data(:,8) SB;:计算线路最大潮流的标幺值。
Pmin = PDN_Data(:,9) SB;:计算线路最小潮流的标幺值。
U2_min = 0.90^2;:定义电压的最小值的平方。
U2_max = 1.05^2;:定义电压的最大值的平方。
Ind_SubLine = zeros(NL,2);:创建一个大小为NL×2的零矩阵,用于存储各条线路的子线路编号。
for i = 1: NL:循环遍历所有线路。
temp = find(L_i == L_j(i));:找到首节点等于当前末节点的线路索引。
if ~isempty(temp):如果找到了子线路。
Ind_SubLine(i,1:length(temp)) = temp;:将子线路的索引存储到Ind_SubLine矩阵中。
end:结束if语句。
Pd_total = [63 62 60 58 59 65 72 85 95 99 100 99 93 92 90 88 90 92 96 98 96 90 80 70];:定义24小时的负荷值。
Qd_total = [63 62 60 58 59 65 72 85 95 99 100 99 93 92 90 88 90 92 96 98 96 90 80 70];:定义24小时的无功负荷值。
Pd = P_load * Pd_total 1000000;:计算潮流方程右侧的有功负荷值。
Qd = Q_load * Qd_total 1000000;:计算潮流方程右侧的无功负荷值。
Pd=[zeros(1,24);Pd];:在Pd矩阵的第一行添加一个全零行。
Qd=[zeros(1,24);Qd];:在Qd矩阵的第一行添加一个全零行。
Ind_DG = [33];:定义分布式发电机节点的索引。
Ind_SVC = [12 7 ];:定义无功补偿器节点的索引。
Winddata = [2 1];:定义风机节点的信息。
P_WT_ratio = 0.5;:定义风机的额定功率。
P_WT_level = [0.57 0.69 0.74 0.77 0.80 0.56 0.45 0.27 0.10 0.15 0.29 0.36 …:定义风机的预测出力百分比。
P_WT_pre = P_WT_level SB;:将风机的预测出力转换为标幺值。
P_WT_min = zeros(NB,24);:创建一个大小为NB×24的零矩阵,用于存储风机的最小出力。
P_WT_max = zeros(NB,24);:创建一个大小为NB×24的零矩阵,用于存储风机的最大出力。
P_WT_min(Ind_DG,:) = 0;:将分布式发电机节点的最小出力设置为零。
P_WT_max(Ind_DG,:) = P_WT_pre;:将分布式发电机节点的最大出力设置为预测出力。
SVC = [0.2 -0.2; 0.15 -0.15];:定义连续无功补偿器的最大和最小出力。
SVC(:,2:3) = SVC(:,1:2) SB;:将连续无功补偿器的出力转换为标幺值。
SVC_max = SVC(:,1);:提取连续无功补偿器的最大出力。
SVC_min = SVC(:,2);:提取连续无功补偿器的最小出力。
P = sdpvar(NL,NT);:定义一个大小为NL×NT的决策变量P,表示线路首端的有功功率。
Q = sdpvar(NL,NT);:定义一个大小为NL×NT的决策变量Q,表示线路首端的无功功率。
P_kidLine = sdpvar(NL,NT);:定义一个大小为NL×NT的决策变量P_kidLine,表示各条线路紧邻的下游子线路首端的功率。
Q_kidLine = sdpvar(NL,NT);:定义一个大小为NL×NT的决策变量Q_kidLine,表示各条线路紧邻的下游子线路首端的无功功率。
U2 = sdpvar(NB,NT);:定义一个大小为NB×NT的决策变量U2,表示节点的电压幅值的平方。
I2 = sdpvar(NL,24);:定义一个大小为NL×24的决策变量I2,表示线路的电流幅值的平方。
P_Wind = sdpvar(NB,NT);:定义一个大小为NB×NT的决策变量P_Wind,表示风机的出力。
Qg_SVC = sdpvar(NB,NT);:定义一个大小为NB×NT的决策变量Qg_SVC,表示连续无功补偿器的出力。
P_buy = sdpvar(1,NT);:定义一个大小为1×NT的决策变量P_buy,表示从上级电网购电的功率。
Q_buy = sdpvar(1,NT);:定义一个大小为1×NT的决策变量Q_buy,表示从上级

请添加图片描述

ID:77800680968629908

请添加图片描述

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

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

相关文章

使用 Jetpack Compose 构建 CircularProgressIndicator

欢迎阅读这篇关于如何使用 Jetpack Compose 构建 CircularProgressIndicator(圆形进度指示器)的博客。Jetpack Compose 是 Google 推出的一款现代化 UI 工具包,用于构建 Android 界面。其声明式的设计使得 UI 开发更加简洁、直观。 一、什么…

Spring 中的 bean 是线程安全的吗?

spring 是一款非常流行的 Java 开源框架,它主要用于构建企业级应用程序。Spring 的 IoC 和AOP技术能够帮助开发人员更加便捷地组织和管理 Java 代码。 在 Spring 中,bean 默认是单例模式,也就是说,每个 bean 只会被 Spring 容器创…

Mac电脑硬件/软件运行状况查看工具

iStat Menus是一款系统监控和管理工具,旨在帮助Mac用户实时监控电脑的各项硬件和软件信息。它以直观和定制化的方式提供了丰富的系统状态指标,让用户能够全面了解和管理自己的Mac电脑。 iStat Menus提供了一系列的菜单栏指示项目,可以显示诸如…

NoSQL之 Redis 配置与优化

目录 一、关系型数据库与非关系型数据库1.1 关系型数据库:1.2 非关系型数据库1.3 关系型数据库和非关系数据库的区别1.3.1 数据存储方式不同1.3.2 扩展方式不同1.3.3 对事务性的支持不同 1.4 非关系型数据库的产生背景1.5 总结 二、Redis介绍三、 Redis 的优点四、 …

深入浅出设计模式 - 建造者模式

博主介绍: ✌博主从事应用安全和大数据领域,有8年研发经验,5年面试官经验,Java技术专家✌ Java知识图谱点击链接:体系化学习Java(Java面试专题) 💕💕 感兴趣的同学可以收…

fatal: not a git repository (or any of the parent directories): .git 解决方案

fatal: not a git repository (or any of the parent directories): .git致命:不是git存储库(或任何父目录):.git 解决办法: 在命令行 输入 git init 然后回车就好了 git init

JSON-TO-PROTOBUF

url https://json2pb.vercel.app/

PMP认证考试的价值和前景:值得投资吗?

因为我身边很多小伙伴都在纠结考个PMP证书要花小一万,完事到底值不值得投资这个问题?那咱们今的主题就是浅说一下PMP考试的价值和前景叭~ PMP的价值 1.PMP证书能够适用于很多行业,就业范围比较广,比如航天、通讯、电子、计算机、…

【雕爷学编程】Arduino动手做(132)---KY-027魔术光环模块

7款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&…

UDP套接字的通信(实现英汉互译/程序替换/多线程聊天室/Windows与Linux通信)

实现英汉互译 思路 我们在客户端发英文,服务端做翻译工作,让翻译好的中文再次发给我们的客户端,然后打印出来。 服务端代码 翻译的操作 创建一个txt文件里面包含英汉互译的数据 dict.txt banana:香蕉 apple:苹果 pig:猪 beef:牛肉 hello…

Liux上使用POI将Word转PDF中文字体无法显示问题解决

错误信息: Windows测试下载PDF没有任何问题,打包上传Linux服务器以后下载PDF只显示数字。 解决方法: 1、Word转换PDF成功但是中文显示不出都是因为字体的问题 下面的方法简单粗暴,但是解决了我的问题: a、将C:\Wind…

面试官:“你还有什么想问我的吗?”(攻略版,建议收藏系列)

面试官:“你还有什么想问我的吗?”(攻略版,建议收藏系列) 此类问题大致分为三种情形:部门负责人面、HR面、高层领导面。 一、部门负责人面 【判断自己的业务能力和性格特点是否与岗位匹配度高】 此时&am…

ADB usage

查看手机设备的信息 获取设备的Android版本号 adb shell getprop ro.build.version.release 获取设备的API版本号 adb shell getprop ro.build.version.sdkAdb 获得 sdk版本 adb shell getprop ro.build.version.sdk27 Adb 获得Android版本 adb shell getprop ro.build.vers…

深入了解glibc的互斥锁的加锁过程

深入了解glibc的互斥锁 互斥锁是多线程同步时常用的手段,使用互斥锁可以保护对共享资源的操作。共享资源也被称为临界区,当一个线程对一个临界区加锁后,其他线程就不能进入该临界区,直到持有临界区锁的线程释放该锁。 本文以gli…

品达通用权限系统-Day03

文章目录 1. 概述2. lombok(编码效率工具)2.1 lombok 简介2.2 安装lombok插件2.3 lombok常用注解2.4 lombok入门案例 3. Nacos(服务注册和配置中心)4. Redis(Windows版安装及使用) 1. 概述 本节主要讲述&a…

同城上门送酒小程序 uniapp用户端+vue/php后端+商家端+配送端源码

前端uniapp 跨平台框架 后端php vue.js框架 php7.2 mysql数据库 mysql5.6 <template> <view> <view id"mainPage" :style"{height:MainPageHeightrpx}"> <PageHome v-show"showPageinitIndex" …

序列到序列学习

将最后时刻的隐藏状态传给解码器。特定的“”表示序列开始词元&#xff0c;表示开始翻译。将此次翻译的结果作为下一次的输入&#xff0c;并将隐藏状态传递给下一时刻。最后可以拿到整个语言句子的输出。 将编码器最后一次的隐藏状态与解码器的第一次的输入&#xff0c;放在一…

工具篇9--Window 虚拟机安装

文章目录 前言一、虚拟机是什么&#xff1f;二、虚拟机安装1.下载虚拟机软件&#xff1a;2.下载centos 系统镜像&#xff1a;3.虚拟机安装&#xff1a;3.1 关闭杀毒软件&#xff1a;3.2 重启后继续安装&#xff1a;3.3 修改vm 安装的位置&#xff1a;3.4 勾掉用户体验后下一步完…

PostgreSQL Log 日志模块详解

本文讲的是操作日志&#xff0c;非 WAL 日志。 文章目录 背景日志模块原理Syslogger 核心模块日志消息通信日志轮转问题一问题二问题三问题四问题五 存在的问题刷盘性能日志轮转 参考资料 背景 PG 的日志模块是一个相对独立的模块&#xff0c;主要功能就是打印用户的操作日志以…

【MATLAB第46期】基于MATLAB的改进模糊卷积神经网络IFCNN分类预测模型

【MATLAB第46期】基于MATLAB的改进模糊卷积神经网络IFCNN多分类预测模型 一、展示效果 二、思路 在正常CNN卷积神经网络训练阶段之后&#xff0c;使用进化算法&#xff08;蜜蜂算法&#xff09;拟合深度学习权重和偏差。 本文案例数据中&#xff0c; 用深度模型进行4分类预测…