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

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

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
2018电工杯数学建模a是一个关于交通流量和拥堵状况的。该给出了一个城市的道路网络图,每条道路上都标有不同的拥堵程度以及车辆通过的速度。目要求我们研究该城市的交通流量以及拥堵情况,并设计一种优化方案来改善拥堵状况。 首先,为了研究交通流量,我们可以利用流量入和流量出的概念来衡量道路上的车流量。我们可以计算每条道路上车流量的平均值,然后根据道路的拥堵程度将其分为不同的等级。通过统计每种等级的路段数量,我们可以得出整个城市的交通流量情况,进而分析是否存在交通拥堵的。 其次,我们需要研究拥堵状况。目中到了道路上的车辆通过速度以及拥堵的程度。我们可以利用这些数据来构建一个拥堵指标模型。这个模型可以根据车辆通过速度和拥堵程度,计算出一个综合的拥堵指标值,用来评价道路的拥堵程度。通过对所有道路的拥堵指标进行排序,我们可以确定拥堵最严重的路段,并找出导致拥堵的主要原因。 最后,为了改善拥堵状况,我们可以出一种优化方案。首先,我们可以通过扩建道路或调整交通信号灯等方式增加交通通道的容量。其次,我们可以对道路进行规划和优化,通过合理布局道路的入口和出口,减少交通瓶颈的发生。此外,我们还可以通过推行公共交通、高人们对公共交通的利用率,减少私家车辆的使用,从而减少交通流量。 综上所述,对于2018电工杯数学建模a,我们可以通过研究交通流量和拥堵状况并设计一种优化方案来解决交通拥堵

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值