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');

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

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

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

相关文章

前端 CSS 经典:SVG 描边动画

1. 原理 使用 css 中的 stroke 属性&#xff0c;用来描述描边的样式&#xff0c;其中重要的属性 stroke-dasharray、stroke-dashoffset。理解了这两个属性的原理&#xff0c;才能理解描边动画实现的原理。 stroke-dasharray&#xff1a;将描边线变成虚线、其中实线和虚线部分…

小程序丨公告栏功能,自动弹出提醒

发布查询时&#xff0c;您是否遇到这样的困扰&#xff1a; 1、查询发布时间未到&#xff0c;学生进入查询主页后发现未发布任何查询&#xff0c;不断咨询原因。 2、有些重要事项需要进入查询主页就进行强提醒&#xff0c;确保人人可见&#xff0c;用户需要反馈“我知道了”才…

【openlayers系统学习】3.4波段数学计算(计算NDVI)

四、波段数学计算&#xff08;计算NDVI&#xff09; 我们已经看到了如何使用 ol/source/GeoTIFF​ 源代码来渲染真彩色和假彩色合成。我们通过将缩放的反射率值直接渲染到红色、绿色或蓝色显示通道中的一个来实现这一点。还可以对来自GeoTIFF&#xff08;或其他数据瓦片源&…

Day48 Javascript详解

Day48 Javascript详解 文章目录 Day48 Javascript详解一、什么是javascript二、javascript特点三、 Javascript的历史四、Javascript vs Java五、JS的基本数据类型六、JS基本数据类型的特殊点七、数组 一、什么是javascript JavaScript是一种高级的、解释型的编程语言&#xf…

cmake编译redis6.0源码总结

1配置clion使用cygwin模拟linux环境&#xff0c;先下载cygwin后配置 2导入源码&#xff0c;配置cmake文件 由于redis是基于Linux上的Makefile&#xff0c;所以Windows上需要配置CMakeLists.txt使用cmake工具编译运行。github上已经有人尝试编写CMakeLists.txt文件&#xff0c…

MCF-Microbial Cell Factories

文章目录 一、期刊简介二、征稿信息三、期刊表现四、投稿须知五、投稿咨询 一、期刊简介 Microbial Cell Factories 是一份开放的同行评审期刊&#xff0c;涵盖了与微生物细胞作为重组蛋白和天然产物的生产者或作为工业兴趣的生物转化的催化剂的开发、使用和研究相关的任何主题…

【学习笔记】Windows GDI绘图(四)矩阵Matrix详解

矩阵Matrix 基于矩阵在GDI绘图的重要性&#xff0c;所以想深入了学习矩阵的相关属性与方法。 先上个本文中所有的函数图例演示吧。 原型&#xff1a; namespace System.Drawing.Drawing2D;public sealed unsafe class Matrix : MarshalByRefObject, IDisposableMatrix类封装…

系统架构师-考试-基础题-错题集锦2

108.总线-全双工、半双工&#xff1a; 109.软件配置管理-产品配置&#xff1a; 产品配置&#xff1a;指一个产品在其生命周期各个阶段所产生的各种形式和各种版本的文档、计算机程序、部件及数据的集合。 注意&#xff1a;选项中的需求规格说明、设计说明等均可归属于文档。 …

Netty学习02----使用多线程优化Selector

背景前置 在单线程环境下&#xff0c;使用一个线程同时绑定多个事件&#xff1a;连接事件、读事件、写事件。不能充分发挥多核CPU的优势&#xff0c;考虑使用多个线程&#xff0c;每个线程专门负责处理不同的事件&#xff0c;如下图所示&#xff1a;一个线程专门负责连接&#…

【ARK Survival Evolved】方舟:生存进化一键使用服务器开服联机教程

1、进入控制面板 2、第一次购买服务器会安装游戏端&#xff0c;大约5分钟左右&#xff0c;如果长时间处于安装状态请联系客服 3、设置游戏端口 方舟生存进化的设置需要三个端口&#xff0c;它们用于游戏端口&#xff08;必须为首选端口&#xff09;&#xff0c;查询端口&#…

uniapp中使用mockjs模拟接口测试总结(swiper轮播图示例)

