【EI复现】基于主从博弈的新型城镇配电系统产消者竞价策略【IEEE33节点】(Matlab代码实现)

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

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

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

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

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码、数据、文章


💥1 概述

新型城镇的发展需要实现能源结构清洁化和能源利用高效化,分布式能源( distributed energy resource,DER)在城镇配电网中的渗透率不断提高l-2]。世界各国已先后开展了能源互联框架下配电网示范工程的技术研究[3]。美国国家科学基金项目“未来可再生电能传输与管理系统”构建了一种适应高渗透率DER发电的能源互联网1。其可以实现DER主动管理和自适应协调,允许DER随时随地并网和即插即用﹐未来城镇配电网内将会出现更多具备供电能力的产消者。产消者可拥有微型燃气轮机等常规发电装置以及光伏、风电等新能源发电设备,在满足自身用电需求基础上将多余电能出售给配电网其他用户[5]。

本文采用SFE模型对产消者竞价行为建模,确立了含多产消者的新型城镇配电系统日前现货市场交易机制,建立了含竞价博弈和优化调度的双层模型。上层模型追求产消者利润最大化,可确定多个产消者在配电网内的最优报价策略,下层模型考虑运行安全约束以及用户参与DR对系统进行最优经济调度﹐确定市场出清价格。最后﹐采用改进粒子群优化算法与(CPLEX求解器相结合的方法对该多主从博弈模型进行求解。
 

📚2 运行结果

改进粒子群算法: 

 

 部分代码:

function [Gi,F,P_g,P_d,fi] = Up_fitnessfun(pop,index)
% clc
% clear
% pop = [60.03;75.03;69.31];
% index = 1;
%% 读取数据
parameters;                         % 读取相关参数
[P_d, fi, F, ~, ~, ~] = Down_fitnessfun(pop,index);
P_d = P_d/SB;                       % 转为标幺值
if index == 1
    P_g = P_d + P_r(:,8) - P_l8';   % T=8时刻产销者出力
elseif index == 2
    P_g = P_d + P_r(:,15) - P_l15'; % T=15时刻产销者出力
end
P_g = P_g*SB;                       % 转为实际值

Ci = a_D'.*(P_d.^2) + b_D'.*P_d + c_D';
Gi = fi.*P_g - s*P_g - Ci;
end

%% 1.粒子群算法迭代情况
disp(['运行时间为:',num2str(time0) , '秒'])
disp(['最优适应度值=',num2str(fitness_zbest)])

figure
plot(history_pso,'linewidth',1)
ylabel('最优适应度值')
xlabel('迭代次数')

%% 2.产销者竞价策略
[Gi,F,P_g,P_d,fi] = Up_fitnessfun(pop_zbest,index);
P_d = P_d*SB;
a_G = pop_zbest;
disp('********************产销者竞价策略********************')
for k =1:Nk
    fprintf('产销者%d:\naG = %.2f   Pg = %.2fMW   Gi = %.2f美元   Pd = %.2fMW   fi = %.2f美元\n',k,a_G(k),P_g(k),Gi(k),P_d(k),fi(k))
end

%% 3.支路网损
[~, ~, ~, P_loss, dP_cj, Uj] = Down_fitnessfun(pop_zbest,index);
P_loss = P_loss(1:32)*SB*1e3;
figure
plot(P_loss,'linewidth',1)
xlabel('支路编号')
ylabel('线路损耗/kW')

%% 4.节点电压
figure
plot(Uj,'linewidth',1)
xlabel('节点编号')
ylabel('节点电压幅值/pu')

%% 5.负荷曲线
figure
if index == 1
    plot(PL8*SB,'linewidth',1)
elseif index == 2
    plot(PL15*SB,'linewidth',1)
end
xlabel('节点编号')
ylabel('负荷功率/MW')

%% 6.产销者新能源出力
for k = 1:Nk
    figure
    plot(Ppv(k,:)*SB,'linewidth',1)
    hold on 
    plot(Pwt(k,:)*SB,'linewidth',1)
    xlabel('时间/h')
    ylabel('功率/MW')
    legend('光伏出力','风电出力')
    title(['产销者',num2str(k),'新能源出力曲线'])
end
 

🎉3 参考文献

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

[1]陈修鹏,李庚银,夏勇.基于主从博弈的新型城镇配电系统产消者竞价策略[J].电力系统自动化,2019,43(14):97-104.

🌈4 Matlab代码、数据、文章

  • 30
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
炉温控制系统是工业控制领域中的重要应用之一,它的主要作用是控制炉内温度,保证生产过程中的稳定性和产品质量。下面是一个基于 Matlab 的炉温控制系统的简单实现。 首先,我们需要建立一个模型来描述炉温的变化。假设炉温受到外界环境的影响,同时也受到燃料的燃烧情况的影响,因此我们可以使用以下动态方程来描述炉温的变化: T(t) = T(t-1) + a*(Tm - T(t-1)) + b*(Qf - Qc) 其中,T(t) 表示时刻 t 的炉温,Tm 表示炉温目标值,a 和 b 分别表示炉温的惯性和敏感度,Qf 表示燃料的供给量,Qc 表示炉壁散热量。 接下来,我们需要设计一个控制器来控制炉温。这里我们采用基于 PID 控制器的控制方法。PID 控制器可以通过调节其三个参数(比例系数 Kp、积分时间 Ti、微分时间 Td)来达到控制目标。 最后,我们需要编写 Matlab 代码实现这个炉温控制系统。具体步骤如下: 1. 定义控制器的 PID 参数(比例系数 Kp、积分时间 Ti、微分时间 Td)和炉温模型的参数(惯性系数 a、敏感度系数 b)。 2. 定义炉温目标值 Tm 和初始炉温值 T0。 3. 在一个循环中,不断计算当前炉温值 T 和控制量 Qf,直到炉温稳定在目标值附近。 4. 在每次循环中,根据当前炉温值 T、炉温目标值 Tm 和 PID 参数计算出控制量 Qf。 5. 根据炉温模型,计算出下一时刻的炉温值 T。 6. 将炉温值 T 和控制量 Qf 输出,以便实际控制系统可以执行。 下面是一个简单的 Matlab 代码实现: ``` % 定义PID参数和炉温模型参数 Kp = 1; Ti = 10; Td = 1; a = 0.1; b = 0.01; % 定义炉温目标值和初始炉温值 Tm = 1000; T0 = 800; % 初始化控制器状态 e = 0; ei = 0; ed = 0; u = 0; % 循环计算炉温和控制量 while abs(T - Tm) > 1 % 计算PID控制量 e = Tm - T; ei = ei + e; ed = e - e_last; u = Kp * (e + 1/Ti * ei + Td * ed); % 计算下一时刻的炉温值 T = T + a * (Tm - T) + b * (Qf - Qc); % 输出炉温和控制量 disp(['T = ' num2str(T) ', Qf = ' num2str(Qf)]); % 记录上一次误差 e_last = e; end ``` 需要注意的是,实际的炉温控制系统可能会更加复杂,需要考虑更多因素,例如燃料的质量、炉内物料的运动等。因此,以上代码只是一个简单的示例,需要根据具体情况进行修改和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值