MATLAB|电气互联系统有功-无功协同优化模型

news2025/2/5 10:51:24

目录

1 主要内容

模型示意图

目标函数

程序亮点

2 部分程序

3 程序结果

4 下载链接


主要内容

本程序基本复现《“碳中和”目标下电气互联系统有功-无功协同优化模型》,文献模型提供了一个很好的创新思路,把常规电气互联系统的调度和有功无功优化结合起来,增加可再生能源无功、电容器、SVC、OLTC等调节设备,采用二阶锥松弛法对配网模型非线性约束进行凸松弛,采用大M法对离散无功补偿装置的投切容量进行线性化表达,将模型转换为混合整数二阶锥规划问题 进行求解,程序采用matlab+gurobi(cplex)进行求解,注释清晰,方便研究借鉴!

  • 模型示意图

注意:本程序采用以修改的IEEE33节点配电网和比利时20节点配气网耦合形成的电气互联系统作为测试算例,虽然设备安装位置以及参数和文献会存在细微差别,但是文献中的设备模型以及约束内容基本实现,是个很好的学习资料。
  • 目标函数

采用购电成本最小和网损最小为目标,并增加电压偏差最小作为可选项(由于非线性,需要采用gurobi才能求解此目标),其他两个采用cplex即可求解。
目标函数代码:
%%%% PDN 购电成本最小
Ele_price = [361.28 333.13 304.97 286.75 264.18 292.15 433.93 683.00 863.30 784.88 629.56 556.88 ... 
       533.63 517.60 489.99 470.52 521.10 709.54 1010.67 1213.17 1178.29 930.13 614.56 439.71]; % 24h电价 元/MW*h
Ele_price = Ele_price * 1e4; % 元/p.u.*h
Obj_grid = Ele_price * Pgrid';
%%%% 网损最小
for t = 1:24
  Obj_Ploss24(t) = sum(I2(1:32,t) .* R); % 
end
Obj_Ploss = sum(Obj_Ploss24); 
%%%% 电压偏差最小
% Obj_Vol = sum(sum(U2 - 1.05^2*ones(33,24))); % 电压偏差要用 gurobi gap设定才易求解
  • 程序亮点

  1. 程序整体比较大,有500余行,包括潮流约束、设备出力约束、无功约束以及线性化部分,涵盖内容比较广泛,学习的“料”够足。
  2. 最近很多咨询答疑讲解的,这种较大的模型会专门录制讲解视频,敬请期待

部分程序

% 二阶锥约束,数学表达式是转换成标准二阶锥,此处用一般形式,方便编程
    Cons_SOC = [Cons_SOC, I2 .* U2(L_i,:) >= P.^2 + Q.^2];
for t = 1:NT  
    for i = 1:NL
%%%%% 含 离散电容器组 的相关约束
        if ~isempty(find(Ind_ComCap == L_j(i))) % 安装补偿电容
            Cj_count(t) = Cj_count(t) + 1;
            % 式 28 delta:σ   式中Ci_min那儿少写了一个uj
            Cons_Q = [Cons_Q, Q(i,t) - X(i)*I2(i,t) + ...
                 0.5*(U2(L_j(i),t)*Cj_min(Cj_count(t),1) + Sj(Cj_count(t))*(2^0*dlt{Cj_count(t)}(1,t) + 2^1*dlt{Cj_count(t)}(2,t) + 2^2*dlt{Cj_count(t)}(3,t))) + ...
                              Qg_SVC(L_j(i),t) ...
                              == QkidLine(i,t) + Qd(L_j(i),t)];  
        for  m = 1:v+1  % 含离散电容补偿的电压线性化约束 Eq38
             Cons_U = [Cons_U, U2(L_j(i),t) - M*(1-xd{Cj_count(t)}(m,t)) <= dlt{Cj_count(t)}(m,t) <= U2(L_j(i),t) + M*(1-xd{Cj_count(t)}(m,t))];
             Cons_U = [Cons_U, -M*xd{Cj_count(t)}(m,t) <= dlt{Cj_count(t)}(m,t) <= M*xd{Cj_count(t)}(m,t)];
        end
        Cons_U = [Cons_U, 0 <= ... % Eq39
                    2^0*xd{Cj_count(t)}(1,t)+ 2^1*xd{Cj_count(t)}(2,t) + 2^2*xd{Cj_count(t)}(3,t) ...
                    <= (Cj_max(Cj_count(t),1) - Cj_min(Cj_count(t),1))/Sj(Cj_count(t),1)]; 
    else % 未安装补偿电容 的 无功平衡约束
        Cons_Q = [Cons_Q, Q(i,t) - X(i)*I2(i,t) + Qg_SVC(L_j(i),t) + Qg_WT(L_j(i),:) == QkidLine(i,t) + Qd(L_j(i),t)]; 
    end
