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

news2024/11/26 7:38:21

【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

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

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

相关文章

25特别放送:我的Gopher成长之路

很早就开始准备这篇文章了,但总是想了又想不知怎样才能更好的写下自己最真实的想法,后来在经过了好几个晚上睡前的思考后才得以完成。 首先,写这篇文章的目的并不是为了吹嘘Go语言有多厉害,也不是鼓励大家都来学习Go语言,仅是为了记录和分享。当然如果是兴趣使然,那么欢…

实时更新天气微信小程序开发

1.新建一个天气weather项目 2.在app.json中创建一个路由页面 当我们点击保存的时候&#xff0c;微信小程序会自动的帮我们创建好页面 3.在weather页面上书写我们的骨架 4.此时我们的页面很怪&#xff0c;因为没有给它添加样式和值。此时我们给它一个样式。&#xff08;样式写在…

蓝桥杯——二分专题

二分分为&#xff1a;实数二分&#xff0c;二分理论题 二分套路题&#xff1a;最小值最大化&#xff0c;最大值最小化 运用二分满足条件&#xff1a;有界&#xff0c;单调。 1.两个二分模板 找>x的第一个&#xff0c;mid&#xff08;lowhigh&#xff09;//2 &#xff0c;没…

java基础知识——23.正则表达式

这篇文章我们简略的讲一下java的正则表达式 目录 1.正则表达式概述 2.正则表达式的简单匹配规则 3.正则表达式的复杂匹配规则 4.正则表达式的分组匹配规则 5.正则表达式的非贪婪匹配 6.使用正则表达式进行搜索和替换 1.正则表达式概述 首先&#xff0c;我们需要明确一个…

leetcode 面试题 02.04. 分割链表

原题为&#xff1a; 给你一个链表的头节点 head 和一个特定值 x &#xff0c;请你对链表进行分隔&#xff0c;使得所有 小于 x 的节点都出现在大于或等于x 的节点之前。 你不需要 保留 每个分区中各节点的初始相对位置。 测试示例如下&#xff1a; 输入&#xff1a;head [1,4…

Flink第一章:环境搭建

系列文章目录 Flink第一章:环境搭建 文章目录 系列文章目录前言一、Idea项目1.创建项目2.pom.依赖3.DataSet4.DataStreaming 二、环境搭建1.Standalone2.Flink on Yarn 总结 前言 Flink也是现在现在大数据技术中火爆的一门,反正大数据的热门技术学的也差不多了,啃完Flink基本…

Packet Tracer - 研究直连路由

Packet Tracer - 研究直连路由 目标 第 1 部分&#xff1a;研究 IPv4 直连路由 第 2 部分&#xff1a;研究 IPv6 直连路由 拓扑图 背景信息 本活动中的网络已配置。 您将登录路由器并使用 show 命令发现并回答以下有关直连路由的问题。 注&#xff1a;用户 EXEC 密码是 c…

A2B汽车音响系统开发设计与改装

hezkz17进数字音频系统研究开发答疑群 1 前装与后装

安装了Volar插件vue文件没有显示Volar的图标

vue3官网 推荐使用Volar来替换Vetur 一、安装Volar 安装Volar前&#xff1a; 安装Volar后&#xff1a; 二、安装Volar插件后&#xff0c;无法显示高亮 之前我安装Volar插件后&#xff0c;vue文件的<script>、<template>、<style>标签仍然是白色的&#xff0c…

Doris(17):动态分区

动态分区是在 Doris 0.12 版本中引入的新功能。旨在对表级别的分区实现生命周期管理(TTL)&#xff0c;减少用户的使用负担。 目前实现了动态添加分区及动态删除分区的功能。 1 原理 在某些使用场景下&#xff0c;用户会将表按照天进行分区划分&#xff0c;每天定时执行例行任…

【网课平台】Day14.集成RabbitMQ:消息队列实现异步通知

