基于目标级联法的微网群多主体分布式优化调度(已更新)

news2024/12/23 15:17:10

目录

一、主要内容

1.1 上层微网群模型

1.2 下层微网模型

二、部分程序

三、实现效果 

 四、下载链接


一、主要内容

本文复现《基于目标级联法的微网群多主体分布式优化调度》文献的目标级联部分,

建立微网群系统的两级递阶优化调度模型: 上层是微网群能量调度中心优化调度模型,下层是子微网优化调度模型,然后对所建递阶优化调度模型耦合性和分布性进行分析,采用一种新型的协同优化方法———目标级联法,实现上下层模型的解耦独立优化,以3微网为算例进行验证,证明方法的可行性。

1.1 上层微网群模型

1.2 下层微网模型

二、部分程序

%程序开发时间:2023年1月26日

%欢迎关注微信公众号:电力程序

%----------------------------

%%目标级联协调优化

gPMG = zeros(3,24);%微网群与微网间联络功率

gPpcc1 = zeros(1,24);%微网1与微网群联络功率,下同

gPpcc2 =zeros(1,24);

gPpcc3 = zeros(1,24);

parameterATC;

figure(1);

errorSet = [];

for k=1:8

[y1(k),gPpcc1,x_P_g1,x_P_ch1,x_P_dis1,x_P_w1,x_P_v1,x_c_ld1,Load1]=lower1(pho,gPMG,v,w);%下层微网1

[y2(k),gPpcc2,x_P_ch2,x_P_dis2,x_P_w2,x_P_v2,x_c_ld2,Load2]=lower2(pho,gPMG,v,w);%下层微网2

[y3(k),gPpcc3,x_P_g3,x_P_ch3,x_P_dis3,x_P_w3,x_P_v3,x_c_ld3,Load3]=lower3(pho,gPMG,v,w);%下层微网3

[y4(k),gPMG]=upperthree(pho,v,w,gPpcc1,gPpcc2,gPpcc3);%上层微网群

%%----得到结果----

gPMG=value(gPMG);

gPpcc1=value(gPpcc1);

gPpcc2=value(gPpcc2);

gPpcc3=value(gPpcc3);

gPMGc(:,k)=gPMG(:,10);%10时刻微网群连接变量数据储存

gPpcc1c(k)=gPpcc1(10);%10时刻微网1连接变量数据储存

gPpcc2c(k)=gPpcc2(10);%10时刻微网2连接变量数据储存

gPpcc3c(k)=gPpcc3(10);%10时刻微网3连接变量数据储存

    postError = norm(gPMG-[gPpcc1;gPpcc2;gPpcc3])

    disp(sprintf('postError=%f',postError));

        errorSet = [errorSet postError];

        %画图

    figure(1),plot(errorSet),pause(0.1)

    xlabel('迭代次数');

    ylabel('误差值');

    v=v+2*w*w*postError;

    w=beta*w;

    yalmip('clear');

end

%最终迭代后结果图

figure;

ldz=max(x_c_ld1,0);

ldf=min(x_c_ld1,0);

wwz=max(gPpcc1,0);

wwf=min(gPpcc1,0);

yyf=[-x_P_ch1;ldf;wwf]';

bar(yyf,'stack');

hold on

yyz=[-x_P_dis1;x_P_g1;x_P_w1;x_P_v1;ldz;wwz]';

bar(yyz,'stack');

plot(Load1,'r','LineWidth',1.5)

xlabel('时间/h');

ylabel('功率/MW');

title('微网1功率');

sy=legend('储能充电','负荷响应','接受微网群电功率','储能放电','发电','风电','光伏','负荷响应','供给其他微网','微网1负荷');

sy.NumColumns = 3;

ylim([-6 14]);

figure;

ldz=max(x_c_ld2,0);

ldf=min(x_c_ld2,0);

wwz=max(gPpcc2,0);

wwf=min(gPpcc2,0);

yyf=[-x_P_ch2;ldf;wwf]';

bar(yyf,'stack');

hold on

yyz=[-x_P_dis2;x_P_w2;x_P_v2;ldz;wwz]';

bar(yyz,'stack');

plot(Load2,'r','LineWidth',1.5)

xlabel('时间/h');

ylabel('功率/MW');

title('微网2功率');

sy=legend('储能充电','负荷响应','接受微网群电能','储能放电','风电','光伏','负荷响应','供给其他微网','微网2负荷');

sy.NumColumns = 3;

ylim([-2 8]);

figure;

ldz=max(x_c_ld3,0);

ldf=min(x_c_ld3,0);

wwz=max(gPpcc3,0);

wwf=min(gPpcc3,0);

yyf=[-x_P_ch3;ldf;wwf]';

bar(yyf,'stack');