%%%%% 含 OLTC 的相关约束
        if ~isempty(find(Ind_OLTC == i)) % 含OTLC的支路的线性化约束 
            OTLC_count(t) = OTLC_count(t)+1; % t时刻 第1个OLTC, 第2个OlTC
            Cons_U = [Cons_U, sum(y_j{OTLC_count(t)}(:,t)./T_OLTC(:,t).^2,1) == U2(L_i(i),t) - (R(i)*P(i,t) + X(i)*Q(i,t))]; % OLTC所在支路电压差
            % 以下为OLTC相关约束
            for k = 1:n_OLTC
                Cons_U = [Cons_U, -M*(1-e_ij{OTLC_count(t)}(k,t)) + U2(L_j(i),t) <= y_j{OTLC_count(t)}(k,t) <= U2(L_j(i),t) + M*(1-e_ij{OTLC_count(t)}(k,t))];
                Cons_U = [Cons_U, -M*e_ij{OTLC_count(t)}(k,t) <= y_j{OTLC_count(t)}(k,t)<= M*e_ij{OTLC_count(t)}(k,t)];
            end
            Cons_U = [Cons_U,sum(e_ij{OTLC_count(t)}(:,t),1) == 1]; % 某一时刻 在11个档位中,只能有一个为1
        else
            % 不含OTLC的支路
            Cons_U = [Cons_U, U2(L_j(i),t)== U2(L_i(i),t) - 2*(R(i)*P(i,t)+X(i)*Q(i,t)) + (R(i)^2+X(i)^2)*I2(i,t)];
        end
    end
end
% 一些边界约束
    Cons_P = [Cons_P, repmat(Pmin,1,24) <= P <= repmat(Pmax,1,24)]; % 线路潮流约束
  Cons_P = [Cons_P, WT_Pg_min <= Pg_WT <= WT_Pg_max]; % 风机出力有功P上下限约束
  Cons_P = [Cons_P, PV_Pg_min <= Pg_PV <= PV_Pg_max]; % 光伏出力有功P上下限约束
    Cons_Q = [Cons_Q, Qg_WT_min <= Qg_WT <= Qg_WT_max];  % 风机出力无功P上下限约束
  Cons_Q = [Cons_Q, repmat(SVC_min,1,24) <= Qg_SVC(Ind_SVC,:) <= repmat(SVC_max,1,24)]; % 安装了SVC节点, 将 Qg_SVC出力限定在 上下限内
    
    Cons_U = [Cons_U, U2_min <= U2 <= U2_max]; % 节点电压 上下限约束
%     Cons_P = [Cons_P, Pgrid >= 0]; 
    Cons_Q = [Cons_Q, Qgrid >= 0];
    Cons_I = [Cons_I, I2 >= 0 ];
% GDN 约束条件
    Cons_GDN = [];
    alpha = repmat(alpha_Cmn,1,24);
%%%% 气流平衡约束 + A_GS*(GasStorge_out-GasStorge_in) 
  Cons_GDN = [Cons_GDN, A_GW*GasWell - A_GP*GasFlow - A_GC*(alpha.*GasComp) - A_GT_GDN*GasGT- Gas_Demand == zeros(20,24)]; %  
%%%% 气流-气压耦合约束 转为 二阶锥约束
    Cons_GDN = [Cons_GDN, GasFlow.^2 <= repmat(K_Pipe.^2,1,24) .* GasPre(P_m,:) - repmat(K_Pipe.^2,1,24) .*GasPre(P_n,:) ];
