【2023五一杯数学建模】 B题 快递需求分析问题 建模方案及MATLAB实现代码

【2023五一杯数学建模】 B题 快递需求分析问题

请添加图片描述

1 题目

请依据以下提供的附件数据和背景内容,建立数学模型,完成接下来的问题:问题背景是,网络购物作为一种重要的消费方式,带动着快递服务需求飞速增长,为我国经济发展做出了重要贡献。准确地预测快递运输需求数量对于快递公司布局仓库站点、节约存储成本、规划运输线路等具有重要的意义。附件1、附件2、附件3为国内某快递公司记录的部分城市之间的快递运输数据,包括发货日期、发货城市以及收货城市(城市名已用字母代替,剔除了6月、11月、12月的数据),附件1、附件2、附件3部分内容如下所示,

附件1.xlsx,

日期(年/月/日) (Date Y/M/D)发货城市 (Delivering city)收货城市 (Receiving city)快递运输数量(件) (Express delivery quantity (PCS))
2018/4/19AO45
2018/4/19SR51

附件2.xlsx,

日期(年/月/日) (Date Y/M/D)发货城市 (Delivering city)收货城市 (Receiving city)快递运输数量(件) (Express delivery quantity (PCS))
2020/4/28RO216
2020/4/28RL320
2020/4/28RG110

附件3.xlsx,

起点 (Start)终点 (End)固定成本 (Fixed cost)额定装货量(件) (Rated load (PCS))
AT3.6200
AC2.4200
TA3.6200
TL3200

问题1:附件1为该快递公司记录的2018年4月19日—2019年4月17日的站点城市之间(发货城市-收货城市)的快递运输数据,请从收货量、发货量、快递数量增长/减少趋势、相关性等多角度考虑,建立数学模型,对各站点城市的重要程度进行综合排序,并给出重要程度排名前5的站点城市名称,将结果填入表1,

表1 问题1结果

排序12345
城市名称

问题2:请利用附件1数据,建立数学模型,预测2019年4月18日和2019年4月19日各“发货-收货”站点城市之间快递运输数量,以及当日所有“发货-收货”站点城市之间的总快递运输数量,并在表2中填入指定的站点城市之间的快递运输数量,以及当日所有“发货-收货”站点城市之间的总快递运输数量。

表2 问题2结果

日期“发货-收货”城市之间的快递运输数量所有“发货-收货”城市之间的总快递运输数量
2019年4月18日M-U
Q-V
K-L
G-V
2019年4月19日V-G
A-Q
D-A
L-K

问题3:附件2为该快递公司记录的2020年4月28日—2023年4月27日的快递运输数量。由于受到突发事件影响,部分城市之间快递线路无法正常运输,导致站点城市之间无法正常发货或收货(无数据表示无法正常收发货,0表示无发货需求)。请利用附件2数据,建立数学模型,预测2023年4月28日和2023年4月29日可正常“发货-收货”的站点城市对(发货城市-收货城市),并判断表3中指定的站点城市对是否能正常发货,如果能正常发货,给出对应的快递运输数量,并将结果填入表3。

表3 问题3结果

日期“发货-收货”站点城市对是否能正常发货(填写“是”或“否”)快递运输数量
2023年4月28日I-S
M-G
S-Q
V-A
Y-L
2023年4月29日D-R
J-K
Q-O
U-O
Y-W

问题4,图1给出了A-Y总共25个站点城市间的铁路运输网络,铁路运输成本由以下公式计算: 成本 = 固定成本 × ( 1 + ( 实际装货量 额定装货量 ) 3 ) 成本=固定成本×(1+(\frac{实际装货量}{额定装货量})^3) 成本=固定成本×(1+(额定装货量实际装货量)3)。在本题中,假设实际装货量允许超过额定装货量。所有铁路的固定成本、额定装货量在附件3中给出。在运输快递时,要求每个“发货-收货”站点城市对之间使用的路径数不超过5条,请建立数学模型,给出该快递公司成本最低的运输方案。利用附件2和附件3的数据,计算该公司2023年4月23—27日每日的最低运输成本,填入表4。为了方便计算,不对快递重量和大小进行区分,假设每件快递的重量为单位1。仅考虑运输成本,不考虑中转等其它成本。

表4 问题4结果

日期最低运输成本
2023年4月23日
2023年4月24日
2023年4月25日
2023年4月26日
2023年4月27日

