您的点赞收藏是我继续更新的最大动力!
一定要点击如下的卡片,那是获取资料的入口!
点击链接加入【2024华为杯研赛资料汇总】:https://qm.qq.com/q/hMgWngXvcQhttps://qm.qq.com/q/hMgWngXvcQ你是否在寻找数学建模比赛的突破点?数学建模进阶思路!
作为经验丰富的美赛O奖、国赛国一的数学建模团队,我们将为你带来本次数学建模竞赛的全面解析。这个解决方案包不仅包括完整的代码实现,还有详尽的建模过程和解析,帮助你全面理解并掌握如何解决类似问题。
【2024华为杯研赛B题】2024数模华为杯研赛全国研究生数学建模国赛建模过程+完整代码论文全解全析来了
2024华为杯研赛B题第一问是要求根据附件WLAN网络实测训练集中所提供的网络拓扑、业务流量、门限、节点间RSSI的测试基本信息,分析这些参数对AP发送机会的影响,并给出影响性强弱的顺序。接着,需要通过训练的模型预测每个AP的发送机会,即发送数据帧序列的总时长(seq_time),并通过测试集(test_set_1_2ap和test_set_1_3ap)预测AP发送数据帧序列的总时长。可以按照同频AP个数分类分析和分别建模,也可统一分析和建模。 为了解决第一个问题,我们需要首先分析参数如何影响WLAN中AP的发送机会(即发送数据帧序列的总时长),并对其影响进行排序。下面是该问题的分析和模型建立的过程:
3. 影响程度分析
为了排序各个参数对AP发送机会的影响,可以基于以上公式的敏感度分析。假设有很多测试数据,对每个参数进行扰动,观察对$seq_time$的影响。整个分析的步骤如下:
- 通过训练集数据,计算不同参数组合对$P(success)$的影响权重。
- 通过模型的输出,统计不同因素对$seq_time$的贡献度。
- 将贡献度进行排序,得到影响性强弱的顺序。
4. 总结
结合上述分析和模型,我们可以预测对于每个AP的发送机会,并通过test_set_1_2ap和test_set_1_3ap进行具体的预测。同时,可以根据模型得出的权重或贡献程度对影响参数进行排序,从而识别出最显著的影响因素。
接下来,可以应用实际数据,利用回归、机器学习等手段进行训练,以约束和校正$f$的形式,从而得到具体的发送时长预测值。通过对测试集的进一步分析,我们可以优化最终的模型预测效果。
第一部分:分析参数对AP发送机会的影响
要分析影响AP发送机会(即发送数据帧序列的总时长)的参数,我们需要重点关注以下因素:
- RSSI(接收信号强度指示):
- RSSI是决定信道竞争和信号质量的重要因素。较高的RSSI值通常意味着低的干扰和好的接收条件,因此能够提高AP发送的机会。
- 公式表示:对于某个AP,其发送机会可以用与STA之间的RSSI关系来量化。未能达到CCA门限的信道是无法成功发送数据的。
- 信道接入机制(CCA门限):
- CCA门限决定了节点是否能判断信道为空闲,影响到AP是否开始发送。较低的CCA门限可以增加节点判断信道为空闲的概率,从而提高发送机会。
- 公式表示:若$RSSI \geq CCA_Threshold$则AP可以发送。
- NAV(网络分配矢量)机制:
- NAV机制用于通知节点在何时静默以避免冲突。若NAV时间过长,可能会降低其他AP的发送机会。
- 倘若一个AP的NAV时间较长,其它AP则需在此期间内保持静默,从而影响总体发送能力。
- 竞争窗口(CW):
- CW大小影响节点在信道繁忙时的随机回退时间。较大的CW值会导致节点在忙信道上等待的时间更长,从而减小了发送机会。
- 增大CW时,节点可借助公式$Backoff\ Time \sim \text{Uniform}(0, CW-1) \times slotTime$决定回退。
- 业务流量(Traffic Type):
- 不同类型的流量(如UDP和TCP)对AP发送策略也有影响。UDP流量是无连接的且不保证送达,可能采用更频繁的发送;而TCP流量则依赖于ACK确认,可能会因为丢包而调整发送频率。
- 在相同条件下,UDP可能比TCP提供更高的发送机会。
强弱顺序分析
基于上述因素可以进行影响强弱的排序: 1. RSSI - 直接影响成功传输的概率,结果显著。 2. CCA门限 - 在信道利用上具有至关重要的作用,影响判断信道的能力。 3. 竞争窗口 - 影响节点的回退和重传策略,能显著改变发送机会。 4. NAV机制 - 影响相邻AP的发送机会,重要但间接。 5. 业务流量 - 相对而言最弱,但在特定场景下(如高流量环境)会起到关键作用。
预测AP发送机会
鉴于训练集中的基础数据,我们可以使用线性回归或其他机器学习模型(如随机森林、XGBoost等)来建模,通过结合上述影响因素推断AP的发送机会($seq_time$)。
预测模型或公式形式可以表达为:
seq_timeAP=f(RSSI,CCA_Threshold,CW,NAV,Traffic Type) seq\_time_{AP} = f(RSSI, CCA \_ Threshold, CW, NAV, Traffic\ Type)
最终,利用训练集中的数据,我们可以通过模型对测试集test_set_1_2ap和test_set_1_3ap进行预测,得到相应的AP发送数据帧序列的总时长。
独特见解
在进行参数分析时,值得注意的是WLAN系统是一个动态系统,受多个因素的交互影响。尤其是当多AP环境下,相邻AP之间的干扰和能量管理将导致反馈机制的复杂性,影响发送策略的灵活性。因此,模拟不同场景下的AP行为,如密干扰模式和稀疏干扰模式下的比赛,将可能为设计更有效的信道管理方案提供更真实的参考。在实际应用中,通过动态调整参数(如整合RSSI、SINR等实时监测数据),在高密度场景下优化AP分配资源,将是未来的一个重要研究方向。 在分析WLAN网络中,影响AP(接入点)发送机会的因素时,我们需要从多方面考虑,包括网络拓扑、业务流量、门限、节点间RSSI(接收信号强度指示)等基本信息。接下来,我们将详细分析这些因素,并给出影响性强弱的顺序。
1. 影响AP发送机会的因素分析
1.1 网络拓扑
- AP数量和位置:
- 在网络中,AP的数量和部署位置影响信号的覆盖范围和相互之间的干扰程度。相邻AP的密度会影响各AP的发送机会。
- AP数量越多,可能导致相互之间的干扰增大,尤其是在同频情况下,会引起碰撞,降低各自的发送机会。
1.2 RSSI值
- 节点间RSSI:
- RSSI值反映了接收信号的强度,影响了SINR(信号与干扰噪声比)的计算。
- 高频的RSSI值意味着较高的SINR,使得AP能够选择更高的MCS(调制和编码方案),从而增加发送机会。
- 如果RSSI处于竞争范围的门限值(PD和ED之间),它会影响AP之间的相互“听见”能力,从而影响发送机会。
1.3 门限设置
- PD、ED、NAV门限:
- 包检测门限(PD)和能量检测门限(ED)的设定直接影响信道的判断能力。如果RSSI高于PD,AP能够成功检测到信号,如果低于ED,则AP认为信道忙。
- NAV门限则确保AP在特定时间段内不发送数据,若AP间的RSSI小于NAV门限,AP将无法及时“听到”和接收其他AP发来的信号。
1.4 业务流量
- 流量类型和负载:
- 流量类型(UDP vs TCP)和数据包大小将影响数据包的发送时机。TCP会受到ACK确认机制的影响,此机制将在一定程度上反映出网络的传输情况和负载,对AP的发送能力有重要影响。
2. 强弱顺序
根据上述分析,我们可以确定影响AP发送机会的强弱顺序如下:
- RSSI值 - 直接反映信号强度和SINR,决定了MCS的选择和发送能力。
- AP数量和位置 - 影响AP之间的干扰和竞争。
- 门限设置(PD、ED、NAV) - 影响信道的判断及信号的可侦听性。
- 业务流量类型和负载 - 影响数据包的发送时机和频率。
3. 数学建模与预测
为了建立模型并预测每个AP的发送机会,即发送数据帧序列的总时长($seq_time$),可以考虑如下的线性模型:
seq_timei=β0+β1⋅RSSIi+β2⋅AP_count+β3⋅PD+β4⋅ED+β5⋅NAV+β6⋅Flow_type+ϵ seq\_time_i = \beta_0 + \beta_1 \cdot RSSI_{i} + \beta_2 \cdot AP\_count + \beta_3 \cdot PD + \beta_4 \cdot ED + \beta_5 \cdot NAV + \beta_6 \cdot Flow\_type + \epsilon
其中: - $seq_time_i$为第$i$个AP发送数据帧的序列总时长。 - $RSSI_{i}$为第$i$个AP与用户之间的接收信号强度。 - $AP_count$为同频AP的数量。 - $PD$, $ED$, $NAV$分别为包检测门限、能量检测门限和NAV门限。 - $Flow_type$是业务流的类型(可以用分类变量处理)。 - $\beta_0, \beta_1, ..., \beta_6$为模型参数,而$\epsilon$为误差项。
通过对训练集进行线性回归分析,可以得到各个参数的估计值,从而实现对$seq_time$的预测。
4. 预测
通过上述模型,我们可以使用训练集数据进行回归分析,并将得到的模型应用于测试集(test_set_1_2ap和test_set_1_3ap)来预测AP发送数据帧序列的总时长。
以上是关于题目中第一个问题的详细回答和相关数学模型。 为了完成这个任务,我们将在Python中进行数据分析和模型预测。首先,我们将使用Pandas库读取并处理数据,然后分析各参数对AP发送机会的影响,最后通过线性回归或其他合适的回归模型来预测每个AP的发送数据帧序列的总时长(seq_time)。
下面是一个可能的实现示例,具体实现时需要根据实际数据集的具体情况做适当调整:
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
import numpy as np
# 读取训练集数据
training_data = pd.read_csv('training_set.csv')
# 分析影响AP发送机会的参数
# 选择相关的特征和目标变量
features = ['test_dur', 'eirp', 'pd', 'ed', 'nav', 'sta_to_ap_x_max_ant_rssi', 'sta_to_ap_x_mean_ant_rssi'] # 替换或添加其他特征
target = 'seq_time'
# 分割数据集为特征和目标
X = training_data[features]
y = training_data[target]
# 数据集划分为训练集和验证集
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)
# 创建线性回归模型
model = LinearRegression()
# 训练模型
省略
rmse = np.sqrt(np.mean((y_val - y_pred) ** 2))
print(f'RMSE: {rmse}')
# 在测试集中预测AP发送数据帧序列的总时长
test_data_2ap = pd.read_csv('test_set_1_2ap.csv') # 读取测试集
test_data_3ap = pd.read_csv('test_set_1_3ap.csv')
# 对测试集进行预测
test_features_2ap = test_data_2ap[features]
test_features_3ap = test_data_3ap[features]
predictions_2ap = model.predict(test_features_2ap)
predictions_3ap = model.predict(test_features_3ap)
# 输出预测结果
test_data_2ap['predicted_seq_time'] = predictions_2ap
test_data_3ap['predicted_seq_time'] = predictions_3ap
test_data_2ap.to_csv('predictions_2ap.csv', index=False)
test_data_3ap.to_csv('predictions_3ap.csv', index=False)
第二个问题是:
根据附件提供的实测训练集中的测试基本信息,特别是节点间RSSI信息和门限信息,结合问题1中对AP发送机会的分析,对测试中AP发送数据选用最多次数的(MCS, NSS)进行建模,并通过测试集 test_set_2_2ap和test_set_2_3ap(仅提供模型输入信息)预测(MCS, NSS)。(AP在AMC算法下自适应调节发送速率,过程中可能采用多个(MCS, NSS),AMC算法收敛速度快,故其中选用最多次数的(MCS, NSS)反映了SINR水平。)
这个问题的重点在于通过分析测试集中的RSSI和门限信息,建模出AP在发送数据时最常使用的(MCS, NSS)组合,并利用这个模型对测试集中的数据进行预测。 要解决第二个问题,我们可以将建模过程分为几个步骤:数据预处理、特征选择、模型建立、模型训练和模型预测。以下是详细的数学建模步骤:
1. 数据预处理
首先,我们需要对训练集中的实测数据进行清洗和预处理。我们关注的主要字段包括节点间RSSI信息、门限信息以及AP发送的最大次数的(MCS, NSS)。
2. 特征选择
选择影响(MCS, NSS)的特征主要包括: - 接入点间的RSSI(Received Signal Strength Indication) - 包检测门限(PD) - 能量检测门限(ED) - 网络分配矢量(NAV) - SINR计算(信号干扰噪声比)
对于每一对(AP到STA)的连接,我们可以定义SINR,如下:
SINRAPi→STAj=RSSIAPi→STAj−max(RSSIAPk→STAjfor k≠i) SINR_{AP_i \to STA_j} = RSSI_{AP_i \to STA_j} - \max(RSSI_{AP_k \to STA_j} \, \text{for } k \ne i)
3. 模型建立
我们假设(MCS, NSS)的选用依赖于当前的SINR值,因此建立如下模型:
MCSAPi=f(SINRAPi→STAj,PDAPi,EDAPi,NAVAPi) MCS_{AP_i} = f(SINR_{AP_i \to STA_j}, \, PD_{AP_i}, \, ED_{AP_i}, \, NAV_{AP_i})
我们可以使用线性回归、逻辑回归、决策树或随机森林等算法建立此模型,以选择影响最大的特征。
4. 模型训练
使用训练集中的实际数据进行模型训练。目标是最大化选择的(MCS, NSS)的次数。我们可以使用多类分类算法,算法的目标函数可以定义为:
maximize∑i,jP(MCSAPi,NSSj)subject toP(MCSAPi,NSSj)∈[0,1] \text{maximize} \quad \sum_{i,j} P(MCS_{AP_i, NSS_{j}}) \quad \text{subject to} \quad P(MCS_{AP_i, NSS_{j}}) \in [0, 1]
其中,$P(MCS_{AP_i, NSS_{j}})$表示对应(MCS, NSS)组合被选择的概率。
5. 模型预测
在得到了模型后,我们用测试集中的RSSI和门限信息进行预测。根据预测结果,输出最多次数的(MCS, NSS)。
对于一个给定的测试样本,预测的过程可以表示为:
MCS^APi,NSS^APi=argmax(P(MCSAPi,NSSAPi))for i=1,…,N \hat{MCS}_{AP_i}, \hat{NSS}_{AP_i} = \text{argmax}(P(MCS_{AP_i}, NSS_{AP_i})) \quad \text{for } i = 1, \ldots, N
最终,我们计算并输出在测试集中预测的(MCS, NSS)。
6. 结果评估
对模型预测结果进行评估,并计算准确率、召回率等统计量,以便检验模型的实际应用效果。
总结
通过上述步骤,我们可以利用RSSI和门限信息对(MCS, NSS)进行建模与预测。这种方法充分利用了无线信道的特点,同时考虑了干扰对数据传输效果的影响。在实施时,可以根据具体的数据情况选择不同的回归或分类算法来提高模型的预测精度。 要建模AP在发送数据时最常使用的(MCS, NSS)组合,并对测试集进行预测,可以采用几个步骤来结构化解决方案。以下是这个问题的具体步骤和分析:
一、理论基础和数据驱动的建模
- 使用RSSI和门限信息:
- 利用节点间的RSSI值来计算信干噪比(SINR)。SINR对于选择最优的(MCS, NSS)组合至关重要。
- SINR的计算公式为: SINR=RSSIAP→STA−RSSIinterferenceNoise \text{SINR} = \frac{\text{RSSI}_{AP \to STA} - \text{RSSI}_{interference}}{\text{Noise}} 其中,$\text{RSSI}{AP \to STA}$为AP到STA的信号强度,$\text{RSSI}{interference}$为相邻AP对STA的干扰信号强度,$\text{Noise}$为底噪。
- 阈值的应用:
- 根据PD、ED、NAV的门限,建立一个规则模型,判断在特定的环境下,哪种(MCS, NSS)组合是最可能被选择的。
- 设定门限条件,例如:若$RSSI > PD$且$RSSI < ED$,则需考虑当前的RSSI是否足够强以适应某(MCS, NSS)组合。
二、数据分析和建模方法
- 特征提取:
- 从训练集中提取相关特性,如AP间的平均RSSI、门限值、发送流量类型等,以此生成特征集。
- 特征计算可以表示为: Features={mean(RSSI),pd,ed,nav,protocol,pkt\_len,…} \text{Features} = \{ \text{mean}(\text{RSSI}), \text{pd}, \text{ed}, \text{nav}, \text{protocol}, \text{pkt\_len}, \ldots \}
- 回归/分类模型:
- 采用机器学习中的分类算法(如随机森林、KNN、决策树等)来学习(MCS, NSS)和上述特征之间的关系。
- 模型训练可表示为: Model:(Features)→(MCSpred,NSSpred) \text{Model} : \text{(Features)} \rightarrow (\text{MCS}_{pred}, \text{NSS}_{pred})
- 这一步通过对特征数据进行K折交叉验证来进行调参数,选择最优的模型。
三、模型的应用与预测
- 应用训练好的模型:
- 将测试集中的特征输入到训练好的模型中,得到预测结果: (MCSpred,NSSpred)=Model(Test\_Features) (\text{MCS}_{pred}, \text{NSS}_{pred}) = \text{Model}(\text{Test\_Features})
- 同时对每个输入集中的AP记录的RSSI进行实时计算,从而输出实时变化下可能使用的(MCS, NSS)组合。
- 输出和决策:
- 根据预测的(MCS, NSS)组合,可以输出对应的PHY Rate,将其用于后续的吞吐量模型或性能分析中。
- 决策模型可表示为: Selected PHY Rate=Rate(MCSpred,NSSpred) \text{Selected PHY Rate} = \text{Rate}(\text{MCS}_{pred}, \text{NSS}_{pred})
四、见解与总结
- 此模型关键在于对环境条件(RSSI、门限)进行及时的监测和准确的特征抽取。
- 结合机器学习方法有效利用历史数据,有助于动态调整AP在无线环境中的发送策略,进一步提高系统吞吐量。
- 对于新环境、不同设备配置,模型也需适应性训练,以及时捕捉变化。
在实际应用中,模型能提高AP发送优化的灵活性,适应现代WLAN高密集度和多样性业务的需求,为用户提供流畅体验。 为了对AP在发送数据时最常使用的$(MCS, NSS)$组合进行建模,以及通过模型对测试集中的数据进行预测,我们可以依据测试基本信息中的节点间RSSI以及门限信息来构建相应的模型。
方法概述
- 输入参数定义:
- RSSI相关信息:
- $RSSI_{ap_STA}$: 从AP到STA的RSSI。
- $RSSI_{neighbor_AP}$: 从邻近AP到STA的RSSI(影响SINR)。
- 门限参数:
- $PD$: Packet Detection 门限。
- $ED$: Energy Detection 门限。
- $NAV$: Network Allocation Vector 门限。
- SINR计算: 基于上述信息,我们可以计算SINR(信干噪比),公式如下: SINR=RSSIap_STA−RSSIneighbor_AP SINR = RSSI_{ap\_STA} - RSSI_{neighbor\_AP}
- (MCS, NSS)的选择标准:
- 根据SINR的值,我们可以选择相应的$(MCS, NSS)$组合。由于WLAN通常遵循自适应调制编码(AMC)算法,$MCS$和$NSS$的选择可以基于SINR的阈值来决定。例如:
- 如果 $SINR > \text{阈值}_{MCS1}$, 选择$(MCS_1, NSS_1)$。
- 如果 $SINR \in [\text{阈值}{MCS1}, \text{阈值}{MCS2}]$, 选择$(MCS_2, NSS_2)$,依此类推。
- 构建模型: 在训练集中,我们可以使用分类算法(如逻辑回归、决策树或随机森林等)来对每个测试样本的特征进行建模,训练出预测最频繁使用的$(MCS, NSS)$组合的模型。
- 模型预测: 利用训练好的模型对测试集 $test_set_2_2ap$和$test_set_2_3ap$中的数据进行预测,选用输入特征进行模型推导,得到对应的$(MCS, NSS)$组合。
具体步骤
- 构建数据集: 收集如下特征:
- ${RSSI_{ap_STA}, RSSI_{neighbor_AP}, PD, ED, NAV, \ldots }$ 与标签$(MCS, NSS)$。
- 训练模型: 选择合适的机器学习算法,根据特征对$(MCS, NSS)$进行分类训练。设模型为$f(\cdot)$,则: (MCS,NSS)=f(RSSIap_STA,RSSIneighbor_AP,PD,ED,NAV) (MCS, NSS) = f(RSSI_{ap\_STA}, RSSI_{neighbor\_AP}, PD, ED, NAV)
- 进行预测: 对测试数据集进行预测,设测试集特征为$x_{test}$,则预测结果为: (MCS,NSS)pred=f(xtest) (MCS, NSS)_{pred} = f(x_{test})
总结
通过这种方法,我们能够利用实测的RSSI、门限信息及其关系,构建$(MCS, NSS)$的预测模型,并对测试集中的$(MCS, NSS)$进行有效预测。这将有助于进一步评估网络是否能根据实时情况进行优化,提升整体吞吐量。
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import accuracy_score
import numpy as np
# 读取训练集数据
train_data = pd.read_csv('training_set.csv') # 替换为实际文件名
# 选择特征和目标变量
features = ['eirp', 'ap_from_ap_x_max_ant_rssi', 'ap_from_ap_x_mean_ant_rssi', 'sta_to_ap_x_sum_ant_rssi',
'pd', 'ed', 'nav', 'sta_from_ap_x_max_ant_rssi'] # 根据数据集实际情况选择特征
target = ['most_used_mcs_nss'] # 假设有一列为要预测的(MCS, NSS)
# 准备特征和目标
X = train_data[features]
y = train_data[target]
# 将(MCS, NSS)分解为两个独立变量,方便模型训练
y['mcs'] = y['most_used_mcs_nss'].apply(lambda x: x[0]) # 假设格式为 [MCS, NSS]
y['nss'] = y['most_used_mcs_nss'].apply(lambda x: x[1])
# 分割数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 建立模型并训练
model_mcs = RandomForestRegressor(n_estimators=100, random_state=42)
model_nss = RandomForestRegressor(n_estimators=100, random_state=42)
model_mcs.fit(X_train, y_train['mcs'])
model_nss.fit(X_train, y_train['nss'])
# 预测
predicted_mcs = model_mcs.predict(X_test)
predicted_nss = model_nss.predict(X_test)
# 查看预测结果
predicted_results = pd.DataFrame({
'predicted_mcs': predicted_mcs,
'predicted_nss': predicted_nss
})
# 读取测试集数据
test_data_2ap = pd.read_csv('test_set_2_2ap.csv') # 替换为实际文件名
test_data_3ap = pd.read_csv('test_set_2_3ap.csv') # 替换为实际文件名
# 准备测试集特征
X_test_2ap = test_data_2ap[features]
X_test_3ap = test_data_3ap[features]
# 进行预测
predictions_2ap = (model_mcs.predict(X_test_2ap), model_nss.predict(X_test_2ap))
predictions_3ap = (model_mcs.predict(X_test_3ap), model_nss.predict(X_test_3ap))
# 将预测结果输出
predicted_2ap_df = pd.DataFrame({
'predicted_mcs': predictions_2ap[0],
'predicted_nss': predictions_2ap[1]
})
predicted_3ap_df = pd.DataFrame({
'predicted_mcs': predictions_3ap[0],
'predicted_nss': predictions_3ap[1]
})
predicted_2ap_df.to_csv('predicted_2ap_mcs_nss.csv', index=False)
predicted_3ap_df.to_csv('predicted_3ap_mcs_nss.csv', index=False)
请根据您的文件名称和路径调整代码中的文件名,并确保所有特征与目标变量的命名与数据集中的一致。 该代码使用随机森林模型来预测AP发送数据时最常用的(MCS, NSS)。 第三个问题是:
请结合问题1和问题2的分析,对系统吞吐量进行建模,并通过测试集 test_set_1_2ap 和 test_set_1_3ap 预测网络吞吐量。可按照同频AP个数分类建模,也可统一建模。无线信道具有瞬息万变的特点,实测中所测量的RSSI信息属于大尺度信息,不足以完全反应真实信道变化,因而问题2对(MCS, NSS)的建模可能无法获得很高精度。本问题允许采用实测中统计的数据帧真实(MCS, NSS)作为模型输入变量。 为了解决第三个问题并对WLAN系统吞吐量进行建模,我们可以使用以下方法进行数学建模:
1. 系统吞吐量模型
WLAN的吞吐量 ($T$) 可以表示为每个AP的吞吐量之和。假设有 $N$ 个AP,每个AP的吞吐量为 $T_{AP_i}$,则整体吞吐量可以表示为: T=∑i=1NTAPi T = \sum_{i=1}^{N} T_{AP_i}
2. 每个AP的吞吐量建模
每个AP的吞吐量 $T_{AP_i}$ 可以基于其发送数据帧的时长 ($seq_time_{AP_i}$)、数据帧的比特数以及每个数据帧的丢包率 ($PER_{AP_i}$) 来计算。我们可以用以下公式进行描述:
TAPi=(1−PERAPi)×NpduAPi×Lpduseq_timeAPi T_{AP_i} = \frac{(1 - PER_{AP_i}) \times N_{pdu_{AP_i}} \times L_{pdu}}{seq\_time_{AP_i}}
其中: - $N_{pdu_{AP_i}}$ 是 AP$i$ 发送的数据帧个数。 - $L_{pdu}$ 是数据帧的有效负载大小(以比特为单位)。
由于不同 $MCS$ 和 $NSS$ 对应的数据帧大小 ($L_{pdu}$) 是已知的,我们可以根据具体的情境选择相应的 $MCS$ 和 $NSS$。
3. 丢包率(PER)模型
丢包率 ($PER$) 可以基于无线信道条件(如 $SINR$)和AP选择的(MCS, NSS)来建模。通常,$PER$ 受到 $SINR$ 的影响,较高的 $SINR$ 会导致更低的 $PER$。可以使用以下关系进行建模: PER=f(SINR,MCS,NSS) PER = f(SINR, MCS, NSS)
一般来说,可以使用经验公式或回归分析来估算 $PER$,例如,可以通过以下公式简化建模: PER(SINR)=11+ek(SINR−θ) PER(SINR) = \frac{1}{1 + e^{k(SINR - \theta)}} 其中 $k$ 是斜率参数,$\theta$ 是一个与技术参数相关的阈值。
4. 总结吞吐量模型
最终的吞吐量模型可以总结为: T=∑i=1N(1−PERAPi)×NpduAPi×Lpduseq_timeAPi T = \sum_{i=1}^{N} \frac{(1 - PER_{AP_i}) \times N_{pdu_{AP_i}} \times L_{pdu}}{seq\_time_{AP_i}}
利用这个模型,我们可以通过输入数据集中每个AP的发送时长、丢包率和有效比特数来预测总吞吐量。在实际的应用中,还可以通过线性回归、随机森林或其他机器学习方法来对该模型进行拟合和参数优化,从而进一步提高模型的预测能力。
5. 实测数据的利用
在进行模型构建时,允许使用实际测量得到的(MCS, NSS)及其对应的传输时长和丢包信息,以提高模型的准确性和鲁棒性。这将能够为实际的网络部署提供更好的吞吐量预测,并有助于优化无线网络的性能。 为了建立WLAN系统吞吐量的模型,我们需要综合前两个问题的分析结果,并考虑实际的网络环境及数据。系统吞吐量(Throughput)可以通过以每个AP成功发送的数据量与所用时间的比值来表示。我们可以用以下公式来表示每个AP的吞吐量:
Throughputap=Dap⋅(1−PERap)Tap \text{Throughput}_{ap} = \frac{D_{ap} \cdot (1 - \text{PER}_{ap})}{T_{ap}}
其中: - $D_{ap}$ 是发送的数据总量(以比特为单位),可以用 $D_{ap} = \text{num_ppdu} \times \text{pkt_len} \times 8$ 表示(单位从字节转为比特); - $\text{PER}{ap}$ 是丢包率,反映了在AP发送数据帧时的失败概率; - $T{ap}$ 是AP发送数据帧所占用的总时间,即帧序列的总时长($\text{seq_time}$)。
一个系统的总吞吐量是所有AP吞吐量的总和:
Total Throughput=∑i=1NThroughputapi \text{Total Throughput} = \sum_{i=1}^{N}\text{Throughput}_{ap_i}
在这个公式中,$N$为系统中AP的数量。
独特的见解
- 多AP的协作效应: 在实际的WLAN环境中,多AP之间的协作和干扰是至关重要的。在模型中,我们可以通过增加参数 $RSSI_{Neighbor}$ 来建模邻近AP的干扰影响,也就是将其从接收到的数据中考虑,使得在接收信号强度 (RSSI) 的计算中包含来自不同AP的数据。这将对SINR的计算产生直接影响。
- 动态环境响应: 将模型扩展到考虑动态环境因素,例如用户行为变化(如设备连接和断开、移动等),可以通过引入时间序列模型(如LSTM)对实时数据进行预测。这样可以有效捕捉到吞吐量和通信模式中存在的动态变化,反映出真实环境中信道状态的不确定性。
- 优化选择的(MCS, NSS)组合: 通过在模型中加入自适应调制编码算法(AMC)的动态性,有助于进一步提升吞吐量预测的精度。具体来说,我们可以监测SINR变化并自动选择对应的最佳(MCS, NSS)值,以保持高数据速率并最小化丢包率。
- 模型评估与调优: 采用累积分布函数 (CDF) 评估模型的预测精度可以为我们提供更充分的信息,将目标集中在95%或99%的准确率上,这能够有效找出模型潜在的低效径路径和改进方案,从而调整模型参数以优化吞吐量的预测精度。
通过结合这些见解,对WLAN吞吐量进行建模可以更好地捕捉系统动态变化及其优化路径,从而在实际应用中提供更优质的网络服务质量。 为了对WLAN系统吞吐量进行建模,我们首先定义吞吐量的计算方法以及相关参数。这一步需要结合问题1和问题2中讨论的结果,并对系统吞吐量进行有效的预测。
吞吐量定义
WLAN系统的吞吐量(Throughput)可以定义为单位时间内成功发送的比特数(bps)。具体来说,我们可以将吞吐量表达为:
成功传输的字节数总传输时间秒Throughput=成功传输的字节数总传输时间 (秒) \text{Throughput} = \frac{\text{成功传输的字节数}}{\text{总传输时间 (秒)}} 由于在WLAN中传输的帧通常是聚合的,我们可以引入下列变量:
- $N_{ppdu}$: 成功传输的MAC服务数据单元(MPDU)个数
- $P_{PPDU}$: 每个PPDU传输的有效负载(字节数)
- $T_{ack}$: ACK帧的传输时间(秒),对于ACK帧来说通常为$32\mu s$(即$0.000032 s$)
- $T_{timeout}$: 超时时间(秒),用于测量发送失败的事件
吞吐量计算公式
综合上述定义,通过引入各个影响因素和实际测量的数据,我们得到吞吐量的近似计算公式如下:
Throughput=Nppdu⋅PPPDU⋅8Tseq+Nppdu⋅Tack+Nfail⋅Ttimeout \text{Throughput} = \frac{N_{ppdu} \cdot P_{PPDU} \cdot 8}{T_{seq} + N_{ppdu} \cdot T_{ack} + N_{fail} \cdot T_{timeout}}
其中:
- $T_{seq}$ 为数据帧序列的总时长(从发送数据到接收ACK或超时)
- $N_{fail}$ 为发送失败的MPDU数量
模型输入变量
在实际模型中,为了得到更高精度的吞吐量预测,我们将利用以下输入变量:
- 从数据集中获取的真实的(MCS, NSS),以及对应的$P_{PPDU}$,例如通过分析问题2中选用最多次数的(MCS, NSS)获知的有效负载。
- 成功帧的数目$N_{ppdu}$和失败帧的数目$N_{fail}$,这可以通过数据集中统计得到。
- 传输时间和ACK time,如果在测试集中已知,可以直接从数据中获取。
通过将这些信息结合,利用上述公式,我们可以为不同AP下的吞吐量建立模型并进行预测。
预测过程
在预测过程中,采用机器学习模型(如线性回归、随机森林等)来拟合吞吐量与相关输入变量之间的关系,具体步骤如下:
- 数据清洗与特征选择:去除缺失值与异常值。
- 构建回归模型,输入为节点间的RSSI信息、(MCS, NSS)组合、以及其他阈值信息。
- 模型训练及验证:使用训练集进行模型训练,评估模型性能。
- 吞吐量预测:应用训练好的模型到测试集$test_set_1_2ap$和$test_set_1_3ap$,得到每个AP的吞吐量预测值。
总结使用的公式为:
Predicted ThroughputAP=Nppdu⋅PPPDU⋅8Tseq+Nppdu⋅Tack+Nfail⋅Ttimeout(AP∈{AP1,AP2,…}) \text{Predicted Throughput}_{AP} = \frac{N_{ppdu} \cdot P_{PPDU} \cdot 8}{T_{seq} + N_{ppdu} \cdot T_{ack} + N_{fail} \cdot T_{timeout}} \quad (AP \in \{AP1, AP2, \ldots\})
以上公式总结了WLAN吞吐量的模型,包括如何计算出每个AP的吞吐量,以及如何利用实测数据进行预测。这一建模所需的输入变量密切结合了前两个问题的分析结果。最终,可通过模型精度评估方法(如CDF曲线)来评估预测的准确性。
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score