%%%% 节点气压 约束
     Cons_GDN = [Cons_GDN, GasPre(P_m,:) >= GasPre(P_n,:)]; % GDN中气流方向预定, 从上至下, 故气压首端大于末端
    gama = repmat(gama_Cmn,1,24);
  Cons_GDN = [Cons_GDN, GasPre(Comp_n,:) <= gama .* GasPre(Comp_m,:)];  % 压缩机两端气压
  Cons_GDN = [Cons_GDN,repmat(Pre_min.^2,1,24) <= GasPre <= repmat(Pre_max.^2,1,24)]; % 所有节点气压的边界约束
 
%%%%% 各天然气源出力 约束
  Cons_GDN = [Cons_GDN,zeros(n_GW,24) <= GasWell  <= repmat(G_GW_max,1,24)]; % 气源上下限/ kcf
%%%% 各管道流量约束
    Cons_GDN = [Cons_GDN, 0 <= GasFlow <= 100];

程序结果

4 下载链接

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

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

相关文章

Jmeter中有关属性的获取的问题

Jmeter中有3个方法用来获取属性值&#xff1a; props.getProperty(propName), ${__property(propName)} ${__P(propName)} 试验了下&#xff0c;在JSR223 Sampler中使用以上3个方法获取属性值的情况 1. 返回结果如下&#xff1a; 这里看到&#xff0c;在jmeter属性列表里…

QT学习笔记3.2(建立项目、执行_打包、生成执行文件exe)

QT学习笔记3.2&#xff08;建立项目、执行_打包、生成执行文件exe) 目录 windeployqt打包过程中&#xff1a; enigma virtual box把所有文件打包成.exe文件 资料 mingw还没有编译成功过&#xff0c;这里说明使用msvc的过程。 使用msvc可以编译生成 1.生成执行文件、库文件…

【玩转 JS 函数式编程_006】2.2 小试牛刀:用函数式编程(FP)实现事件只触发一次

文章目录 2.2 该问题的函数式解 A functional solution to our problem1. 高阶函数解 A higher-order solution2. 高阶函数解的手动测试 Testing the solution manually3. 高阶函数解的自动测试 Testing the solution automatically4. 更好的解决方案 Producing an even better…

计算机毕业设计 基于Python的程序员薪资分析系统的设计与实现 Python+Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…

1000题-操作系统概述

特性微内核&#xff08;Microkernel&#xff09;宏内核&#xff08;Monolithic Kernel&#xff09;设计哲学精简内核&#xff0c;将非核心功能移至用户空间将所有核心功能集成到单一内核空间中功能集成仅包含最基本的操作系统功能&#xff08;如进程间通信、内存管理基础&#…

[Meachines] [Easy] Sea WonderCMS-XSS-RCE+System Monitor 命令注入

信息收集 IP AddressOpening Ports10.10.11.28TCP:22&#xff0c;80 $ nmap -p- 10.10.11.28 --min-rate 1000 -sC -sV PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0) | ssh-hostkey: | 3072 e3:54:…

SkyWalking监控SQL参数

前言 SkyWalking可以记录每个请求中执行的所有SQL&#xff0c;但是默认情况下&#xff0c;SkyWalking不记录SQL参数导致使用起来不是很方便&#xff0c;每次都得看日志才能知道具体的参数。不过SkyWalking提供了一个配置参数&#xff0c;开启后&#xff0c;便可记录SQL执行的参…

【AI学习】Mamba学习(一):总体架构

论文&#xff1a;《Mamba: Linear-Time Sequence Modeling with Selective State Spaces》 作者1&#xff1a;Albert Gu&#xff0c;现在是CMU(卡内基梅隆大学)助理教授&#xff0c;曾在DeepMind 工作。多年来一直推动SSM架构发展。 作者2&#xff1a;Tri Dao&#xff0c;现为…

青少年科普教学系统小程序的设计

管理员账户功能包括&#xff1a;系统首页&#xff0c;个人中心&#xff0c;管理员管理&#xff0c;基础数据管理&#xff0c;作品信息管理&#xff0c;通知公告管理&#xff0c;视频信息管理&#xff0c;系统管理 微信端账号功能包括&#xff1a;系统首页&#xff0c;视频信息&…

免费神器!PDF 秒变图片在线转换软件大揭秘

现在电子设备使用的频繁&#xff0c;会收到各种不同格式的文件&#xff0c;为了统一或者使用方便转寒格式就成为了我们日常的需求。今天我们来探讨PDF和图片之间的转换需求&#xff0c;探索pdf转图片在线转换免费工具有哪些。 1.福昕PDF转换大师 链接直通&#xff1a;https:/…