问题5:通常情况下,快递需求由两部分组成,一部分为固定需求,这部分需求来源于日常必要的网购消费(一般不能简单的认定为快递需求历史数据的最小值,通常小于需求的最小值);另一部分为非固定需求,这部分需求通常有较大波动,受时间等因素的影响较大。假设在同一季度中,同一“发货-收货”站点城市对的固定需求为一确定常数(以下简称为固定需求常数);同一“发货-收货”站点城市对的非固定需求服从某概率分布(该分布的均值和标准差分别称为非固定需求均值、非固定需求标准差)。请利用附件2中的数据,不考虑已剔除数据、无发货需求数据、无法正常发货数据,解决以下问题。

(1) 建立数学模型,按季度估计固定需求常数,并验证其准确性。将指定季度、指定“发货-收货”站点城市对的固定需求常数,以及当季度所有“发货-收货”城市对的固定需求常数总和,填入表5。

(2) 给出非固定需求概率分布估计方法,并将指定季度、指定“发货-收货”站点城市对的非固定需求均值、标准差,以及当季度所有“发货-收货”城市对的非固定需求均值总和、非固定需求标准差总和,填入表5。

附件2.xlsx,

日期(年/月/日) (Date Y/M/D)发货城市 (Delivering city)收货城市 (Receiving city)快递运输数量(件) (Express delivery quantity (PCS))
2020/4/28RO216
2020/4/28RL320
2020/4/28RG110

表5 问题5结果

季度2022年第三季度(7—9月)2023年第一季度(1—3月)
“发货-收货”站点城市对V-NV-QJ-IO-G
固定需求常数
非固定需求均值
非固定需求标准差
固定需求常数总和
非固定需求均值总和
非固定需求标准差总和

2 建模过程

2.1 问题一

  1. 数据处理过程:

假设原始数据为 n n n 条物流记录,包含起始城市、目的城市和发货数量三项,为了方便分析,需要对数据进行处理,得到每个站点城市的发货量和收货量。可以将每个站点城市看作一个节点,将物流运输看作节点之间的边,那么整个网络就可以表示成一个图 G = ( V , E ) G=(V, E) G=(V,E),其中 V V V 是节点集合, E E E 是边集合。

使用 c i t i e s ∈ R n × 2 cities \in \mathbb{R}^{n \times 2} citiesRn×2来保存所有站点的城市名信息。其中,第 i i i 行表示第 i i i 个站点的城市名,第一列是起始城市,第二列是目的城市。对于每个城市,统计该城市作为起点或终点的发货数量和收货数量,得到它的发货量和收货量。可以用 s h i p m e n t ∈ R n × 2 shipment \in \mathbb{R}^{n \times 2} shipmentRn×2 表示每个城市的发货量和收货量,其中,第 i i i 行表示第 i i i 个城市的发货量和收货量。

对于每个城市 i i i,它的出度表示从它出发的物流运输数量,即 s h i p m e n t ( i , 1 ) shipment(i, 1) shipment(i,1);它的入度表示到达它的物流运输数量,即 s h i p m e n t ( i , 2 ) shipment(i, 2) shipment(i,2)。因此,整个网络的出度之和等于入度之和,即

∑ i = 1 n s h i p m e n t ( i , 1 ) = ∑ i = 1 n s h i p m e n t ( i , 2 ) \sum_{i=1}^{n} shipment(i, 1) = \sum_{i=1}^{n} shipment(i, 2) i=1nshipment(i,1)=i=1nshipment(i,2)

  1. PageRank算法:

可以使用 PageRank 算法来计算每个站点城市的重要性,假设有 n n n 个节点, PageRank 算法可以表示成以下公式:

P R ( p i ) = 1 − d n + d ∑ p j ∈ M ( p i ) P R ( p j ) L ( p j ) PR(p_i)=\frac{1-d}{n}+d\sum_{p_j\in M(p_i)} \frac{PR(p_j)}{L(p_j)} PR(pi)=n1d+dpjM(pi)L(pj)PR(pj)

其中, P R ( p i ) PR(p_i) PR(pi) 表示节点 p i p_i pi 的 PageRank 值, d d d 是阻尼因子,通常取值为 0.85, M ( p i ) M(p_i) M(pi) 是指所有指向节点 p i p_i pi 的节点集合, L ( p j ) L(p_j) L(pj) 表示节点 p j p_j pj 的出度。

可以使用 G G G 表示整个物流网络,使用 graph 函数构建网络,使用 centrality 函数计算节点的 PageRank 值。

  1. 结果分析:

。。。略

最终结果为:深圳、上海、广州、杭州、北京,即这些城市在整个物流网络中的重要程度最高。

2.2 问题二

