分布式能源交易:多个微电网案例研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

 ⛳️赠与读者

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章


 ⛳️赠与读者

👨‍💻做科研,涉及到一个深在的思想系统,需要科研者逻辑缜密,踏实认真,但是不能只是努力,很多时候借力比努力更重要,然后还要有仰望星空的创新点和启发点。当哲学课上老师问你什么是科学,什么是电的时候,不要觉得这些问题搞笑。哲学是科学之母,哲学就是追究终极问题,寻找那些不言自明只有小孩子会问的但是你却回答不出来的问题。建议读者按目录次序逐一浏览,免得骤然跌入幽暗的迷宫找不到来时的路,它不足为你揭示全部问题的答案,但若能让人胸中升起一朵朵疑云,也未尝不会酿成晚霞斑斓的别一番景致,万一它居然给你带来了一场精神世界的苦雨,那就借机洗刷一下原来存放在那儿的“躺平”上的尘埃吧。

     或许,雨过云收,神驰的天地更清朗.......🔎🔎🔎

💥1 概述

摘要:
本文提出了一个分布式凸优化框架,用于孤立微电网之间的能源交易。更具体地说,问题包括几个孤立微电网,它们通过任意拓扑结构交换能量流。由于可伸缩性问题,并为了保护本地成本函数信息,提出了一种基于次梯度的成本最小化算法,该算法在实际迭代次数和有限通信开销下收敛到最优解。此外,该方法允许非常直观的经济解释,解释了算法迭代与“供需模型”和“市场清算”的关系。数值结果以算法的收敛速度和不同网络拓扑的成本为给出。

全球能源需求预计在未来几年稳步增长,受人类、工业和电动车辆的能源需求驱动;更准确地说,预计到2030年,增长将达到40%左右的水平。这种需求是由人类日益依赖能源的生活方式、电动车辆作为主要交通工具的出现以及机器进一步自动化的过程所推动的。

在当今的电网中,能源是在集中和大型能源发电厂(宏观电网能源产生)中生产的;然后,能源被输送到最终客户,通常需要经过非常长的距离和复杂的能源输送网络。这样复杂的结构具有较低的灵活性,很难适应需求增长,因此增加了电网不稳定和停电的可能性。其影响是巨大的,正如最近在欧洲和北美发生的造成数百万欧元损失的停电所证明的那样。

考虑到宏观发电方面的这些问题,毫不奇怪地,人们已经付出了大量努力,通过本地可再生能源来替代或至少补充宏观电网能源。在这种情况下,微电网正成为一种有前景的能源解决方案,其中分布式(可再生)资源正在满足本地需求。当本地生产无法满足微电网的需求时,能源则从主要公用事业部门购买。微电网被设想提供一系列好处,如提高电力传递的可靠性(例如通过孤立)、通过增加可再生能源的渗透率提高效率和可持续性、可伸缩性和投资推迟以及提供辅助服务。在这个列表中,孤立的能力值得特别关注。孤立是微电网的突出特点之一,指的是将微电网负载与主电网断开连接,并仅通过本地能源资源为其供电的能力。预期的孤立将在主电网无法支持聚合需求和/或运营商检测到可能会演变成停电的一些重大电网问题的情况下执行。在这些情况下,微电网可以提供足够的能源来保证至少基本的电力服务。一旦整个系统再次稳定下来,与主电网的连接就会恢复。显然,这些都是可能导致不稳定的非平凡功能。在这方面,[6]和[7]中的工作提供了关于微电网的分散控制技术的最新调查。

为了提高智能电网的能力,一个典型的方法是考虑多个微电网在孤立状态下互相交换能量的情况,即与主电网断开连接时 [8],[9]。换句话说,存在着一组相邻微电网之间的能量流动,但不存在微电网与主电网之间的能量流动。在这种情况下,最优功率流问题近来引起了相当大的关注。例如,Ochoa和Harrison [10]共同考虑了具有协调电压控制的功率流问题。另一方面,[11]中的工作侧重于不平衡的配电网络,并提出了一种基于类似牛顿下降法的方法来解决三相功率流问题。由于这些集中式解决方案可能存在可扩展性 [11],[12]和隐私问题,因此基于优化工具的分布式方法已经在[13],[14]中提出,而且最近还在[15]–​[17]中提出。总的来说,最优功率流问题是非凸的;因此,精确解可能过于复杂而无法计算。因此,通常采用次优方法。例如,[16]和[18]中的工作表明,半定松弛(有关此技术的详细信息,请参见[19])在某些情况下可以帮助以高精度近似全局最优解。另外,[17]中的工作则采用了所谓的交替方向乘法器方法(有关更多信息,请参见[20])以分布式方式解决功率流问题。

