2024年华为杯研赛(B题)|WLAN组网中网络吞吐量建模|数学建模竞赛解题思路|完整代码论文集合
CSDN 2024-10-15 10:37:01 阅读 92
我是Tina表姐,毕业于中国人民大学,对数学建模的热爱让我在这一领域深耕多年。我的建模思路已经帮助了百余位学习者和参赛者在数学建模的道路上取得了显著的进步和成就。现在,我将这份宝贵的经验和知识凝练成一份全面的解题思路与代码论文集合,专为本次赛题设计,旨在帮助您深入理解数学建模的每一个环节。
本次研赛(6题)完整内容均可以在文章末尾领取!(部分代码在本帖子里格式混乱,下载后格式正常)!
添加图片注释,不超过 140 字(可选)
问题一需要根据附件WLAN网络实测训练集中所提供的网络拓扑、业务流量、门限、节点间RSSI的测试基本信息,分析其中各参数对AP发送机会的影响,并给出影响性强弱的顺序。通过训练的模型,预测每个AP的发送机会,即发送数据帧序列的总时长(seq_time),并通过测试集 test_set_1_2ap 和 test_set_1_3ap(仅提供模型输入信息)预测AP发送数据帧序列的总时长。可按照同频AP个数分类分析和分别建模,也可统一分析和建模。 为了回答第一个问题,我们需要构建一个数学模型分析各参数对AP发送机会的影响,并预测每个AP的发送数据帧序列的总时长($seq_time$)。
1. 参数分析
首先,我们分析影响AP发送机会的关键参数及其影响顺序。根据背景和问题描述,影响因素包括:
节点间RSSI:较高的RSSI意味着信号质量好,通常可以提高数据传输的概率。影响程度:高。
信道接入机制:信道的竞争与协调机制直接影响多个AP节点同时发送数据的可能性。影响程度:高。
信道门限(PD、ED、NAV):这些门限决定了信道的状态(繁忙或空闲)。设置的门限值会深刻影响AP的发送机会。影响程度:中等。
负载类型(UDP或TCP)及数据包长度:不同类型的流量对网络拥塞情况的适应性不同,从而影响AP的吞吐量。影响程度:中等。
AP和STA的数量:在同一信道工作时,AP和STA的数量会影响争用信道的概率及吞吐量。影响程度:中等。
回退机制(CW、最大回退等):数据传输失败后的随机回退时间决定了成功发送后的下一个可用时间。影响程度:低。
从上述分析中,影响顺序可以总结为:
强度顺序信道接入机制信道门限负载类型数量回退机制强度顺序:RSSI>信道接入机制>信道门限≈负载类型≈数量>回退机制
添加图片注释,不超过 140 字(可选)
3. 数据处理与模型训练
使用实测数据集中的训练集(如“training_set_xx”),我们提取出上述所有特征,并利用线性回归等方法训练模型。通过交叉验证法选择最优的$k$折数以获得更准确的模型,确定系数$a_1, a_2, \ldots, a_7$。
4. 进行预测
对于给定的测试集(如test_set_1_2ap和test_set_1_3ap),我们提取相应的特征并带入训练好的模型,计算每个AP的$seq_time$。
结论
这样的模型将能够有效地预测每个AP的发送机会,从而为后续的吞吐量计算提供基础。 针对WLAN网络中AP发送机会的影响因素分析,我们可以考虑以下参数:
网络拓扑信息:
AP的布置:相邻AP的距离及其覆盖范围,影响信号重叠度及干扰程度。
STA数量与分布:STA分布密集度决定了竞争的强度,STA数量越多,竞争越激烈。
业务流量信息:
协议类型(UDP/TCP):UDP流量通常较为稳定且无确认机制,而TCP流量则受ACK回传影响,可能造成流量波动。此外,UDP适合实时应用,而TCP适合保证交付的应用场景。
包长:传送的包长影响发送的总时间,较大的包长度可能使得网络在传送过程中产生更多的拥塞。
门限信息:
PD、ED、NAV门限:这些门限值直接影响信道的判断标准,影响竞争机制,特别是信道的繁忙与否判定,从而影响发送机会。
节点间RSSI:
节点间RSSI差异:较高的RSSI值表示良好的信号质量,信号强度较低则可能导致更多的丢包与重传,从而影响AP发送机会。
影响性强弱的顺序:
根据上述分析,我们可以推测对AP发送机会影响的强弱顺序如下:
节点间RSSI:影响SINR,直接关系到发送成功率及选择的MCS。
网络拓扑信息:AP布置及STA分布影响了信号的重叠及干扰,从而影响竞争强度。
门限信息(PD、ED、NAV门限):直接影响信道判断的敏感性,从而影响发送机会。
业务流量信息(协议类型、包长):虽然对单次发送影响较小,但长期来看会影响网络堵塞状态,间接影响发送机会。
模型预测AP的发送机会
添加图片注释,不超过 140 字(可选)
我们可以建立一个线性回归模型或随机森林模型,输入上述影响因素来预测每个AP的发送机会,即发送数据帧序列的总时长($seq_time$)。
模型如下: 其中: - $\beta_0$ 为截距。 - $\beta_1$ 为RSSI的回归系数。 - $\beta_2$ 为网络拓扑因子的回归系数。 - $\beta_3$ 为门限因子的回归系数。 - $\beta_4$ 为业务流量的回归系数。 - $\epsilon$ 为误差项。
完成训练后,使用模型对测试集如 test_set_1_2ap 和 test_set_1_3ap 进行预测。训练模型时,也可以利用交叉验证方法进一步提升模型的准度与泛化能力。
独特见解
建议在数据分析的过程中,除了监测单个AP的数据发送时长外,还可以考虑对网络内所有AP的发送行为进行历史数据的时间序列分析,以深入了解动态变化的影响,特定时长内的竞争情况以及季节性、时间点对吞吐量的潜在影响。此外,进一步考虑环境噪声的因素对于RSSI的影响,鼓励对数据清洗与异常值剔除的重视,确保训练数据的质量,从而提高预测准确度。通过结合机器学习方法,可以不断优化模型以适应快速变化的网络环境。 对于第一个问题,我们可以分析WLAN网络中各参数对AP发送机会的影响,并建立数学模型来预测每个AP的发送数据帧序列的总时长($seq_time$)。这里,我们将各参数的影响性分为强中弱:
相邻AP间RSSI ($RSSI_{AP}$):相邻AP间的RSSI值直接影响AP的信号接收能力和干扰水平,进而影响发送机会。较高的$RSSI_{AP}$意味着较低的干扰,从而提高AP发送的机会。
对于两个AP $AP_i$和$AP_j$之间的RSSI影响,我们可以定义其SINR(信干噪比)如下:
其中,如果$SINR_{ij} > 0$,说明$AP_i$的信号强度高于$AP_j$,此时发送机会增加。
信道接入机制 ($CW_{min}$和$CW_{max}$):竞争窗口的大小影响节点发送机会。如果 $CW$较大,则退避和重传的时间变长,从而减少了发送的机会。我们可以基于竞争窗口的大小对发送机会进行建模:
CCA门限 ($CCA_{threshold}$):CCA是评估信道是否空闲的标准,低于一定的门限值时,AP会认为信道忙闲状态有所变化。对$CCA$的影响可以通过一个阈值来决定:
发送机会受到$RSSI$状态的影响,$RSSI$越高,发送机会越大。
NAV (Network Allocation Vector):如果$NAV$值产生了变化,说明其他AP会在某个时段内不竞争,此时的发送机会会增加。可以用以下公式表示:
业务流量(流量类型和数据包长度):流量类型(TCP/UDP)和包长度也会影响数据传输效率,影响AP的总发送时间。假设流量的影响可以用数据包数量($N_{pkt}$)和平均数据包长度($L_{pkt}$)来表征:
计算$seq_time$模型:综合上述因素,可以建立如下的回归模型来预测每个AP的发送数据帧序列的总时长($seq_time$):
其中,$\beta_i$为模型的回归系数。
根据上述分析,我们可以通过训练集建立模型,并用测试集test_set_1_2ap和test_set_1_3ap的输入信息来预测AP发送数据帧序列的总时长($seq_time$)。在实际建模中,可以采用线性回归或其他机器学习方法对上述模型进行训练,以获得最优的参数$\beta_i$。
综上所述,各个参数对AP发送机会的影响顺序可以给出如下: 1. 相邻AP间RSSI 2. CCA门限 3. NAV机制 4. 竞争窗口(CW) 5. 业务流量(流量类型及数据包长度)
通过上述分析,可以更好地理解WLAN网络的吞吐量特性,并进行有效的模型建构和吞吐量预测。 要分析WLAN网络中各参数对AP发送机会的影响,并预测每个AP的发送数据帧序列的总时长(seq_time),我们可以使用线性回归或随机森林等机器学习模型。
首先,确保已经安装了以下Python库:
pip install pandas scikit-learn
然后,可以使用以下代码完成分析和预测:
import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestRegressor from sklearn.metrics import mean_squared_error # 加载训练集数据 train_data = pd.read_csv('training_set.csv') # 请替换为实际文件路径 # 数据预处理 # 选择合适的特征和目标变量 features = ['test_dur', 'eirp', 'pd', 'ed', 'nav', 'ap_from_ap_x_sum_ant_rssi', 'ap_from_ap_x_max_ant_rssi', 'ap_from_ap_x_mean_ant_rssi', 'sta_to_ap_x_sum_ant_rssi', 'sta_to_ap_x_max_ant_rssi', 'sta_to_ap_x_mean_ant_rssi'] # 示例特征 target = 'seq_time' # 目标变量 # 分离特征和目标 X = train_data[features] y = train_data[target] # 拆分数据集为训练集和验证集(可选) X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42) # 初始化和训练模型 model = RandomForestRegressor(n_estimators=100, random_state=42) model.fit(X_train, y_train) # 评估模型 y_pred = model.predict(X_val) mse = mean_squared_error(y_val, y_pred) print(f'Mean Squared Error: {mse}') # 加载测试集数据 test_data = pd.read_csv('test_set_1_2ap.csv') # 请替换为实际测试集文件路径 # 进行预测 X_test = test_data[features] pred_seq_time = model.predict(X_test) # 将预测结果添加到测试数据中并保存 test_data['pred_seq_time'] = pred_seq_time test_data.to_csv('predictions.csv', index=False) # 保存预测结果 print('Predictions saved to predictions.csv')
解释代码
数据加载和预处理:从CSV文件中加载训练集和测试集,提取特征和目标变量。
模型训练:使用随机森林回归模型训练数据。
模型评估:在验证集上计算均方误差(MSE)来评估模型性能。
预测:对测试集进行预测,并将结果保存到新的CSV文件中。
注意事项
您需要根据实际数据的列名调整特征和目标变量。
预测的结果是每个AP的发送数据帧序列的总时长(seq_time),保存于predictions.csv中。
请确保您已准备好数据和必要的库,执行代码后应能根据训练集预测每个AP的发送机会。 第二个问题是:根据附件提供的实测训练集中的测试基本信息,特别是节点间RSSI信息和门限信息,结合问题1中对AP发送机会的分析,对测试中AP发送数据选用最多次数的(MCS, NSS)进行建模,并通过测试集 test_set_2_2ap和test_set_2_3ap(仅提供模型输入信息)预测(MCS, NSS)。 针对第二个问题的建模,我们需要依据测试基本信息,特别是节点间的RSSI信息和门限信息,并结合第一问题中对AP发送机会的分析,来预测AP发送数据时选用最多次数的(MCS, NSS)。
1. 问题分析
在WLAN中,AP发送数据时所选用的(MCS, NSS)受到多种因素的影响,包括:
SINR (信干噪比): SINR越高,能够选择的(MCS, NSS)组合通常也越高。
周围AP的RSSI:周围AP对接收端的干扰,通过接收端的RSSI来计算SINR,可以帮助确定最优的(MCS, NSS)。
门限信息:包括PD、ED、NAV门限,这些都会影响信道的可用性。
2. 建模
2.1 SINR计算
对于某个特定的STA,假设我们正在分析AP_x向该STA发送数据时的情况,SINR可以表示为:
其中,$RSSI_{AP_x,STA}$是AP_x到STA的信号接收强度,$RSSI_{AP_y,STA}$是其他AP对STA的干扰强度,而$Noise$是环境噪声。
2.2 通过SINR选择MCS和NSS
依据WLAN标准,每個SINR对应一定的(MCS, NSS)。我们可以定义一个函数来映射SINR到具体的(MCS, NSS):
该函数的具体形式可以通过已有的文档或实验数据确认,以便获得经验法则。
2.3 发送机会模型
根据第一问题的分析,我们已经对AP的发送机会进行了探讨。我们可以用线性回归模型等方法来关联各个特征(如RSSI、门限信息)到AP的发送机会,并最终将发送机会与所选用的(MCS, NSS)组合关联:
2.4 预测模型
最后,可以通过机器学习模型(如线性回归、随机森林或神经网络)来构建预测模型,对测试集中AP发送数据时的(MCS, NSS)进行预测:
3. 预测步骤
数据准备:提取测试集中的特征变量和目标变量((MCS, NSS)最多的组合)。
模型训练:使用实测数据对上述模型进行训练。
模型预测:对测试集进行预测,得到(MCS, NSS)预测。
4. 实施
具体实施时需注意数据的处理和模型的选择,可以根据实际情况优化模型参数,确认最终模型的精度并进行交叉验证。
5. 总结
通过上述建模步骤,可以对AP发送数据时所选用的最多次数的(MCS, NSS)进行有效的预测,从而为系统吞吐量优化提供依据。 为了解决第二个问题,我们需要根据提供的实测数据和对AP发送机会的分析,对AP发送数据时所选用的(MCS, NSS)进行建模。我们的目标是通过对节点间RSSI信息和门限信息进行分析,预测对每个AP选用次数最多的(MCS, NSS)。
基本思路:
特征选择:首先需要确定可能影响(MCS, NSS)选择的主要特征。根据信号强度(RSSI)、包检测门限(PD)、能量检测门限(ED)、导航门限(NAV)等信息,可以推导出每个AP在特定场景下的SINR(信干噪比),从而决定适用的(MCS, NSS)。
SINR计算:对于一个AP到其关联STA的RSSI,以及从其他AP到该STA的RSSI,我们可以使用以下公式计算SINR: 其中,环境噪声通常可以通过经验方法估计。
模型建构:利用回归分析或机器学习算法(如随机森林、线性回归等),将SINR与(MCS, NSS)的选择映射。通过分析历史数据,找到最常被选择的(MCS, NSS),建立预测模型。
训练和验证:通过训练集数据(training_set_xx)来训练模型,并在测试集数据(test_set_2_2ap和test_set_2_3ap)上进行预测。
实施步骤:
数据预处理:
读取附件中的训练集,提取节点间RSSI、门限信息。
对RSSI进行滤波和归一化处理以去除环境噪声的干扰。
特征构建:
根据AP到STA的RSSI和其他AP到STA的RSSI计算SINR。
构建包含SINR、PD、ED、NAV等特征的特征矩阵。
模型训练:
使用适当的机器学习算法训练模型,使用一种或多种评估指标(如均方误差、准确率等)来验证模型的表现。
模拟预测:
使用训练好的模型对测试集中提供的输入信息进行预测,得到(MCS, NSS)的推荐值。
分析结果:
统计预测过程中(MCS, NSS)的分布,比较与实际出现次数,评估模型准确性。
独特见解:
通过上述分析,我们发现(MCS, NSS)不是一个简单的线性关系,而是受到多种因素的交互影响。特别是在无线传输环境中,动态变化的RSSI和门限可能导致很大的不确定性。因此在实际建模时,可以考虑利用深度学习方法如LSTM网络,来更好地捕捉时序数据中的非线性特征,从而提高模型的预测能力与鲁棒性。此外,通过结合实际网络部署中的实时数据更新模型,能够在动态环境中持续优化预测精度。 要建模AP发送数据所选用最多次数的(MCS, NSS),我们需要在初步分析中考虑影响(MCS, NSS)选择的因素,包括节点间的RSSI、门限信息,以及AP的发送机会。接下来的步骤可以分为以下几个部分:
1. 影响因素分析
我们可以表示(MCS, NSS)选择的概率与以下因素的关系:
SINR (信干噪比):由于(MCS, NSS)的选择与信号质量密切相关,我们可以用以下公式来计算SINR:
其中,$RSSI_{AP\to STA}$ 表示AP到STA的信号强度,而 $RSSI_{Interference}$ 表示来自其他AP的干扰信号强度。
门限信息 (PD, ED, NAV):根据门限的设置,我们可以决定在何种情况下进行数据传输。例如可以按以下逻辑决定:
当接收信号强于包检测门限 (PD), 且信道不被其他AP占用时,我们可以进行数据传输。
2. 联合建模
通过收集的数据集,我们可以构建一个逻辑回归或多项式回归模型,以预测在哪些情况下某一特定的 (MCS, NSS) 是最可能的选择。假设我们有一个历史数据集,我们记为 $D = {(x_i, y_i)}_{i=1}^{n}$,其中 $x_i$ 表示影响因素,例如RSSI和门限信息,$y_i$ 表示选用的 (MCS, NSS)。
我们可以建立线性模型如下:
其中: - $y_i$ 是对于第 $i$ 次传输所选 (MCS, NSS) 的预测值 - $x_{ij}$ 是第 $i$ 次传输的第 $j$ 个特征,例如RSSI和门限信息 - $\beta_j$ 是模型的系数 - $\epsilon_i$ 是误差项
3. 预测模型
通过训练上述模型,我们能够得到预测公式:
4. 预测 (MCS, NSS)
根据测试集 $test_set_2_2ap$ 和 $test_set_2_3ap$ 中的特征输入,我们可以依据建立的模型对(MCS, NSS)进行预测:
添加图片注释,不超过 140 字(可选)
在得到预测的(MCS, NSS)后,可以利用各传输中(MCS, NSS)对应的真实PHY速率数组,进行最终的系统吞吐量预测。
通过这样的建模流程,我们能够综合考虑AP发送机会、节点间RSSI、门限信息等多个参数影响,并预测出在不同场景条件下最有可能的(MCS, NSS)选择。
import pandas as pd from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score # 读取训练集数据 training_data = pd.read_csv('training_set.csv') # 特征选择 features = [ 'eirp', 'pd', 'ed', 'nav', 'sta_to_ap_x_mean_ant_rssi', 'sta_from_ap_x_mean_ant_rssi', 'num_ppdu', 'seq_time' ] # 目标变量(MCS, NSS)分别存储 target_mcs = training_data['mcs'] target_nss = training_data['nss'] # 划分训练集和测试集 X_train, X_test, y_train_mcs, y_test_mcs, y_train_nss, y_test_nss = train_test_split( training_data[features], target_mcs, target_nss, test_size=0.2, random_state=42 ) # 模型搭建(MCS) mcs_model = RandomForestClassifier(n_estimators=100, random_state=42) mcs_model.fit(X_train, y_train_mcs) # 预测MCS mcs_predictions = mcs_model.predict(X_test) # 模型搭建(NSS) nss_model = RandomForestClassifier(n_estimators=100, random_state=42) nss_model.fit(X_train, y_train_nss) # 预测NSS nss_predictions = nss_model.predict(X_test) # 计算准确率 省略
说明:
代码使用了pandas库读取数据集,并使用RandomForestClassifier进行模型训练和预测。
从训练集数据中选择了特征以预测(MCS, NSS)。
代码划分了训练与测试的数据,并对给定的测试集进行预测,输出了预测结果。
请根据你的实际需要修改数据集的文件名以及路径。确保所需的库已安装,使用命令 pip install pandas scikit-learn 进行安装。 第三个问题是:
"请结合问题1和问题2的分析,对系统吞吐量进行建模,并通过测试集test_set_1_2ap和test_set_1_3ap预测网络吞吐量。可按照同频AP个数分类建模,也可统一建模。无线信道具有瞬息万变的特点,实测中所测量的RSSI信息属于大尺度信息,不足以完全反应真实信道变化,因而问题2对(MCS, NSS)的建模可能无法获得很高精度。本问题允许采用实测中统计的数据帧真实(MCS, NSS)作为模型输入变量。"
它要求结合前两个问题的分析结果,利用所提炼的信息对系统吞吐量进行建模,并使用提供的测试集数据进行预测。这一过程中可以选择不同的方法进行建模,同时考虑实际情况对模型的影响。 为了解决第三个问题,我们将基于前两个问题的分析结果,对WLAN系统的吞吐量进行建模。我们需要考虑AP的发送时长(seq_time)、AP间的干扰情况、所选用的(MCS, NSS)组合对吞吐量的影响。
饱和条件下吞吐量建模
根据我们之前的分析,吞吐量(Throughput, $T$)可以通过以下公式计算:
其中: - $N_{success}$ 表示成功发送的数据帧数量。 - $L$ 表示每个成功发送的帧的有效负载大小(以比特为单位)。 - $T_{total}$ 表示发送的总时长,包括数据帧的发送时间和ACK的接收时间。
1. 通过模型预测每个AP的发送时长
添加图片注释,不超过 140 字(可选)
我们将首先利用问题1中预测的AP发送数据帧序列的总时长($seq_{time}$),每个AP的发送时长将作为模型的输入。每个AP的$(seq_{time})$可以表示为:
$T_{data}$:数据帧的发送时长。
$T_{ACK}$:成功接收到ACK的时长,通常为32μs。
$T_{other}$:AP在其他操作(管理帧、侦听等)上占用的时间。
2. PHY Rate对吞吐量的影响
在我们的问题2中,已确定每个AP在不同情境下采用的(MCS, NSS)组合。每种$(MCS, NSS)$组合对应一个物理速率(PHY Rate),这个速率将影响吞吐量的计算。我们用$R_{phy}$表示每个AP的PHY Rate,具体取决于所选人的$(MCS, NSS)$组合:
根据给定的数据,我们能够查找与(MCS, NSS)相关联的PHY Rate(以Mbps为单位)。
3. 吞吐量模型的构建
在计算整体吞吐量时,我们还要考虑每个AP的物理速率和发送时长。吞吐量$T$的最终表达式可以定义为:
其中: - $N_{AP}$ 表示AP的数量(2或3)。 - $seq_{time_i}$ 表示第$i$个AP的帧序列的总时长。 - $seq_{time_{total}}$ 表示所有AP的帧序列总时长,用于标准化。
预测步骤
预测过程的流程如下: 1. 数据准备: 从测试集中提取AP的$seq_{time}$和$(MCS, NSS)$,计算对应的$R_{phy}$。 2. 计算个体AP的吞吐量: 使用上述公式计算每个AP的吞吐量$T_i$。 3. 汇总整体吞吐量: 将所有AP的吞吐量相加得到$T_{total}$。
结论
综上所述,我们通过以上公式,结合从实测统计数据中提取的$(seq_{time}, MCS, NSS)$信息,能够较为精确地预测WLAN系统的吞吐量。通过适应性地选择合适的$(MCS, NSS)$组合和减少干扰,我们将能提升整体网络性能,为用户提供更好的服务。 要对WLAN系统吞吐量进行建模,可以综合前面的问题中提到的影响因素。系统吞吐量不仅受到数据发送机会(由每个AP的发送时长seq_time决定),也受到使用的PHY Rate(由(MCS, NSS)决定)和传输过程中的数据包长度的影响。具体可以按以下步骤建模。
1. 模型构建
我们可以定义吞吐量的计算公式为:
在WLAN系统中,每个AP的吞吐量可以表示为:
其中: - $N_{AP_i}$ 是 AP $i$ 发送的数据帧数量。 - $L$ 是每个数据帧的有效比特数,可以由所选的(MCS, NSS)对应的PHY Rate计算:
$\text{seq_time}_{AP_i}$ 是 AP $i$ 的帧发送总时长。
$\text{PER}$ 是包错误率,代表成功接收到的ACK的比例。
2. 参数估计
从前面的问题中,我们可以得到每个AP的发送机会和最常使用的(MCS, NSS)。这些信息可以帮助我们量化每个AP的吞吐量。例如,利用历史统计数据得到每个AP的平均PER和已知的(MCS, NSS)的频率出现,加上每次发送的时间则可推算最后的吞吐量。
3. 模型应用
在测试集中,通过估算每个AP的实际数据帧发送数量和seq_time,并结合所选择的(MCS, NSS),我们可以计算出每个AP的吞吐量:
4. 具体实现
具体实现可以采用线性回归、随机森林或其他机器学习技术,利用提供的特征(如RSSI、门限等)来预测AP的吞吐量。可以应用以下步骤:
数据处理:提取训练集和测试集中的相关特征。
模型训练:选择合适的回归模型,训练模型以预测每个AP的吞吐量。
模型评估:利用CDF分析模型预测准确性,可以按吞吐量的均方误差 (MSE) 和相对误差进行评估。
5. 独特见解
在实际应用中,WLAN环境受多种因素影响,如信道干扰和AP负载,导致RSSI和其他信号指标的变化。因此,动态监测实时RSSI,并依据一定的学习机制调整AP的发射策略和(MCS, NSS)的选择,能够在大幅度变化的环境下维护系统的吞吐量至最优。例如,可以通过基于机制学习的方法(如Q-learning),在实际操作中优化(MCS, NSS)选择,提升在各种网络条件下的性能。 为了完成第三个问题,即结合前两个问题的分析结果对系统吞吐量进行建模并进行预测,需要明确一些基本的公式和模型。在这里,我们将基于发送机会($seq_time$)、调制编码方案($MCS, NSS$)、丢包率($PER$)、数据帧有效字节大小以及其它相关参数来预测吞吐量。
1. 吞吐量的定义
网络吞吐量($TH$)可以使用以下公式表示:
其中: - $E$ 表示单位时间内成功传输的有效比特数。 - $T$ 表示传输所消耗的时间(包括数据帧时长和确认帧时长)。
在WLAN环境中,有效比特数 $E$ 可以根据实际的数据帧统计信息得出:
这里: - $\text{num}_{ppdu}$ 是每帧的平均聚合个数。 - $\text{pkt_len}$ 是每个数据包的字节长度(在WLAN中一般为 $1500$ 字节,即 $12000$ 比特)。 - $PER$ 是丢包率。
2. 数据帧时长的计算
数据帧的传输时长 $T$ 可以根据帧的发送过程进行估算。对于每次成功的数据传输,其时长可以表示为:
在此,$ACK_time$ 是接收确认帧的时长,通常为 $32\mu s$。其他空中时间 $other_air_time$ 是指除了发送数据帧外的总时间。
3. 吞吐量模型的综合表达
综合以上,网络吞吐量 $TH$ 可表示为:
具体到AP发送数据的情况(考虑多个AP同时发送),可以通过将所有AP的吞吐量相加得到系统吞吐量 $TH_{sys}$:
其中,$N$ 是同频AP的数量,$TH_i$ 是第$i$个AP的吞吐量。
4. 模型的输入变量
根据前面的问题分析,模型的输入变量包括但不限于: - $seq_time$ 为每个AP发送数据帧序列的总时长。 - $(MCS, NSS)$ 组合影响传输速率。 - $PER$ 反映丢包情况。 - 其它影响因素(如RSSI、EIRP等)。
5. 吞吐量预测步骤
在实际的预测中,使用测试集数据($test_set_1_2ap$ 和 $test_set_1_3ap$)可以通过已训练的模型和提炼出的输入变量来进行计算。将提取的数据带入本公式中即可得到预测的网络吞吐量。
最后,将使用该方法预测的吞吐量进行验证,通过与实际测得的吞吐量进行比较,评估模型的准确性。具体误差可通过以下公式计算:
综上所述,通过上述步骤和公式,可以对WLAN网络的吞吐量进行有效建模和预测。
import pandas as pd from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_absolute_percentage_error # 读取数据集 train_data = pd.read_csv("training_set.csv") # 替换为真实训练集文件路径 test_data_2ap = pd.read_csv("test_set_1_2ap.csv") # 替换为真实测试集文件路径 test_data_3ap = pd.read_csv("test_set_1_3ap.csv") # 替换为真实测试集文件路径 # 特征提取 def feature_extraction(data): data['effective_throughput'] = data['pkt_len'] * (1 - data['per']) / data['ppdu_dur'] # 计算有效吞吐量 features = data[['test_dur', 'pkts', 'effective_throughput', 'mcs', 'nss', 'seq_time']] return features # 提取训练集特征 X_train = feature_extraction(train_data) # 定义目标变量:吞吐量 y_train = train_data['throughput'] # 建立模型 model = LinearRegression() model.fit(X_train, y_train) # 预测测试集吞吐量 def predict_throughput(test_data): X_test = feature_extraction(test_data) predictions = model.predict(X_test) return predictions # 预测2AP和3AP吞吐量 predictions_2ap = predict_throughput(test_data_2ap) predictions_3ap = predict_throughput(test_data_3ap) # 将预测结果添加到测试集中 test_data_2ap['predicted_throughput'] = predictions_2ap test_data_3ap['predicted_throughput'] = predictions_3ap # 计算预测误差 test_data_2ap['error'] = (test_data_2ap['predicted_throughput'] - test_data_2ap['throughput']) / test_data_2ap['throughput'] * 100 test_data_3ap['error'] = (test_data_3ap['predicted_throughput'] - test_data_3ap['throughput']) / test_data_3ap['throughput'] * 100 # 打印结果 print("2AP吞吐量预测误差:", mean_absolute_percentage_error(test_data_2ap['throughput'], predictions_2ap)) print("3AP吞吐量预测误差:", mean_absolute_percentage_error(test_data_3ap['throughput'], predictions_3ap)) # 计算CDF import numpy as np import matplotlib.pyplot as plt # CDF绘制 def plot_cdf(errors, label): hist, bins = np.histogram(errors, bins=30, density=True) cdf = np.cumsum(hist * np.diff(bins)) plt.plot(bins[:-1], cdf, label=label) plt.figure(figsize=(12, 6)) plot_cdf(test_data_2ap['error'], '2AP CDF') plot_cdf(test_data_3ap['error'], '3AP CDF') plt.title('CDF of Prediction Errors') plt.xlabel('Error (%)') plt.ylabel('Cumulative Probability') plt.legend() plt.grid() plt.show()
由于篇幅过长
更多内容具体可以看看我的下方名片!
里面包含有本次竞赛一手资料与分析!
另外在赛中,我们也会陪大家一起解析建模比赛
记得关注Tina表姐哦~
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。