文章目录 一、需求&#xff1a;支付通知1、需求分析2、技术方案3、集成RabbitMQ4、生产端发送消息5、消费方发送消息 二、需求&#xff1a;在线学习1、需求分析2、表设计与实体类3、接口定义--查询课程4、接口定义获取视频5、Service层开发6、FeignClient定义7、代码完善 三、需…

数字设计小思 - D触发器与死缠烂打的亚稳态

前言 本系列整理数字系统设计的相关知识体系架构&#xff0c;为了方便后续自己查阅与求职准备。在FPGA和ASIC设计中&#xff0c;D触发器是最常用的器件&#xff0c;也可以说是时序逻辑的核心&#xff0c;本文根据个人的思考历程结合相关书籍内容和网上文章&#xff0c;聊一聊D…

Hudi数据湖技术之数据中心案例实战

目录 1 案例架构2 业务数据2.1 客户信息表2.2 客户意向表2.3 客户线索表2.4 线索申诉表2.5 客户访问咨询记录表 3 Flink CDC 实时数据采集3.1 开启MySQL binlog3.2 环境准备3.3 实时采集数据3.3.1 客户信息表3.3.2 客户意向表3.3.3 客户线索表3.3.4 客户申诉表3.3.5 客户访问咨…

微信小程序 WebSocket 通信 —— 在线聊天

在Node栏目就讲到了Socket通信的内容&#xff0c;使用Node实现Socke通信&#xff0c;还使用两个流行的WebSocket 库&#xff0c;ws 和 socket.io&#xff0c;在小程序中的WebSocket接口和HTML5的WebSocket基本相同&#xff0c;可以实现浏览器与服务器之间的全双工通信。那么本篇…

SSH 服务器、NFS 服务器、TFTP 服务器详解及测试

文章目录 前言一、SSH 服务器1、SSH 能做什么&#xff1f;2、安装 SSH 服务器3、测试 SSH 服务4、用 SecureCRT 测试 二、NFS 服务器1、NFS 能做什么&#xff1f;2、安装 NFS 软件包3、添加 NFS 共享目录4、启动 NFS 服务5、测试 NFS 服务器 三、TFTP 服务器1、TFTP 能做什么&a…

轻松掌握mysql事务的四大特性ACID及实现原理

1、介绍 要实现这四大特性&#xff0c;我们先了解下mysql中的缓冲池和数据页 2、保证原子性和一致性 1、通过undo log保证数据的原子性和一致性 undo log保证了事务的原子性和一致性。 3、保证隔离性 1、并发事务产生时容易产生的隔离性问题 脏读 不可重复读 幻读…

【数据库复习】第四章数据库保护 1

数据库安全性&#xff1a; 数据库的一大特点是数据可以共享 数据共享必然带来数据库的安全性问题 数据库系统中的数据共享不能是无条件的共享 用户标识与鉴别 用户名和口令易被窃取&#xff0c;每个用户预先约定好一个计算过程或者函数 存取控制 常用存取控制方法 自主存…

电子电气架构——车辆E/E架构常识

我是穿拖鞋的汉子,魔都中坚持长期主义的工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 人只有在举棋不定,无从把握的时候才感到疲惫。只有去行动就能获得解放,哪怕做的不好也比无所作为强! 本文主要介绍车辆E/E架构常识,主要涉及E/E架构面临…

LNMP、Tomca

构建Nginx服务器 使用源码包安装nginx软件包 [rootproxy ~]# yum -y install gcc pcre-devel openssl-devel #安装依赖包 [rootproxy ~]# useradd -s /sbin/nologin nginx [rootproxy ~]# tar -xf nginx-1.17.6.tar.gz [rootproxy ~]# cd nginx-1.17.6 [rootproxy …

【Shell编程之循环语句与函数】

目录 一、for循环语句示例:示例1示例2 示例3 二、跳出循环举例 转义符三、while 语句的结构示例: 四、until语句的结构1、基本格式 五、seq命令 一、for循环语句 读取不同的变量值&#xff0c;用来逐个执行同一组命令 #!/bin/bash for(( i0;i<5;i ))i0 定义for循环i变量初…