RabbitMQ(死信队列)

一、本文抒写背景 前面我也在延迟队列篇章提到过死信队列&#xff0c;也提到过一些应用场景&#xff01; 今天呢&#xff0c;这篇文章&#xff0c;主要就是实战一个业务场景的小Demo流程&#xff0c;哈哈&#xff0c;那就是延迟关闭订单。 二、开始啦&#xff01;letgo! 首…

健康养生行业为何要搭建自己的专属知识付费小程序平台?集师知识付费系统 集师知识付费小程序 集师知识服务系统 集师线上培训系统

在如今快节奏的生活中&#xff0c;健康养生已成为人们日益关注的话题。从饮食调理到运动健身&#xff0c;再到心理调适&#xff0c;健康养生的内涵不断丰富&#xff0c;市场需求也愈发旺盛。面对这一趋势&#xff0c;健康养生行业搭建自己的专属知识付费小程序平台&#xff0c;…

AAA Mysql与redis的主从复制原理

一 &#xff1a;Mysql主从复制 重要的两个日志文件&#xff1a;bin log 和 relay log bin log&#xff1a;二进制日志&#xff08;binnary log&#xff09;以事件形式记录了对MySQL数据库执行更改的所有操作。 relay log&#xff1a;用来保存从节点I/O线程接受的bin log日志…

文件上传之%00截断(00截断)以及pikachu靶场

pikachu的文件上传和upload-lab的文件上传 目录 mime type类型 getimagesize 第12关%00截断&#xff0c; 第13关0x00截断 差不多了&#xff0c;今天先学文件上传白名单&#xff0c;在网上看了资料&#xff0c;差不多看懂了&#xff0c;但是还有几个地方需要实验一下&#…

初识算法 · 双指针(4)

目录 前言&#xff1a; 复写零 题目解析 算法原理 算法编写 四数之和 题目解析 算法原理 算法编写 前言&#xff1a; 本文是双指针算法的最后一文&#xff0c;以复写零和四数之和作为结束&#xff0c;介绍方式同样是题目解析&#xff0c;算法原理&#xff0c;算法编写…

深入浅出Java多线程(六):Java内存模型

引言 大家好&#xff0c;我是你们的老伙计秀才&#xff01;今天带来的是[深入浅出Java多线程]系列的第六篇内容&#xff1a;Java内存模型。大家觉得有用请点赞&#xff0c;喜欢请关注&#xff01;秀才在此谢过大家了&#xff01;&#xff01;&#xff01; 在并发编程中&#xf…

简码短链测试用例设计报告

文章目录 1.前言2.用户模块2.1 登录2.2 注册2.3 修改个人信息2.4 退出登录 3.短链接分组模块3.1 创建短链接分组3.2 修改短链接分组3.3 删除短链接分组 4.短链接管理模块4.1 创建单个短链接4.2 批量创建短链接4.3 修改短链接信息4.4 分页查询短链接4.5 短链接跳转原始链接4.6 删…

CTK框架(十一):使用的常见问题

目录 1.MF文件路径 2.服务必须要接口类 3.插件名命名要求 4.生命周期问题 5.一个接口对多个实现注意 6.中文输出注意 7.同一插件安装注意 8.添加元数据 9.关于升级插件时遇到的问题 10.不同插件定义资源文件注意路径问题 11.安装插件 12.插件依赖 1.MF文件路径 在…

基于Springboot+VUE的二手奢侈品商城的设计与实现

一、摘要 当前&#xff0c;二手奢侈品市场持续蓬勃发展&#xff0c;吸引了越来越多的消费者。然而&#xff0c;现有的二手奢侈品交易平台在用户体验、安全性和功能方面仍存在一些问题&#xff0c;需要进一步改进。本研究旨在设计和实现一种基于Spring Boot 和 Vue 技术框架的二…

题目:最左边的数字

问题 - 1060 (hdu.edu.cn) 解题思路&#xff1a; 数字很大&#xff0c;使用科学计数法。则&#xff0c;我们需要的是a的整数位&#xff0c;最终求出a即可。 取对数&#xff1a;nlgnmlga&#xff0c;移项&#xff1a;lganlgn-m&#xff0c;接下来我们需要求m。 …