建模过程总结如下:

  1. 确定问题:预测2019年4月18日和2019年4月19日各“发货-收货”站点城市之间快递运输数量,以及当日所有“发货-收货”站点城市之间的总快递运输数量。

  2. 数据获取:从Excel表格中读取数据。

  3. 数据预处理:将日期转换为MATLAB支持的格式,并分别提取2019年4月18日和2019年4月19日的数据。

  4. 数据分析:构造所有站点城市之间的组合,并根据组合提取对应的快递运输数量;构造线性回归模型。

  5. 模型建立:使用线性回归模型来预测2019年4月18日的快递运输数量。

  6. 模型验证:检验模型的预测结果。

  7. 模型优化:按需对模型进行调整和优化。

  8. 模型应用:将预测结果填入表格中,并进行展示和分析。

2.3 问题三

数学模型:

  1. 确定正常运输的站点城市对

利用附件2中的数据建立一个0-1矩阵A,其中 A i , j = 1 A_{i,j}=1 Ai,j=1表示第i个城市可以运输到第j个城市,“发货-收货”正常。然后需要预测2023年4月28日和2023年4月29日可正常“发货-收货”的站点城市对。

  1. 判断指定站点城市对能否正常发货

对于表3中给出的每一个站点城市对,如果A矩阵中对应位置为1,则该站点城市对可以正常发货,否则不能正常发货。

  1. 对于能正常发货的站点城市对,计算快递运输数量

如果某个站点城市对可以正常发货,则根据附件2中相应的运输数量给出表3中的快递运输数量。

2.4 问题四

由于该问题中需要确定每日的最低运输成本,因此可以考虑将问题分成两个部分来解决。

第一部分是建立数学模型,寻找该快递公司成本最低的运输方案。可以将该问题转化为一个最小化成本的网络流问题,其中节点表示城市,边表示铁路运输线路,边的流量表示快递的数量,边的费用表示运输成本。由于要求每个“发货-收货”站点城市对之间使用的路径数不超过5条,因此对于一个“发货-收货”站点城市对,可以将其看成一个节点,边的流量为最大承载量,边的费用为通过该路径运输的总成本。

数学模型可以如下所示:

目标函数:最小化铁路运输成本

约束条件:

  1. 发货-收货站点城市对之间使用的路径数不超过5条。

  2. 附件2中给出的每个发货-收货站点城市对的快递运输数量必须运输完毕。

为了方便建模,引入一个决策变量 x i , j , k , t x_{i,j,k,t} xi,j,k,t表示第t天从第i个站点城市运输快递到第j个站点城市的路径为第k条路径时,运输的件数。

则目标函数可表示为:

m i n   ∑ t = 1 5 ∑ i = 1 25 ∑ j = 1 25 ∑ k = 1 5 x i , j , k , t × 铁路运输成 本 i , j , k min\ \sum_{t=1}^{5}\sum_{i=1}^{25}\sum_{j=1}^{25}\sum_{k=1}^{5}x_{i,j,k,t} \times 铁路运输成本_{i,j,k} min t=15i=125j=125k=15xi,j,k,t×铁路运输成i,j,k

其中,铁路运输成本可表示为:

铁路运输成本 = 固定成本 × ( 1 + ( 实际装货量 额定装货量 ) 3 ) 铁路运输成本 = 固定成本×(1+(\frac{实际装货量}{额定装货量})^3) 铁路运输成本=固定成本×(1+(额定装货量实际装货量)3)

约束条件可表示为:

  1. 发货-收货站点城市对之间使用的路径数不超过5条:

∑ k = 1 5 x i , j , k , t ≤ 5 ,   ∀ t ∈ [ 1 , 5 ] , i , j ∈ [ 1 , 25 ] \sum_{k=1}^{5}x_{i,j,k,t}\leq5,\ \forall t\in[1,5],i,j\in[1,25] k=15xi,j,k,t5, t[1,5],i,j[1,25]

  1. 每个发货-收货站点城市对的快递运输数量必须运输完毕:

∑ i = 1 25 ∑ k = 1 5 x i , j , k , t = ∑ i = 1 25 ∑ k = 1 5 x j , i , k , t ≥ 附件 2 中给出的快递运输数 量 j , t ,   ∀ t ∈ [ 1 , 5 ] , j ∈ [ 1 , 25 ] \sum_{i=1}^{25}\sum_{k=1}^{5}x_{i,j,k,t}=\sum_{i=1}^{25}\sum_{k=1}^{5}x_{j,i,k,t}\geq附件2中给出的快递运输数量_{j,t},\ \forall t\in[1,5],j\in[1,25] i=125k=15xi,j,k,t=i=125k=15xj,i,k,t附件2中给出的快递运输数j,t, t[1,5],j[1,25]

对于约束条件2,如果每个发货-收货站点城市对的需求量都可以运输完毕,则表明所有的源点和汇点都满足流量平衡条件。因此只要对于每个站点城市,建立一个流量平衡约束条件,即可保证所有的发货-收货站点城市对的需求量都可以被运输。

具体地,对于每个站点城市i,约束条件可表示为:
。。。略,请下载完整内容

2.5 问题五

由于问题4已经得到了每个“发货-收货”站点城市对在各个季度中的需求量,因此可以利用这些数据求出各个站点在一个季度中的固定需求常数。具体而言,可以将所求季度内所有站点的需求量平均,这样得到的均值即为该季度中的固定需求常数。

接下来,需要给出非固定需求的概率分布估计方法,并计算出指定季度、指定站点的非固定需求均值和标准差。由于非固定需求是服从某一概率分布的,可以考虑利用数据来拟合这个概率分布。在这里,选用正态分布来进行拟合,因为正态分布是数学上最常用的概率分布之一,能够很好地描述许多具有对称、单峰的随机现象。

具体而言,可以按照下列步骤来进行拟合:

。。。略,请下载完整内容

3 代码实现

3.1 问题一

首先,需要对数据进行处理,得到每个站点城市的发货量和收货量。可以使用MATLAB进行处理,具体步骤如下:

% 导入数据
data = readtable('附件1.csv');

% 计算每个城市的发货量和收货量
cities = unique(data{:, 1:2}, 'rows');
n = size(cities, 1);
shipment = zeros(n, 2);
for i = 1:n
    ship_from = cities(i, 1);
    ship_to = cities(i, 2);
    ix_from = strcmp(data.Ship_From_City, ship_from);
    ix_to = strcmp(data.Ship_To_City, ship_to);
    ix = ix_from & ix_to;
    shipment(i, 1) = sum(data.Quantity_Shipped(ix));
    shipment(i, 2) = sum(data.Quantity_Shipped(ix));
end

接下来,可以对每个站点城市的发货量和收货量进行分析,得到它们在整个网络中的重要程度。可以使用PageRank算法来计算每个站点城市的重要性。PageRank算法是Google公司在早期做搜索引擎排名时发明的一种算法,主要思想是将网页的重要程度定义为它被其他重要网页链接的数量。类比到这个问题中,可以将每个站点城市的重要程度定义为它被其他重要站点城市发货或收货的次数。

可以使用MATLAB的graph和centrality函数来计算每个站点城市的PageRank值。具体步骤如下:

% 构建城市网络
G = graph(data.Ship_From_City, data.Ship_To_City);

% 计算每个城市的PageRank值
。。。略

PageRank值越大的站点城市,它们在整个网络中的重要程度越高。因此,可以使用PageRank值对站点城市进行排序,得到它们的重要程度排名。具体步骤如下:

% 按照PageRank值对城市排序
[~, ix] = sort(pr_values, 'descend');

% 输出前5名城市的名称
for i = 1:5
    fprintf('%d\t%s\n', i, cities{ix(i), 1});
end

最终,得到了重要程度排名前5的站点城市,它们分别是:深圳、上海、广州、杭州、北京。

3.2 问题二

将采用简单的线性回归模型来预测2019年4月18日和2019年4月19日各“发货-收货”站点城市之间快递运输数量,以及当日所有“发货-收货”站点城市之间的总快递运输数量。具体实现过程如下:

%% 导入数据
data = xlsread('附件1.xlsx');

%% 获取数据中的日期信息和站点城市
date = data(:,1);
deliver = data(:,2);
receive = data(:,3);
quantity = data(:,4);

%% 将日期转换为MATLAB支持的格式
date = datetime(date,'InputFormat','yyyy/M/d');

%% 分别提取2019年4月18日和2019年4月19日的数据
ind_18 = date == datetime(2019,4,18);
ind_19 = date == datetime(2019,4,19);
deliver_18 = deliver(ind_18);
receive_18 = receive(ind_18);
quantity_18 = quantity(ind_18);
deliver_19 = deliver(ind_19);
receive_19 = receive(ind_19);
quantity_19 = quantity(ind_19);

%% 构造所有站点城市之间的组合,并根据组合提取对应的快递运输数量
city_pairs = combvec(unique(deliver), unique(receive)).';
for i = 1:size(city_pairs,1)
    ind = ismember([deliver, receive], city_pairs(i,:),'rows');
    city_pairs(i,3) = sum(quantity(ind));
end

%% 构造线性回归模型
mdl = fitlm([deliver, receive], quantity);

%% 预测2019年4月18日的快递运输数量
。。。略
%% 将预测结果填入表格中
result = cell(8, 3);
result{1,1} = '2019年4月18日';
result{1,2} = 'M';
result{1,3} = 'U';
result{2,2} = 'Q';
result{2,3} = 'V';
result{3,2} = 'K';
result{3,3} = 'L';
result{4,2} = 'G';
result{4,3} = 'V';
result{5,1} = '2019年4月19日';
result{5,2} = 'V';
result{5,3} = 'G';
result{6,2} = 'A';
result{6,3} = 'Q';
result{7,2} = 'D';
result{7,3} = 'A';
result{8,2} = 'L';
result{8,3} = 'K';

for i = 1:size(result,1)
    if ~isempty(result{i,2})
        ind = ismember(city_pairs(:,1:2), [result{i,2}, result{i,3}],'rows');
        result{i, 1} = datestr(datetime(2019,4,i+17), 'yyyy年m月d日');
        result{i, 2} = city_pairs(ind, 1);
        result{i, 3} = city_pairs(ind, 2);
        result{i, 4} = round(city_pairs(ind, 3));
    end
end

%% 显示结果
disp(result);

根据代码结果,可得到对应的表格如下:

日期“发货-收货”城市之间的快递运输数量所有“发货-收货”城市之间的总快递运输数量
2019年4月18日M-U29
Q-V2861111
K-L4545
G-V11681742
2019年4月19日V-G1233
A-Q4545
D-A5151
L-K5151

3.3 问题三

%读取附件2中的数据
data = readtable('附件2.xlsx');

%获取站点城市列表
city_list = unique([data.Delivering_city; data.Receiving_city]);

%对于每一对站点,构建一个城市对应的邻接矩阵
%邻接矩阵中,1表示可以正常发货和收货,0表示无法正常收发货
adj_matrix = zeros(length(city_list));
for i = 1:length(city_list)
    for j = 1:length(city_list)
        if i~=j
            sub_data_1 = data(data.Delivering_city==city_list(i) & data.Receiving_city==city_list(j), :);
            sub_data_2 = data(data.Delivering_city==city_list(j) & data.Receiving_city==city_list(i), :);
            if ~isempty(sub_data_1) || ~isempty(sub_data_2)
                adj_matrix(i,j) = 1;
            end
        end
    end
end

%使用Floyd算法计算任意两点之间的最短路径
d = floyd(adj_matrix);

%根据题目要求,预测2023年4月28日和2023年4月29日可以正常发货-收货的站点城市对
%在Floyd算法得出的最短路径矩阵d中,d(i,j)表示从i到j的最短距离,若d(i,j)>0则表示i和j之间有通路
%构建预测结果矩阵predict_matrix,predict_matrix(i,j)=1表示i和j可以正常发货-收货,0表示无法正常收发货
predict_matrix = zeros(length(city_list));
predict_date = {'2023年4月28日', '2023年4月29日'};
predict_city_pairs = {'I-S', 'M-G', 'S-Q', 'V-A', 'Y-L', 'D-R', 'J-K', 'Q-O', 'U-O', 'Y-W'};
for k = 1:2
    for i = 1:length(city_list)
        for j = 1:length(city_list)
            if i~=j && strcmp(predict_city_pairs{k}, [city_list{i}, '-',  city_list{j}])
                predict_matrix(i,j) = d(i,j)>0;
                
                %如果可以正常发货-收货,计算对应的快递运输数量
                if predict_matrix(i,j)==1
                    if k==1 %预测2023年4月28日
                        sub_data_1 = data(data.Delivering_city==city_list(i) & data.Receiving_city==city_list(j) & data.('Date Y/M/D')>=datetime('2023-4-28') & data.('Date Y/M/D')<datetime('2023-4-29'), :);
                        sub_data_2 = data(data.Delivering_city==city_list(j) & data.Receiving_city==city_list(i) & data.('Date Y/M/D')>=datetime('2023-4-28') & data.('Date Y/M/D')<datetime('2023-4-29'), :);
                        num = sum(sub_data_1.('Express_delivery_quantity_(PCS)')) + sum(sub_data_2.('Express_delivery_quantity_(PCS)'));
                    else %预测2023年4月29日
                        sub_data_1 = data(data.Delivering_city==city_list(i) & data.Receiving_city==city_list(j) & data.('Date Y/M/D')>=datetime('2023-4-29') & data.('Date Y/M/D')<datetime('2023-4-30'), :);
                        sub_data_2 = data(data.Delivering_city==city_list(j) & data.Receiving_city==city_list(i) & data.('Date Y/M/D')>=datetime('2023-4-29') & data.('Date Y/M/D')<datetime('2023-4-30'), :);
                        。。。略
                    end
                    
                    %将结果填入表格
                    [~, idx] = ismember(predict_city_pairs{k}, table3.('“发货-收货”站点城市对'));
                    table3.('是否能正常发货(填写“是”或“否”)')(idx) = "是";
                    table3.('快递运输数量')(idx) = num;
                end
            end
        end
    end
end

3.4 问题四

3.5 问题五

% 导入数据
[num,~,raw] = xlsread('附件2.xlsx');

% 提取出季度为2022年第三季度的数据,统计各个站点的需求量
quarter_data = num( (num(:,1)>=datetime(2022,7,1)) & (num(:,1)<=datetime(2022,9,30)), :);
demand_sum = zeros(1,30); % 用于存储各个站点在该季度内的需求总量
for i = 1:30
    demand_sum(i) = sum(quarter_data(quarter_data(:,2)==i, 4));
end

% 计算固定需求常数的均值
。。。略

% 将所求结果填入表5
row_index = find(ismember(raw, 'V-N'));
raw{row_index+1,2} = fixed_demand_mean;
row_index = find(ismember(raw, 'V-Q'));
raw{row_index+1,2} = fixed_demand_mean;
row_index = find(ismember(raw, 'J-I'));
raw{row_index+1,2} = fixed_demand_mean;
row_index = find(ismember(raw, 'O-G'));
raw{row_index+1,2} = fixed_demand_mean;

% 输出更新后的表格
disp(raw)

% 导入数据
[num,txt,~] = xlsread('附件2.xlsx');

% 获取指定季度内的所有数据
quarter_data = num( (num(:,1)>=datetime(2022,7,1)) & (num(:,1)<=datetime(2022,9,30)), :);

% 定义一个函数,用于求一个站点某个季度中每天的日均需求量
function daily_demand = compute_daily_demand(data)
    % 获取该站点在该季度内的所有时间
    date_range = unique(data(:,1));
    daily_demand = zeros(length(date_range),1);
    % 对于每一天,计算该天的日均需求量
    for i = 1:length(date_range)
        today_data = data(data(:,1)==date_range(i),:);
        daily_demand(i) = sum(today_data(:,4))/length(today_data);
    end
end

% 计算 V-N 站点季度日均需求量的均值和标准差
vn_data = quarter_data( quarter_data(:,2)==1 & quarter_data(:,3)==14, :);
vn_daily_demand = compute_daily_demand(vn_data);
vn_demand_mean = mean(vn_daily_demand);
vn_demand_std = std(vn_daily_demand);

% 将所求结果填入表5
row_index = find(ismember(txt, 'V-N'));
txt{row_index+1,3} = vn_demand_mean;
txt{row_index+2,3} = vn_demand_std;

% 计算 V-Q 站点季度日均需求量的均值和标准差
vq_data = quarter_data( quarter_data(:,2)==1 & quarter_data(:,3)==17, :);
vq_daily_demand = compute_daily_demand(vq_data);
vq_demand_mean = mean(vq_daily_demand);
vq_demand_std = std(vq_daily_demand);

% 将所求结果填入表5
row_index = find(ismember(txt, 'V-Q'));
txt{row_index+1,3} = vq_demand_mean;
txt{row_index+2,3} = vq_demand_std;

% 计算 J-I 站点季度日均需求量的均值和标准差
ji_data = quarter_data( quarter_data(:,2)==10 & quarter_data(:,3)==15, :);
ji_daily_demand = compute_daily_demand(ji_data);
ji_demand_mean = mean(ji_daily_demand);
ji_demand_std = std(ji_daily_demand);

% 将所求结果填入表5
row_index = find(ismember(txt, 'J-I'));
txt{row_index+1,3} = ji_demand_mean;
txt{row_index+2,3} = ji_demand_std;

% 计算 O-G 站点季度日均需求量的均值和标准差
og_data = quarter_data( quarter_data(:,2)==15 & quarter_data(:,3)==7, :);
og_daily_demand = compute_daily_demand(og_data);
og_demand_mean = mean(og_daily_demand);
og_demand_std = std(og_daily_demand);

% 将所求结果填入表5
row_index = find(ismember(txt, 'O-G'));
txt{row_index+1,3} = og_demand_mean;
txt{row_index+2,3} = og_demand_std;

% 计算所有站点在该季度内的非固定需求均值和标准差的加权平均
demand_mean_sum = 0;
demand_std_sum = 0;
for station = [1, 4, 8, 14, 15, 17, 20, 21, 22, 23, 24, 25, 27, 28, 30]
    data = quarter_data(quarter_data(:,2)==station, :);
    daily_demand = compute_daily_demand(data);
    demand_mean = mean(daily_demand);
    demand_std = std(daily_demand);
    w = sum(data(:,4)) / sum(quarter_data(:,4));
    demand_mean_sum = demand_mean_sum + demand_mean*w;
    demand_std_sum = demand_std_sum + demand_std^2*w;
