当前位置: 首页 > news >正文

2024电工杯数学建模A题Matlab代码+结果表数据教学

2024电工杯A题保姆级分析完整思路+代码+数据教学

A题题目:园区微电网风光储协调优化配置 

以下仅展示部分,完整版看文末的文章

%A_1_1_A
% 清除工作区
clear;clc;close all;warning off;
%读取参数%正常读取
% P_LOAD=xlsread('附件1:各园区典型日负荷数据.xlsx');
% P_PVWT=xlsread('附件2:各园区典型日风光发电数据.xlsx');
% P_load=P_LOAD(:,2)';
% P_PV=750*P_PVWT(:,2)';%若无法读取直接使用该数据
P_load=[275,275,277,310,310,293,293,380,375,281,447,447,447,405,404,403,268,313,287,288,284,287,277,275];%电负荷/kW
P_PV=750*[0,0,0,0,0,0,0,.0058,.3026,.6020,.7711,.8555,.8531,.7842,.6437,.4242,.0619,0,0,0,0,0,0,0,];%光伏输出/kW%常数
N_T=24;%24h
C_buy=1;%购电价格:元/kWh
C_PV=.5;%风电价格:元/kWh
C_WT=.4;%价格:元/kWh% 决策变量
P_buy = sdpvar(1,N_T);%购电功率
P_waste = sdpvar(1,N_T);%弃电功率% 设置约束条件
C=[P_PV+P_buy==P_load+P_waste      %电平衡P_buy >= 0                      % 购电功率非负P_waste >= 0                    % 弃电功率非负];ops = sdpsettings('solver', 'gurobi', 'verbose', 2, 'debug', 1);F = sum(P_PV*C_PV+C_buy*P_buy);
result = optimize(C,F,ops);
if result.problem == 0 % problem =0 代表求解成功disp(value(F));
elsedisp('求解出错');
end% 定义要删除的文件名
filename = 'A_1_1_A.xlsx';
% 使用delete函数删除文件
if exist(filename, 'file')delete(filename);disp(['已成功删除文件:' filename]);
elsedisp(['文件 ' filename ' 不存在。']);
end
data = table({'购电量/kWh', '弃风弃光电量/kWh', '总供电成本/¥', '单位电量平均供电成本/(¥/kWh)'}', ...[sum(value(P_buy)), sum(value(P_waste)),value(F),value(F)/sum(P_load)]', 'VariableNames', {'经济参数', 'A_1_1_A'});
writetable(data, 'A_1_1_A.xlsx');figure('Position', [880, 60, 800, 500]);  % [左下角 x 坐标, 左下角 y 坐标, 宽度, 高度]
b=bar([value(P_buy);value(P_PV);-value(P_waste)]','stacked');hold on;
b(1).FaceColor = [156/255 168/255 184/255];
b(2).FaceColor = [122/255 103/255 71/255];
b(3).FaceColor = [201/255 156/255 78/255];
plot(P_load,'k','LineWidth',2);hold on;
legend('购电','光伏','弃电','电负荷','Orientation', 'horizontal')%横着放图例
legend('Location', 'NorthWest');  % 根据需要选择位置
title('A\_1\_1\_A电平衡');saveas(gcf, 'A_1_1_A电平衡.jpg');

%A_1_1_B
% 清除工作区
clear;clc;close all;warning off;
%读取参数%正常读取
% P_LOAD=xlsread('附件1:各园区典型日负荷数据.xlsx');
% P_PVWT=xlsread('附件2:各园区典型日风光发电数据.xlsx');
% P_load=P_LOAD(:,3)';
% P_WT=1000*P_PVWT(:,3)';%若无法读取直接使用该数据
P_load=[241,253,329,315,290,270,307,354,264,315,313,291,360,369,389,419,412,291,379,303,331,306,285,324];%电负荷/kW
P_WT=1000*[0.2301,0.3828,0.2968,0.4444,0.5029,0.3609,0.2402,0.0473,0.1538,0.1068,0.0518,0.2169,0.3546,...
0.2194,0.1110,0.2186,0.3779,0.3421,0.5008,0.4646,0.2197,0.1783,0.1535,0.0000,];%风电输出/kW%常数
N_T=24;%24h
C_buy=1;%购电价格:元/kWh
C_PV=.5;%风电价格:元/kWh
C_WT=.4;%价格:元/kWh% 决策变量
P_buy = sdpvar(1,N_T);%购电功率
P_waste = sdpvar(1,N_T);%弃电功率% 设置约束条件
C=[P_WT+P_buy==P_load+P_waste      %电平衡P_buy >= 0                      % 购电功率非负P_waste >= 0                    % 弃电功率非负];ops = sdpsettings('solver', 'gurobi', 'verbose', 2, 'debug', 1);F = sum(P_WT*C_WT+C_buy*P_buy);
result = optimize(C,F,ops);
if result.problem == 0 % problem =0 代表求解成功disp(value(F));
elsedisp('求解出错');
end% 定义要删除的文件名
filename = 'A_1_1_B.xlsx';
% 使用delete函数删除文件
if exist(filename, 'file')delete(filename);disp(['已成功删除文件:' filename]);
elsedisp(['文件 ' filename ' 不存在。']);
end
data = table({'购电量/kWh', '弃风弃光电量/kWh', '总供电成本/¥', '单位电量平均供电成本/(¥/kWh)'}', ...[sum(value(P_buy)), sum(value(P_waste)),value(F),value(F)/sum(P_load)]', 'VariableNames', {'经济参数', 'A_1_1_B'});
writetable(data, 'A_1_1_B.xlsx');figure('Position', [880, 60, 800, 500]);  % [左下角 x 坐标, 左下角 y 坐标, 宽度, 高度]
b=bar([value(P_buy);value(P_WT);-value(P_waste)]','stacked');hold on;
b(1).FaceColor = [156/255 168/255 184/255];
b(2).FaceColor = [123/255, 139/255, 111/255];
b(3).FaceColor = [201/255 156/255 78/255];
plot(P_load,'k','LineWidth',2);hold on;
legend('购电','风电','弃电','电负荷','Orientation', 'horizontal')%横着放图例
legend('Location', 'NorthWest');  % 根据需要选择位置
title('A\_1\_1\_B电平衡');saveas(gcf, 'A_1_1_B电平衡.jpg');

%A_1_2_A
% 清除工作区
clear;clc;close all;warning off;
%读取参数%正常读取
% P_LOAD=xlsread('附件1:各园区典型日负荷数据.xlsx');
% P_PVWT=xlsread('附件2:各园区典型日风光发电数据.xlsx');
% P_load=P_LOAD(:,2)';
% P_PV=750*P_PVWT(:,2)';%若无法读取直接使用该数据
P_load=[275,275,277,310,310,293,293,380,375,281,447,447,447,405,404,403,268,313,287,288,284,287,277,275];%电负荷/kW
P_PV=750*[0,0,0,0,0,0,0,.0058,.3026,.6020,.7711,.8555,.8531,.7842,.6437,.4242,.0619,0,0,0,0,0,0,0,];%光伏输出/kW%常数
N_T=24;     %24h
C_buy=1;    %购电价格:元/kWh
C_PV=.5;    %风电价格:元/kWh
C_WT=.4;    %价格:元/kWh
eta=.95;     %充放电效率
SOC_lb=100*0.1;
SOC_ub=100*0.9;
SOC0=SOC_lb;
Emax=50;    %充放电最大功率% 决策变量
P_buy = sdpvar(1,N_T);  %购电功率
P_waste = sdpvar(1,N_T);%弃电功率
SOC = sdpvar(1,N_T);    %电池电量
E_ch =  sdpvar(1,N_T);  %充能功率
E_dis = sdpvar(1,N_T);  %放能功率
U_ch =  binvar(1,N_T);  %充能状态
U_dis = binvar(1,N_T);  %放能状态% 设置约束条件
C=[P_PV+P_buy+E_dis==E_ch+P_load+P_waste      %电平衡P_buy >= 0                      % 购电功率非负P_waste >= 0                    % 弃电功率非负U_ch+U_dis<=1                   %不能同时充放%SOC0==SOC(N_T)SOC_lb<=SOC & SOC<=SOC_ubE_ch>=0 & E_ch<=U_ch*Emax       %充能限制E_dis>=0 & E_dis<=U_dis*Emax    %放能限制];
for t=1:N_T  %此文档为DS数模团队原创代码,如需完整版请务必购买正版资源,群:722026824if t==1C=[C;SOC(t)==SOC0+E_ch(t)*eta-E_dis(t)/eta];elseC=[C;SOC(t)==SOC(t-1)+E_ch(t)*eta-E_dis(t)/eta];end
end
ops = sdpsettings('solver', 'gurobi', 'verbose', 2, 'debug', 1);F = (50*800+100*1800)/3650+sum(P_PV*C_PV+C_buy*P_buy);
result = optimize(C,F,ops);
if result.problem == 0 % problem =0 代表求解成功disp(value(F));
elsedisp('求解出错');
end% 定义要删除的文件名
filename = 'A_1_2_A.xlsx';
% 使用delete函数删除文件
if exist(filename, 'file')delete(filename);disp(['已成功删除文件:' filename]);
elsedisp(['文件 ' filename ' 不存在。']);
end
data = table({'购电量/kWh', '弃风弃光电量/kWh', '总供电成本/¥', '单位电量平均供电成本/(¥/kWh)'}', ...[sum(value(P_buy)), sum(value(P_waste)),value(F),value(F)/sum(P_load)]', 'VariableNames', {'经济参数', 'A_1_2_A'});
writetable(data, 'A_1_2_A.xlsx');figure('Position', [880, 460, 800, 500]);  % [左下角 x 坐标, 左下角 y 坐标, 宽度, 高度]
b=bar([value(P_buy);value(P_PV);-value(P_waste);value(E_ch);value(E_dis)]','stacked');hold on;
b(1).FaceColor = [156/255 168/255 184/255];
b(2).FaceColor = [122/255 103/255 71/255];
b(3).FaceColor = [201/255 156/255 78/255];
b(4).FaceColor = [75/255 92/255 156/255];
b(5).FaceColor = [238/255 234/255 193/255];
plot(P_load,'k','LineWidth',2);hold on;
plot(value(SOC),'r','LineWidth',2);
legend('购电','光伏','弃电','充电','放电','电负荷','SOC','Orientation', 'horizontal')%横着放图例
legend('Location', 'NorthWest');  % 根据需要选择位置
title('A\_1\_2\_A电平衡'); %此文档为DS数模团队原创代码,如需完整版请务必购买正版资源,群:722026824saveas(gcf, 'A_1_2_A电平衡.jpg');

%A_2_1
% 清除工作区
clear;clc;close all;warning off;
%读取参数%正常读取
P_LOAD=xlsread('附件1:各园区典型日负荷数据.xlsx');
P_PVWT=xlsread('附件2:各园区典型日风光发电数据.xlsx');
P_load=P_LOAD(:,2)'+P_LOAD(:,3)'+P_LOAD(:,4)';
P_PV=750*P_PVWT(:,2)'+600*P_PVWT(:,4)';
P_WT=500*P_PVWT(:,5)'+1000*P_PVWT(:,3)';%若无法读取直接使用该数据
% P_load=[818	820	913	918	871	815	883	957	931	879	1047	1100	1253	1278	1248	1328	963	915	1084	814	844	954	864	890];%电负荷/kW
% P_PV=[0	0	0	0	0	0	0	10.6500000000000	423.750000000000	830.340000000000	1054.48500000000	1177.12500000000	1179.76500000000	1081.41000000000	882.795000000000	574.650000000000	59.3850000000000	0	0	0	0	0	0	0];%光伏输出/kW
% P_WT=[303.300000000000	491.550000000000	494.750000000000	535.950000000000	738.700000000000	671.650000000000	387.500000000000	108	166.300000000000	257.950000000000	61.6000000000000	278.100000000000	521.350000000000	352.050000000000	172	300.250000000000	510.150000000000	512.500000000000	659.950000000000	629.550000000000	304.850000000000	261.050000000000	248.350000000000	116.150000000000];%风电输出/kW%常数
N_T=24;%24h
C_buy=1;%购电价格:元/kWh
C_PV=.5;%风电价格:元/kWh
C_WT=.4;%价格:元/kWh% 决策变量
P_buy = sdpvar(1,N_T);%购电功率
P_waste = sdpvar(1,N_T);%弃电功率% 设置约束条件
C=[P_PV+P_WT+P_buy==P_load+P_waste      %电平衡P_buy >= 0                      % 购电功率非负P_waste >= 0                    % 弃电功率非负];ops = sdpsettings('solver', 'gurobi', 'verbose', 2, 'debug', 1);F = sum(P_PV*C_PV+P_WT*C_WT+C_buy*P_buy);
result = optimize(C,F,ops);
if result.problem == 0 % problem =0 代表求解成功disp(value(F));
elsedisp('求解出错');
end% 定义要删除的文件名
filename = 'A_2_1.xlsx';
filename_b='各时段A_2_1.xlsx';
% 使用delete函数删除文件
if exist(filename, 'file')delete(filename);disp(['已成功删除文件:' filename]);
elsedisp(['文件 ' filename ' 不存在。']);
end
if exist(filename_b, 'file')delete(filename_b);disp(['已成功删除文件:' filename_b]);
elsedisp(['文件 ' filename_b ' 不存在。']);
end
% 创建数据表
tdata = table((0:23)', value(P_buy)', value(P_waste)', ...'VariableNames', {'时间段', '购电量/kWh', '弃风弃光电量/kWh'});
data = table({'购电量/kWh', '弃风弃光电量/kWh', '总供电成本/¥', '单位电量平均供电成本/(¥/kWh)'}', ...[sum(value(P_buy)), sum(value(P_waste)),value(F),value(F)/sum(P_load)]', 'VariableNames', {'经济参数', 'A_2_1'});% 将表格写入Excel文件
writetable(tdata, '各时段A_2_1.xlsx');
writetable(data, 'A_2_1.xlsx');figure('Position', [880, 60, 800, 500]);  % [左下角 x 坐标, 左下角 y 坐标, 宽度, 高度]
b=bar([value(P_buy);value(P_WT);value(P_PV);-value(P_waste)]','stacked');hold on;
b(1).FaceColor = [156/255 168/255 184/255];
b(2).FaceColor = [123/255, 139/255, 111/255];
b(3).FaceColor = [122/255 103/255 71/255];
b(4).FaceColor = [201/255 156/255 78/255];
plot(P_load,'k','LineWidth',2);hold on;
legend('购电','风电','光伏','弃电','电负荷','Orientation', 'horizontal')%横着放图例
legend('Location', 'NorthWest');  % 根据需要选择位置
title('A\_2\_1电平衡');
ylabel('功率/kW')
xlabel('时间/h')saveas(gcf, 'A_2_1电平衡.jpg');

以上仅为小部分第一问、第二问代码,其中更详细的思路、各题目思路、代码、讲解视频、成品论文及其他相关内容,可以看文末名片获取哦!

相关文章:

  • Python——基于共享单车使用量数据的可视化分析(1)
  • 浏览器API与协议
  • java组合设计模式Composite Pattern
  • 【话题】你眼中的IT行业现状与未来趋势
  • linux系统——ps命令的两种参数模式
  • Langchain:数据连接封装、缓存封装和LCEL学习和探索
  • 【无标题】为什么在运行 F-Tile 三速以太网FPGA IP 设计示例时会看到意外的吞吐量结果?
  • Unity LayerMask避坑笔记
  • 基于transformers框架实践Bert系列5-阅读理解(文本摘要)
  • Redis常见数据类型(3)-String, Hash
  • 学习平台|基于Springboot+vue的学习平台系统的设计与实现(源码+数据库+文档)
  • c语言之运算符练习题
  • Spring Boot集成testcontainers快速入门Demo
  • 基于地理坐标的高阶几何编辑工具算法(5)——合并相交面
  • Python操作MySQL实战
  • 分享的文章《人生如棋》
  • 0基础学习移动端适配
  • java正则表式的使用
  • Markdown 语法简单说明
  • php中curl和soap方式请求服务超时问题
  • SpiderData 2019年2月25日 DApp数据排行榜
  • 服务器之间,相同帐号,实现免密钥登录
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 码农张的Bug人生 - 初来乍到
  • 盘点那些不知名却常用的 Git 操作
  • 前端面试题总结
  • 线性表及其算法(java实现)
  • 移动端解决方案学习记录
  • 再次简单明了总结flex布局,一看就懂...
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • ​一些不规范的GTID使用场景
  • # C++之functional库用法整理
  • # dbt source dbt source freshness命令详解
  • (06)Hive——正则表达式
  • (19)夹钳(用于送货)
  • (4)STL算法之比较
  • (Java)【深基9.例1】选举学生会
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (PySpark)RDD实验实战——取一个数组的中间值
  • (PySpark)RDD实验实战——取最大数出现的次数
  • (TOJ2804)Even? Odd?
  • (webRTC、RecordRTC):navigator.mediaDevices undefined
  • (zt)最盛行的警世狂言(爆笑)
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (蓝桥杯每日一题)平方末尾及补充(常用的字符串函数功能)
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (七)Activiti-modeler中文支持
  • (七)Knockout 创建自定义绑定
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (轉)JSON.stringify 语法实例讲解
  • ***php进行支付宝开发中return_url和notify_url的区别分析
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil