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

news2024/11/24 19:18:41

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));
else
    disp('求解出错');
end

% 定义要删除的文件名
filename = 'A_1_1_A.xlsx';
% 使用delete函数删除文件
if exist(filename, 'file')
    delete(filename);
    disp(['已成功删除文件:' filename]);
else
    disp(['文件 ' 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));
else
    disp('求解出错');
end

% 定义要删除的文件名
filename = 'A_1_1_B.xlsx';
% 使用delete函数删除文件
if exist(filename, 'file')
    delete(filename);
    disp(['已成功删除文件:' filename]);
else
    disp(['文件 ' 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_ub
    E_ch>=0 & E_ch<=U_ch*Emax       %充能限制
    E_dis>=0 & E_dis<=U_dis*Emax    %放能限制

    ];
for t=1:N_T  %此文档为DS数模团队原创代码,如需完整版请务必购买正版资源,群:722026824
    if t==1
         C=[C;SOC(t)==SOC0+E_ch(t)*eta-E_dis(t)/eta];
    else
         C=[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));
else
    disp('求解出错');
end

% 定义要删除的文件名
filename = 'A_1_2_A.xlsx';
% 使用delete函数删除文件
if exist(filename, 'file')
    delete(filename);
    disp(['已成功删除文件:' filename]);
else
    disp(['文件 ' 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数模团队原创代码,如需完整版请务必购买正版资源,群:722026824


saveas(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));
else
    disp('求解出错');
end

% 定义要删除的文件名
filename = 'A_2_1.xlsx';
filename_b='各时段A_2_1.xlsx';
% 使用delete函数删除文件
if exist(filename, 'file')
    delete(filename);
    disp(['已成功删除文件:' filename]);
else
    disp(['文件 ' filename ' 不存在。']);
end
if exist(filename_b, 'file')
    delete(filename_b);
    disp(['已成功删除文件:' filename_b]);
else
    disp(['文件 ' 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.coloradmin.cn/o/1690797.html

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

相关文章

springboot vue 开源 会员收银系统 (2) 搭建基础框架

前言 完整版演示 前面我们对会员系统https://blog.csdn.net/qq_35238367/article/details/126174288进行了分析 确定了技术选型 和基本的模块 下面我们将从 springboot脚手架开发一套收银系统 使用脚手架的好处 不用编写基础的rabc权限系统将工作量回归业务本身生成代码 便于…

盲人社会适应性训练:打开生活的新篇章

在现代社会的快节奏中&#xff0c;每一位成员都在寻求更好的方式来适应环境&#xff0c;对于盲人群体而言&#xff0c;这种适应性尤为关键。盲人社会适应性训练作为一个旨在提升盲人生活质量和独立性的系统性过程&#xff0c;正逐步受到广泛关注。在这一过程中&#xff0c;一款…

Jmeter+prometheus+grafana性能测试

文章目录 Jmeterprometheusgrafana性能测试背景目标设计思路原理案例启发 Jmeterprometheusgrafana性能测试 背景 ​ 在现代社会中&#xff0c;人们对于应用程序的响应速度和性能体验提出了越来越高的要求。无论是电子商务网站、社交媒体平台还是企业级软件系统&#xff0c;都…

Playwright教程

Playwright简介 支持多数浏览器 在Chromium&#xff0c;Firefox和WebKit上进行测试。Playwright拥有适用于所有现代浏览器的完整API覆盖&#xff0c;包括Google Chrome和Microsoft Edge&#xff08;带有Chromium&#xff09;&#xff0c;Apple Safari&#xff08;带有WebKit&a…

VERY DEEP CONVOLUTIONAL NETWORKS FOR LARGE-SCALE IMAGE RECOGNITION--论文笔记

论文笔记 论文来源 Very Deep Convolutional Networks for Large-Scale Image Recognition 代码来源 还没上传 数据集 这里采用的是猫狗数据集 还没上传 1论文摘要的翻译 在这项工作中&#xff0c;我们研究了卷积网络深度对其在大规模图像识别设置中的准确性的影响。我…

CTFHUB技能树——SSRF(二)

目录 上传文件 ​FastCGI协议 Redis协议 上传文件 题目描述&#xff1a;这次需要上传一个文件到flag.php了.祝你好运 index.php与上题一样&#xff0c;使用POST请求的方法向flag.php传递参数 //flag.php页面源码 <?phperror_reporting(0);if($_SERVER["REMOTE_ADDR&…

删除MySQL中所有表的外键

方法一&#xff1a; 原理 查询schema中所有外键名称然后拼接生成删除语句 第一步&#xff1a; SELECT CONCAT(ALTER TABLE ,TABLE_SCHEMA,.,TABLE_NAME, DROP FOREIGN KEY ,CONSTRAINT_NAME, ;) FROM information_schema.TABLE_CONSTRAINTS c WHERE c.TABLE_SCHEMA数据库名…

node环境问题(无法加载文件D:\Software\Node.js\node_global\vue.ps1,因为在此系统上禁止运行脚本。)

问题&#xff1a;npm安装lerna显示安装成功&#xff0c;但是lerna -v的时候报错 解决步骤&#xff1a; 1、输入&#xff1a;Get-ExecutionPolicy 2、输入&#xff1a;Set-ExecutionPolicy -Scope CurrentUser&#xff08;有选项的选Y&#xff09; 3、输入&#xff1a;RemoteSi…

超详细的前后端实战项目(Spring系列加上vue3)前端篇(二)(一步步实现+源码)

好了&#xff0c;兄弟们&#xff0c;继昨天的项目之后&#xff0c;开始继续敲前端代码&#xff0c;完成前端部分 昨天完成了全局页面的代码&#xff0c;和登录页面的代码&#xff0c;不过昨天的代码还有一些需要补充的&#xff0c;这里添加一下 内容补充&#xff1a;在调用登…

信息系统项目管理师0129:输入(8项目整合管理—8.7监控项目工作—8.7.1输入)

点击查看专栏目录 文章目录 8.7 监控项目工作8.7.1 输入8.7 监控项目工作 监控项目工作是跟踪、审查和报告整体项目进展,以实现项目管理计划中确定的绩效目标的过程。本过程的主要作用: 让干系人了解项目的当前状态并认可为处理绩效问题而采取的行动;通过成本和进度预测,让…

房地产支持政策加码不断,美克家居全力变革未来可期

2023年我国经济处于恢复发展阶段&#xff0c;而家具制造业“回温”速度明显慢于经济增速&#xff0c;在这一背景下&#xff0c;美克家居如此营收表现并不令人感到意外。而在充沛现金流支撑下&#xff0c;辅以全方位开展降本增效的年度经营规划&#xff0c;公司亏损收窄或已为期…

rclone迁移对象存储之间的数据

1 概述 rclone是一款文件复制工具&#xff0c;既可以用于在linux主机之间复制文件&#xff0c;也可以在对象存储之间复制文件。 rclone的官网为&#xff1a; https://rclone.orgrlcone关于对象存储的官方文档为&#xff1a; https://rclone.org/s32 安装 2.1 yum安装 yum …

【全网最全】2024电工杯数学建模A题前两问完整解答+21页初步参考论文+py代码+保奖思路等(后续会更新成品论文)

您的点赞收藏是我继续更新的最大动力&#xff01; 一定要点击如下的卡片链接&#xff0c;那是获取资料的入口&#xff01; 【全网最全】2024电工杯数学建模A题前两问完整解答21页初步参考论文py代码保奖思路等&#xff08;后续会更新成品论文&#xff09;「首先来看看目前已有…

在线生成数据库er图的工具

网址 https://databasediagram.com/ 其实很早之前我也有类似的想法&#xff0c;根据数据表结构&#xff0c;显示数据表之间的关系图。 当时我还写了一个工具&#xff0c;可惜后来就没怎么用过了。 这个网站和我当时的思路很像&#xff0c;只不过他这个页面显示比我的好得多&…

谈恋爱没经验?那就来刷谈恋爱经验宝宝吧

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星评选TOP 10&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作…

C++青少年简明教程:If选择语句

C青少年简明教程&#xff1a;If选择语句 C中选择语句的语法是&#xff1a; if (条件) { 条件成立时需要执行的语句... } [else { 条件不成立时需要执行的语句... }] 说明&#xff1a; if后面使用一个括号&#xff0c;括号里是条件——关系表达式。 所谓的关系表达式就是判…

报错:找不到或无法加载主类 com.example.SpringbootApplication(idea)

OpenJDK 64-Bit Server VM warning: Sharing is only supported for boot loader classes because bootstrap classpath has been appended 错误: 找不到或无法加载主类 com.example.SpringbootApplication 原因: java.lang.NoClassDefFoundError: com/example/SpringBootAppli…

上位机图像处理和嵌入式模块部署(mcu中的串口接口)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 在mcu开发中&#xff0c;mcu扮演着非常重要的角色。一方面&#xff0c;串口可以帮助我们对固件功能进行调试&#xff0c;另外一方面&#xff0c;串…

小猫咪的奇幻冒险:一个简单的Python小游戏

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、游戏简介与演示 二、游戏开发与运行 1. 环境搭建 2. 代码解析 3. 加速机制 三、游戏…

k近邻和kd树

K近邻 选取k值的时候可以采用交叉验证的方法 一般采用欧氏距离 kd树 采用树这个特殊的数据结构来实现k近邻算法 先假设是二维的情况 下面讲解kd树的完整构造过程 找这个中位数是按照每棵子树来创建的 前提是已经有了一棵kd树,然后来一个实例点