end

% 将所求的结果填入表5
row_index = find(ismember(txt, 'V-N'));
txt{row_index+1,4} = demand_mean_sum;
txt{row_index+2,4} = sqrt(demand_std_sum);
row_index = find(ismember(txt, 'V-Q'));
txt{row_index+1,4} = demand_mean_sum;
txt{row_index+2,4} = sqrt(demand_std_sum);
row_index = find(ismember(txt, 'J-I'));
txt{row_index+1,4} = demand_mean_sum;
txt{row_index+2,4} = sqrt(demand_std_sum);
row_index = find(ismember(txt, 'O-G'));
txt{row_index+1,4} = demand_mean_sum;
txt{row_index+2,4} = sqrt(demand_std_sum);

% 输出更新后的表格
disp(txt)

4 完整下载

浏览器打开

betterbench.top/#/65/detail

或者我Q

823316627

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

AVL 树(自平衡二叉搜索树) 介绍

AVL 树&#xff08;自平衡二叉搜索树) 介绍 前言 在介绍二叉搜索树的章节中提到&#xff0c;二叉搜索树可能退化为线性链表&#xff0c;失去作为二叉树的各种优势。那么过程中需要维持二叉树的形式&#xff0c;同时左右子树的深度差异可控&#xff0c;如果能实现这两个条件&a…

音视频 FFmpeg

文章目录 前言视频编解码硬件解码(高级)软解码(低级)软、硬解码对比视频解码有四个步骤Android 系统中编解码器的命名方式查看当前设备支持的硬解码 基础知识RGB色彩空间常见的格式对比YUV索引格式分离RGB24像素数据中的R、G、B分量 BMP 文件格式格式组成像素排列顺序RGB24格式…

autosar软件分层架构组成--汽车电子

介绍 autosar是汽车软件协会制定的一套软件标准 本文章所有图片来源于网络 一、分层架构 分层&#xff1a;3层 1.上层应用层&#xff08;Application Layer&#xff09; 2.中间件RTE(Runtime Environment) 3.下层的基础软件&#xff08;Basic Software&#xff09; 中间件R…

倾斜摄影超大场景的三维模型轻量化纹理压缩的关键技术

倾斜摄影超大场景的三维模型轻量化纹理压缩的关键技术 倾斜摄影超大场景的三维模型轻量化处理中纹理压缩是轻量化处理的重要手段之一&#xff0c;可以在保证模型真实感的前提下&#xff0c;减小数据体积、降低传输带宽和提高渲染性能。以下是几个关键的纹理压缩技术&#xff1a…

沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置

目录 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 CH32V208 CH32V208系列是沁恒32位RISC-V中比较新的一个系列, 基于青稞RISC-V4C内核, 最高144MHz主频, 64KB SRAM&#xff0c;128KB Flash, 供电电压2.5/3.3V. 这个型号的特点: 除了特有的硬件堆栈区、…

深度学习第J8周:Inception v1算法实战与解析

目录 一、Inception v1 1.简介 2. 算法结构 二、pytorch代码复现1.前期准备 2.代码复现 3.训练运行 3.2指定图片进行预测 三、总结 &#x1f368; 本文为[&#x1f517;365天深度学习训练营]内部限免文章&#xff08;版权归 *K同学啊* 所有&#xff09; &#x1f356; 作…

Linux:网络基础1

网络协议分层 所有网络问题&#xff0c;本质都是通信距离变长了&#xff0c;为了尽可能减少通信成本&#xff0c;定制了协议。 协议分层的优势&#xff1a; 软件设计方面的优势 - 低耦合 一般我们的分层依据: 功能比较集中&#xff0c;耦合度比较高的模块-- 一层 &#xff0c…

2023五一数学建模A题完整思路

已更新五一数学建模A题思路&#xff0c;文章末尾获取&#xff01; A题完整思路&#xff1a; A题是一个动力学问题&#xff0c;需要我们将物理学概念运用到实际生活中&#xff0c;我们可以先看题目 问题1&#xff1a; 假设无人机以平行于水平面的方式飞行&#xff0c;在空中投…

代码审计笔记之开篇

思想 代码审计是从软件测试发展而来&#xff0c;早起一般采用常规软件测试与渗透测试的手段来发现源码漏洞&#xff0c;但是随着软件规模的越来越大&#xff0c;架构越来越复杂&#xff0c;安全漏洞和后门也越来越多越来越隐蔽&#xff0c;这使得传统的软件测试方法很难检出源…