hold on

yyz=[-x_P_dis3;x_P_g3;x_P_w3;x_P_v3;ldz;wwz]';

bar(yyz,'stack');

plot(Load3,'r','LineWidth',1.5)

xlabel('时间/h');

ylabel('功率/MW');

title('微网3功率');

sy=legend('储能充电','负荷响应','接受微网群电能','储能放电','发电','风电','光伏','负荷响应','供给其他微网','微网3负荷');

sy.NumColumns = 3;

ylim([-5 11]);

figure;

title_name = '微网群连接变量时段10趋同过程';

title(title_name);  %%关键

subplot(311)

plot(gPpcc1c,'o--','LineWidth',1.5)

hold on

plot(gPMGc(1,:),'r-o','LineWidth',1.5)

grid on

legend('下层连接变量值','上层连接变量值');

xlabel('迭代次数');

ylabel('子微网1联络功率');

subplot(312)

plot(gPpcc2c,'o--','LineWidth',1.5)

hold on

plot(gPMGc(2,:),'r-o','LineWidth',1.5)

grid on

xlabel('迭代次数');

ylabel('子微网2联络功率');

subplot(313)

plot(gPpcc3c,'o--','LineWidth',1.5)

hold on

plot(gPMGc(3,:),'r-o','LineWidth',1.5)

grid on

xlabel('迭代次数');

ylabel('子微网3联络功率');

三、实现效果 

以上是按照文献编写的程序,存在一个问题:联络线功率之和不为零,一般而言,微网群中供应功率和吸收功率应该是守恒的,因此,对该部分进行了完善,实现效果如下:

 四、下载链接

点击直达~

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

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

相关文章

Jvm --java虚拟机(下)

目录 执行引擎 什么是执行引擎? 什么是解释器?什么是 JIT 编译器? 为什么 Java 是半编译半解释型语言? JIT 编译器执行效率高为什么还需要解释器? 垃圾回收 垃圾回收概述 什么是垃圾? 为什么需要GC&a…

Redis持久化--RDB

一. RDB是什么 在指定的时间间隔内将内存中的数据集快照写入磁盘, 也就 Snapshot 快照,恢复时将快照文件读到内存二. RDB持久化的流程 解读: redis 客户端执行 bgsave 命令或者自动触发 bgsave 命令;主进程判断当前是否已经存在…

【开源之夏 2023】欢迎报名 SOFAStack 社区项目!

开源之夏是由“开源软件供应链点亮计划”发起并长期支持的一项暑期开源活动,旨在鼓励在校学生积极参与开源软件的开发维护,促进优秀开源软件社区的蓬勃发展,培养和发掘更多优秀的开发者。 活动联合国内外各大开源社区,针对重要开…

荔枝派Zero(全志V3S)驱动开发之RGB LCD屏幕显示bmp图片

文章目录 前言一、如何在 linux 下驱动 LCD1、什么是 Framebuffer 设备2、如何确保 Framebuffer 设备已存在3、Frame_buffer 设备结构体<1>、fb_info 详解<2>、struct fb_fix_screeninfo 详解<3>、struct fb_var_screeninfo 详解 4、设备树中有关 framebuffe…

使用 Appium 进行 WPF 自动化

文章目录 关于1 环境准备2 集成单元测试3 新增基本测试代码4 测试 WPF 程序5 启动测试 关于 参考链接&#xff1a;Get Your WPF Apps Automated With Appium Appium官网&#xff1a;http://appium.io/docs/en/2.0/quickstart 1 环境准备 一、下载 Windows Application Driv…

JVM 虚拟机栈

虚拟机栈概述 背景: 由于跨平台性的设计&#xff0c;Java 的指令都是根据栈来设计的。不同平台 CPU 架构不同&#xff0c;所以不能设计为基于寄存器的优点是跨平台, 指令集小&#xff0c;编译器容易实现&#xff0c;缺点是性能下降&#xff0c;实现同样的功能需要更多的指令 …

CVE-2023-21839 Weblogic RCE

前言 刷B站的时候给我推的一个WebLogic的比较新的漏洞&#xff0c;可以通过此漏洞直接达到RCE进行getShell的效果&#xff0c;于是就简单复现和分析一下&#xff0c;做个记录。 视频链接 漏洞简单分析 此漏洞是属于WebLogic的JNDI注入漏洞&#xff0c;漏洞造成的原因是Weblo…

《创新者的基因》读书笔记

本书是企业创新管理的研究成果&#xff0c;针对个人和企业如何培养、提升商业创新能力给出了行动指南&#xff0c;每一种能力都提供了很多训练小技巧&#xff0c;在此不一一列举&#xff0c;只写自己的读书笔记、对策和思考。 破坏性创新者的基因 发问&#xff1a;目的是提出…