与上述工作相反,本文考虑了一个抽象模型,使我们能够专注于交易过程而不是电网的电气操作。在交易方面,分布式能源资源的大规模传播预计将推动从今天的寡头垄断市场向更开放、更灵活的市场转变[21]。这种市场的新形势已经引发了对新能源交易机制的兴趣[8],[22]–​[29]。例如,Wang等人 [22]考虑了一个情景,在这个情景中,一组地理分布的能量存储单元与电网的其他元素进行能量交易。他们将问题描述为一个非合作博弈,该博弈被证明至少有一个纳什均衡点。在需求响应的背景下,Rahimiyan等人 [24]提出了一种有效的能源管理政策来控制一组需求。有趣的是,Nguyen等人 [23]将需求响应能力视为在市场内提供的一种资产;因此,它们可以在不同代理商(零售商、配电系统运营商、聚合商等)之间进行交易。从更一般的角度来看,微电网之间的能源交易问题(或市场代理商之间)已经在[8]和[25]–​[29]中进行了考虑。虽然这些工作主要关注于仿真研究和架构问题,但本文试图为微电网之间的能源交易问题提供全面的分析解决方案,除了具有理论吸引力外,还可以在不需要中央协调员的情况下分布实施。具体而言,我们的设置包括M个微电网,其中:1)每个微电网都有一个相关的能量发生成本;2)存在着由配电网络运营商强加的在相邻微电网之间转移能量的成本;和3)每个微电网都有一个相关的必须满足的功率需求。在这些考虑下,我们旨在找到微电网之间交换的能量的最优量,以最小化系统的总运行成本(能源生产和运输成本)。当然,一个可能的方法是通过一个具有系统全局信息的中央控制器来解决优化问题。然而,这样的集中式解决方案存在一些缺点,因为微电网可能由不同的公用事业公司运营,而生产成本的信息无法公开。因此,为了保护关键的本地成本函数信息并使系统更具可扩展性,我们提出了一种基于双重分解的算法,该算法以分布式方式迭代地解决问题。有趣的是,由于我们引入的新的操作变量被赋予了能源价格的含义,因此得到的算法的每次迭代在经济学术语中有一个直观的解释。首先,每个微电网都在本地计算根据当前能源价格最小化其本地成本所需生产、购买和出售的能量量。然后,在交换了微电网竞价后,进入调节阶段,在这个阶段,以分布式方式调整能源价格,根据需求定律进行调整。这个两步过程一直迭代,直到达成关于价格和转移能量的全局协议。

📚2 运行结果

部分代码:

%% 多微电网和分布式能源交易
clear
close all;


%% 仿真参数
input_file = 'configuration.txt';
topology = 'full';
MaxIterations = 5000; % 最大迭代次数
MaxDualityGap = 0.2; % 终止条件
MaxEpsilon = 1e-5; % 初始条件
verbose = false; % 如果为真,会返回更多信息
IsDebug = false; % 如果为真,会返回更多信息

%===成本 a + b*x + c*x^2=====
CableCapacity = 100; % MW
a = 0; b = 0; c = 3.6828;

%===从配置文件中读取其余参数=====
inputdata = readtable(input_file);

[cases, M] = size(inputdata);

M = M/3;

uGcosts = zeros(M,cases);
Sell4 = zeros(cases,1);
Price = zeros(cases,1);

%=====邻接矩阵=====
switch topology
    case 'full'
        A = ones(M) - eye(M);
    case 'line'
        A = [zeros(M-1,1) eye(M-1); zeros(1,M)] + [zeros(1,M); eye(M-1) zeros(M-1,1)];
    case 'ring'
        A = [zeros(M-1,1) eye(M-1); zeros(1,M)] + [zeros(1,M); eye(M-1) zeros(M-1,1)];
        A(M,1) = 1;
        A(1,M) = 1;
    case 'star'
        A = [0 ones(1,M-1); ones(M-1,1) zeros(M-1)];
    otherwise
        error('Unknown topology.')
end

for icase = 1:cases
    E_c = inputdata{icase,1:3:end}';
    generators = inputdata{icase,2:3:end}';
    Pmax = inputdata{icase,3:3:end}';
    
    %% 创建成本函数
    %=====发电机成本函数======
    C = cell(1,M);
    C_prime = cell(1,M);
    C_primeInv = cell(1,M);
    for m=1:M
        [C{m}, C_prime{m}, C_primeInv{m}] = create_cost_func(generators{m}, .98*Pmax(m));
    end
    
    %====变压器成本函数==========
    [gamma_cost, gamma_prime, gamma_primeInv] = create_cost_func(a, b, c, CableCapacity);

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

🌈4 Matlab代码、数据、文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值