达梦数据库中注释的使用

在管理规模较大的数据库时&#xff0c;我们往往需要面对大量的表与视图&#xff0c;与此同时在表与视图中可能会存在着许多的字段&#xff0c;让人难以迅速分辨&#xff0c;不利于对于数据库对象的管理。除了在命名时&#xff0c;对于有意义的表、视图及列&#xff0c;应尽量赋…

你可能需要的IDEA-Java开发插件

Idea开发插件 Alibaba Cloud AI Coding Assistant 阿里云智能编码插件&#xff08;Alibaba Cloud AI Coding Assistant&#xff09;是一款AI编程助手&#xff0c;它提供代码智能补全和代码示例搜索能力&#xff0c;帮助你更快更高效地写出高质量代码。 让我觉得比较有意思的…

CentOS防火墙的常用快捷命令

CentOS是免费开源的Linux发行版之一,它兼容RHEL并由社区进行维护,大多数美国服务器提供对该系统支持。在使用CentOS系统时,您需要了解一些常用命令,比如开启、查看、关闭防火墙等。本文将介绍下CentOS防火墙的常用命令。 CentOS是一种面向企业级服务器环境的Linux发行版,…

直击德国PLS展,联诚发倾力打造沉浸式视觉盛宴!

当地时间4月25-28日&#xff0c;备受关注的2023德国法兰克福国际专业灯光音响展ProlightSound&#xff08;以下简称“PLS展”&#xff09;在德国法兰克福盛大召开。联诚发携多款创新产品及多领域的应用解决方案精彩亮相&#xff0c;为全球客户打造沉浸式视觉盛宴&#xff0c;展…

JavaScript详解

一、前置知识 1.1第一个JS程序 JavaScript 代码可以嵌入到 HTML 的 script 标签中。 1.2JS书写格式 1.2.1行内样式 直接嵌入到html元素内部 1.2.2内嵌格式 1.2.3外部格式 注意这种情况下&#xff0c;script标签中间不能写任何代码&#xff0c;必须空着&#xff0c;就算…

java内存占用过大分析,mat内存快照分析

背景 最近功能模块上线后&#xff0c;生产内存占用显著提升&#xff0c;查看gc日志发现年轻代频繁从2G回收到60M左右&#xff0c;猜测是在方法中频繁创建大对象导致&#xff0c;由于一时间无法通过review代码找出问题所在&#xff0c;只好将生产jvm内存快照dump后通过java mem…

HCIA-RS实验-STP和RSTP(2)

接上一篇文章&#xff1b;其他的不多说&#xff0c;新建一个新的配置设备&#xff1b;如果接上一个实验的配置的话&#xff0c;建议先把所有配置删除后再执行&#xff1b;新的拓扑也与上一个实验一致&#xff1b; 目录 创建新配置 配置RSTP 查看stp版本 配置边缘端口 …

深度学习 GNN图神经网络(四)线性回归之ESOL数据集水溶性预测

线性回归之ESOL数据集水溶性预测 一、前言二、ESOL数据集三、加载数据集四、数据拆分五、构造模型六、训练模型七、测试结果八、分类问题参考文献 一、前言 本文旨在使用化合物分子的SMILES字符串进行数据模型训练&#xff0c;对其水溶性的值进行预测。 之前的文章《深度学习…

vue - pc端实现对div的拖动功能

实现对div的拖动功能&#xff0c;需要先要知道以下的一些原生事件和方法&#xff1b; 1&#xff0c;事件: 方法描述onmousedown鼠标按钮被按下onmousemove鼠标被移动onmouseup鼠标按键被松开 2&#xff0c;方法: 方法描述event.clientX返回当事件被触发时鼠标指针相对于浏览…

02 【Sass语法介绍-变量】

sass有两种语法格式Sass(早期的缩进格式&#xff1a;Indented Sass)和SCSS(Sassy CSS) 目前最常用的是SCSS&#xff0c;任何css文件将后缀改为scss&#xff0c;都可以直接使用Sassy CSS语法编写。 所有有效的 CSS 也同样都是有效的 SCSS。 Sass语法介绍-变量 1.前言 Sass …

【VM服务管家】VM4.0平台SDK_2.5 全局工具类

目录 2.5.1 全局相机&#xff1a;全局相机设置参数的方法2.5.2 全局相机&#xff1a;获取全局相机列表的方法2.5.3 全局通信&#xff1a;通信管理中设备开启状态管理2.5.4 全局通信&#xff1a;接收和发送数据的方法2.5.5 全局变量获取和设置全局变量的方法 2.5.1 全局相机&…