Java字符串详解:概念、特点与常见的使用场景

Java字符串是开发中经常使用到的一种数据类型&#xff0c;使用它可以处理文本、URL、文件路径等多种类型的数据。本文将对Java字符串的概念、特点以及常见使用场景进行详细解释。本文将分为以下几个部分&#xff1a; String的概念和特点Java字符串常量池字符串的不可变性使用e…

LeetCode - 3. 无重复字符的最长子串

写在前面&#xff1a; 题目链接&#xff1a;LeetCode - 3. 无重复字符的最长子串 题目难度&#xff1a;中等 编程语言&#xff1a;C 一、题目描述 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长子串 的长度。 示例 1: 输入: s “abcabcbb” 输出: 3 解释…

【RabbitMQ】SpringAMQP

RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式&#xff1a; 同步通讯&#xff1a;就像打电话&#xff0c;需要实时响应。 异步通讯&#xff1a;就像发邮件&#xff0c;不需要马上回复。 两种方式各有优劣&#xff0c;打电话可以立即得到响应&am…

快速了解C语言的基本元素

C语言是一种编程语言&#xff0c;和其它语言一样&#xff0c;也定义了自己的语法和词汇。学习C语言&#xff0c;首先要学习C语言的词汇&#xff0c;再学习C语言的语法规则&#xff0c;然后由词汇构成语句&#xff0c;由语句构成源程序&#xff0c;源程序也称为源代码或代码&…

ORB-SLAM2的稠密重建实战(1) — 流程与函数功能说明

目录 0 系统整体流程 1 输出信息 2 初始化文件 3 初始化并运行追踪线程Tracking Step1&#xff1a;地图初始化 Step2&#xff1a;初始化成功&#xff08;mbOnlyTracking&#xff09; Step3&#xff1a;局部地图跟踪TrackLocalMap() Step4&#xff1a;跟踪成功 Step5&a…

【EKF】卡尔曼滤波的二维应用实例

前言 在上期&#xff0c;使用一个简单的一维应用实例来加深了卡尔曼滤波的印象后&#xff0c;使用一个二维的例子来看一下卡尔曼的效果。使用一个自由落体的例子来说明&#xff0c;假设一个物体在重力作用下&#xff0c;速度由0开始做自由落体运动&#xff0c;有观测装置对该物…

自动化部署编译部署【.net core】

自动化部署编译部署【.net core】 github 自动化编译部署 .NET 程序&#xff0c;程序有两个服务&#xff0c;一个是api&#xff0c;一个是admin. 需要部署到两台机器上(测试和正式)&#xff0c;所以采用两个Action来处理 项目目录结构 root ├── Config │ ├── deploy …

【Linux】进程间通信 —— 共享内存

文章目录 &#x1f4d5; 共享内存的原理&#x1f4d5; 代码实现 & 深入理解共享内存shmget() 函数shmctl() 、shmdt()、shmat()特点 &#x1f4d5; 源代码comm.hppserver.ccclient.cc &#x1f4d5; 共享内存的原理 我们知道&#xff0c;如果想实现进程间通信&#xff0c;…

Linux Shell 实现一键部署subversion

subversion SVN是subversion的缩写&#xff0c;是一个开放源代码的版本控制系统&#xff0c;通过采用分支管理系统的高效管理&#xff0c;简而言之就是用于多个人共同开发同一个项目&#xff0c;实现共享资源&#xff0c;实现最终集中式的管理。 TortoiseSVN TortoiseSVN 是…

C语言函数大全-- t 开头的函数

C语言函数大全 本篇介绍C语言函数大全-- t 开头的函数 1. tan&#xff0c;tanf&#xff0c;tanl 1.1 函数说明 函数声明函数功能double tan(double x)计算 以弧度 x 为单位的角度的正切值&#xff08;double&#xff09;float tanf(float x)计算 以弧度 x 为单位的角度的正…

Spring Boot项目创建和使用

一、Spring Boot简介 1.概念 Spring Boot 就是 Spring 框架的脚⼿架&#xff0c;它就是为了快速开发 Spring 框架⽽诞⽣的。 2.优点 有快速集成框架&#xff0c;可以快速添加外部jar包内置web框架&#xff0c;可以直接运行可以快速部署&#xff0c;不依赖任何外部的web容器…

【牛客刷题专栏】0x26:JZ25 合并两个排序的链表(C语言编程题)

前言 个人推荐在牛客网刷题(点击可以跳转)&#xff0c;它登陆后会保存刷题记录进度&#xff0c;重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏&#xff1a;个人CSDN牛客刷题专栏。 题目来自&#xff1a;牛客/题库 / 在线编程 / 剑指offer&#xff1a; 目录 前言问…