完整总结下在uni-app中如何使用Mock.js模拟接口测试&#xff0c;这在后台接口未就绪的情况下非常有用。同时也给出个首页swiper轮播图的mock接口使用。网上的文章都不太完整&#xff0c;这里总结下完整的使用示例&#xff0c;同时也支持h5和小程序平台&#xff0c;分享给需要的…

webpack5 splitChunks分割代码

首先明确webpack 自身的打包行为 当splitChunks为false时&#xff0c;此时不启用任何打包设置 可以看到&#xff0c;静态引入全都打到一个chunk里&#xff0c;动态引入会拆分出来一个chunk,这是纯webpack无配置的打包&#xff0c; webpack会给每个模块打上标记 ,如下 { m…

Python使用multiprocessing实现多进程

大家好&#xff0c;当我们工作中涉及到处理大量数据、并行计算或并发任务时&#xff0c;Python的multiprocessing模块是一个强大而实用的工具。通过它&#xff0c;我们可以轻松地利用多核处理器的优势&#xff0c;将任务分配给多个进程并同时执行&#xff0c;从而提高程序的性能…

基于transformers框架实践Bert系列3-单选题

本系列用于Bert模型实践实际场景&#xff0c;分别包括分类器、命名实体识别、选择题、文本摘要等等。&#xff08;关于Bert的结构和详细这里就不做讲解&#xff0c;但了解Bert的基本结构是做实践的基础&#xff0c;因此看本系列之前&#xff0c;最好了解一下transformers和Bert…

【JavaEE】加法计算器与用户登录实战演练

目录 综合练习加法计算器1. 准备工作2. 约定前后端交互接口3. 服务器代码 用户登录1. 准备工作2. 约定前后端交互接口3. 服务器代码4. 调整前端页面代码 综合练习 理解前后端交互过程接⼝传参, 数据返回, 以及⻚⾯展⽰ 加法计算器 需求: 输⼊两个整数, 点击"点击相加&q…

56. UE5 RPG 给敌人添加AI实现跟随玩家

在这一篇里&#xff0c;我们要实现一下敌人的AI&#xff0c;敌人也需要一系列的行为&#xff0c;比如朝向英雄攻击&#xff0c;移动&#xff0c;在满足条件时施放技能。这些敌人的行为可以通过使用UE的内置的AI系统去实现。 在UE里&#xff0c;只要是基于Character类创建的蓝图…

安卓绕过限制直接使用Android/data无需授权,支持安卓14(部分)

大家都知道&#xff0c;安卓每次更新都会给权限划分的更细、收的更紧。   早在安卓11的时候还可以直接通过授权Android/data来实现操作其他软件的目录&#xff0c;没有之前安卓11授权的图了&#xff0c;反正都长一个样&#xff0c;就直接贴新图了。   后面到了安卓12~13的…

信息系统项目管理师0128:输出(8项目整合管理—8.6管理项目知识—8.6.3输出)

点击查看专栏目录 文章目录 8.6.3 输出 8.6.3 输出 经验教训登记册 经验教训登记册可以包含执行情况的类别和详细的描述&#xff0c;还可包括与执行情况相关的影响、建议和行动方案。经验教训登记册可以记录遇到的挑战、问题、意识到的风险和机会以及其他适用的内容。经验教训…

Debezium+Kafka:Oracle 11g 数据实时同步至 DolphinDB 解决方案

随着越来越多用户使用 DolphinDB&#xff0c;各式各样的应用场景对 DolphinDB 的数据接入提出了不同的要求。部分用户需要将 Oracle 11g 的数据实时同步到 DolphinDB 中来&#xff0c;以满足在 DolphinDB 中实时使用数据的需求。本篇教程将介绍使用 Debezium 来实时捕获和发布 …

npm介绍、常用命令详解以及什么是全局目录

目录 npm介绍、常用命令详解以及什么是全局目录一、介绍npm的主要功能npm仓库npm的配置npm的版本控制 二、命令1. npm init: 初始化一个新的Node.js项目&#xff0c;创建package.json文件。package.json是一个描述项目信息和依赖关系的文件。2. npm install <package_name&g…