华为杯数学建模竞赛C题获数模之星提名奖论文和代码

基于多层感知机的最小二乘优化定位模型

化时代,基于位置的服务逐渐成为人们关注的热点,其中室内定位技术在城市场景中应用更为广泛。基于超频宽带 (Ultra­Wideband,UWB) 的技术通过发送纳秒级的极窄脉冲来传输数据,具有传输功耗低,带宽大,传输能力强等优点,为室内定位技术的研究热点。但在复杂的室内环境下,UWB的信号由于时间延时、多路径效应等因素不可避免地产生测量误差,因而信号干扰下的UWB精确定位成为了亟需解决的问题。

对于任务一,首先分析给定的数据文件格式,提取所需的测量值数据,并按要求转换为二维表格式。之后通过设定判定准则,重复值、缺失值、异常值、相似值等除冗余及无用数据,得到最终所需的数据,其中重复值为不同组之间四个锚点观测距离完全相同的数据值;缺失值为某一锚点观测距离缺失的数据;异常值为3σ 准则以外的数据;并依据设定的预测精度(1cm)建立相似度判定准则,通过对数据进行相似度度量及聚类,保留可信度高的数据,删除相似数据。

于任务二,首先将“锚点定位”问题抽象建模为最小二乘拟合问题。针对正常数据的定位问题,本文提出了基于多层感知机的最小二乘优化定位模型(LS­MLP将该最小二乘问题建模为一个优化问题,并使用神经网络进行解决。

入、输出、损失函数以及网络结构,实现了初步的位置预测。对已生成的若干预测值,使用 K­means 算法进行聚和选择,保留一致性较高的结果并进行统计学分析,进一步提高定位精度。为了衡量所提方法的定位有效性和精确性,本文使用了多维度的评价方式,在 x, y 轴上定的相对误差为3%,3%X­Y平面上定位的RMSE6.95cm在三维空间中,定位的RMSE 37.04cm较于值计法,所提方法具有不依赖于初始解、精度高、抗噪声能力强的特点。题,通过数据可视化分析,做出合理假设:任一时刻最多只有一个基站的信号受到干扰。基于所提假设,本文在LS­MLP的基础上,提出了置信度赋权的联合定位模型(CE­CL

所提CE­CL模型通过模拟不同锚点异常的情况,对异常数据进行切片采样,使用 LS­MLP 位置据。构建基于交叉熵损失的 Softmax

器,训练位置估计数据,得到其置信度水平,并对估计结果及其置信度进行带权重的聚类,以最大簇的均值和方差作为最终预测。将所提CE­CL模型在异常数据上进行评估,在x, y 的相对误差分别为7%,8%X­Y平面定位的RMSE18.24cm,三维定位的RMSE46.21cm,在信号传输受到扰的情况下仍能保持一定的精度。

对于任务三,首先分析了所提LS­MLP模型的内在特性:本质为最小二乘拟合优化器,通过将实验场景信息编码到损失函数中,设计可微的损失函数来指导网络进行优化,实现了网络结构与实验场景信息的剥离。因此,在解决场景2下的定位问题时,将更新的场景信息重编码到模型中,使用更新后的损失函数对LS­MLP进行训练完成任务场景的迁移。由于每个对应靶点的测量数据仅包含一组,为此无法使用任务二所提的聚类方法,因此在数据异常的情况下,提出了加权聚合方法对不同抽样下得到的预测值,使用置信度进行加权平均,得到最终结果。

对于四,首先确定了任务实质为有监督分类问题。为提升分类的性能,本文采用了特征工程、优化器选择、自动机器学习、投票法等方法。在特征工程阶段,利用任务二构建的LS­MLP模型,构建观测距离、预测距离、两距离平方差等共计12维度的特征,极大地挖掘了距离信息的内在表征。选择极限梯度提升算法(XGBoost)作为分类器,并使用基于贝叶斯的自动机器学习技术优化分类器的关键参数模型测阶段,利用集成学习的思想,基于多模型的输出,进行投票获得最终结果。通过以上方法,分类器在测试集精度可达99.26%任务四所给的测试数据,对应的分类结果为:正常、异常、正常、异常、异常、正常、异常、异常、异常、正常。

对于任务五,首先分析任务二所提正常数据定位模型LS MLP 与异常数据定位模型CECL的关联,对两者进行归纳统一,提出了可同时处理正常数据、异常数据的统一置信度赋权定位框架并基于该框架得到了靶点的初步运动轨迹。由于任务五中的靶点为运动靶点,故用卡尔曼滤波,考虑靶点的运动因素,结合初步预测结果对动态靶点的运动轨迹进行联合优化。滤波后结果波动较小,轨迹较为平滑。

          最后,本文对所提模型的优缺点进行评价,并提出改进建议,介绍了模型的推广前景。

关键字:最小二乘

多层感知机

聚类

模型聚合

卡尔曼滤波

1 . 1 问题背景

伴随着城市的建设和发展,基于位置的服务逐渐成为人们关注的热点。在智能化的时代,位置服务与日常生活密切相关,如车辆导航、人员定位等,这些功能为人们的生产生活提供了便利,也推动了定位技术的不断发展。

定位技术主要分为室外定位和室内定位两种。在室外定位中,卫星定位导航系统(Global Navigation Satellite Syste, GNSS),如美国GPS、中国的北斗、欧盟的Galileo等,具备在全球范围内提供三维精确定位、授时及测速的能力,能满足大部分室外定位需求,在军事、交通、测绘等领域获得了广泛应用。但在城市场景中,大量的建筑物遮挡和复杂的电磁环境会对卫星信号产生严重干扰,导致定位精度下降或者失效。因此,对于室内定位技术的需求不断增长。

目前,已经出现了多种针对室内定位的技术,比如红外线定位、超声波、蓝牙定位、WIFI位、射频识别定位(Radio Frequency IdentificationRFID等,但都无法满足室内定位精度高和环境适应性好的要求。而基于超频宽带 (Ultra­Wideband, UWB)的技术通过发送纳秒级的极窄脉冲来传输数据,拥有GHz量级的带宽,具有传输功耗低(仅有几十µW,穿透力强,定位精度高(可达厘米级甚至毫米级)等特点,成为室内定位技术的研究热点。

超宽带(UWB定位的测距方法包括:到达角方法(Angle of ArrivalAOA,接收信号强度方法(Received Signal StrengthRSS基于飞行时间的方法(Time of FlightTOF等。其中,基于飞行时间的方法是最常见的定位测距方法之一。该方法主要根据信号在定位目标和基站之间的传播时间,计算定位目标和基站之间的距离。依据定位目标和多个基站之间的距离,实现定位。

但在复杂室内环境下,UWB信号在传播过程中存在遮挡、反射等情况,产生时间延时、非视距传播、多路径效应等问题,导致距离测量值不可避免地出现波动,影响定位算法性能,甚至无法完成定位。因此,研究信号干扰下的UWB精确定位成为了亟需解决的问题。

1 . 2 问题要求

研究过实际景实测解决信干扰下超宽带确定位题。在5000mm×5000mm×3000mm的测试环境中,放置锚点A0A1A2A34个角落,向外发送信号。靶点接收到4个锚点的信号后,利用TOF定位技术,获得锚点(anchor与靶点(tag之间的距离,建立数学模型或者算法,使得无论测距信号是否受到干扰,都可以给出目标靶点的精确定位。问题示意图如图1­1

1­1    问题示意图

实验采集了324个不同位置靶点的数据,每个位置个采集两次,一次在无信号干扰的情况下,一次在有信号干扰下的情况下。由于靶点在同一位置会稍作停留,而锚点与靶点之间每间隔0.2­0.3秒就会收发信号一次,因而在同一位置点,UWB会采集到多组数据,得到UWB数据集。现根据以上背景以及所提供数据完成以下任务:

1. 数据预处理(清洗)。针对靶点在信号正常和异常采集的数据,设计读取方式并转换成二维表(矩阵)的形式,每一行代表一组数据。对数据文件进行预

处理,删掉异常、缺失、相同或相似等“无用”数据,保留经处理后的数据,重点列出24.正常.txt109.正常.txt1.异常.txt100.异常.txt四个数据文件保留下来的数据。

2. 定位模型。利用处理后的数据,分别对“正常”和“异常”数据,设计合适的数学模型,估计靶点的精确位置,所建立的定位模型定位模型必须体现实验场景信息,并说明有效性。同时利用所建立的定位模型分别对5组无信号干扰数据和5组有信号扰数据进行精位,并给出定位模型的3xyz)精度、2维(xy)精度以及1维的各自精度。

3. 在不同场景下测试所建立模型的有效性。分别用任务2中建立的“正常数据”定位模型及“异常数据”定位模型,对实验场景2的无信号干扰数据及有干扰信号数据进行精确定位。

4. 分类模型。建立数学模型,对“正常”和“异常”数据进行区分,以判断在        UWB数据采集阶段是否受到信号干扰,并说明所建立的分类模型的有效性。

      同时利用所建立的分类模型判断场景1下的10组数据是否为信号干扰数据。5. 运动轨迹定位。利用静态点的定位模型,加上靶点自身运动规律,建立运动  轨迹定位模型,对存在随机信号干扰的动态靶点的运动轨迹进行定位。对场  1下采集的动态靶点运动轨迹进行精确定位,并画出运动轨迹图。

2. 模型假设与符号说明

3 . 2 数据预处理

3 . 2 . 1 缺失数据、相同数据处理

(1) 缺失数据判定准则:原始数据中,存在一个或多个锚点值为空的情况即判定      为缺失数据。

(2) 相同数据判定准则:原始数据中,两组数据间4个锚点值全部相同的数据即      判定为相同数据。

          息,因而对缺失数据及相同数据直接进行删除。

3 . 2 . 2 异常数据处理

由于件为下采时间数据,因而本文将每个锚点(锚点)采集到的数据看成一维时序信号,对信号进行分析。

(1) 快速傅里叶变换分析信号特征

傅里叶变换(Fourier TransformFT是一种线性积分变换,用于信号在时域(或空域)和频域之间的转换,是信号处理中的一种常用工具。而快速傅里叶变换(Fast Fourier TransformFFT是一种可在时间内完成离散傅里叶变换的高效的计算方法。

          首先,本文将同一数据文件下的4个锚点数据进行可视化,得到4个一维的时序信号,如下图3­2所示(以142.正常.txt为例)。

可以看出信在时域下,整体较为平稳,有轻微的波动,偶有异常值出现。接着,本文对时域下的信号进行快速傅里叶变换,分析其在频域下的特征,判断是否有周期性的噪声。对上图四个一维信号分别进行傅里叶变换得到频域下的特征,如图3­3所示。

可以看到信号频率集中在0,没有高频噪声,因而不需要滤波。

3 . 3 数据预处理结果
          根据上述处理流程,分别对“正常数据”与“异常数据”下的324个文件进行处理,得到“正常数据”和“异常数据”文件夹下每个数据文件最后保留下来的样品组数。“正常数据”与“异常数据”文件夹下每个数据文件的数据组数如表3、表4所示,详细结果见附件。

3

正常数据”文件夹下每个数据文件的数据组数

文件编号

数据组数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

15

19

19

39

41

33

46

36

19

22

39

30

21

16

20

文件编号

数据组数

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

24

24

36

25

23

27

12

20

14

22

24

21

25

17

16

文件编号

数据组数

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

23

33

18

11

22

38

35

31

17

42

14

37

30

37

29

文件编号

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

4

异常数据”文件夹下每个数据文件的数据组数

文件编号

数据组数

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

52

54

53

89

89

88

101

100

62

73

87

76

56

44

49

文件编号

数据组数

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

71

80

79

65

69

59

37

50

51

64

68

62

64

47

46

文件编号

数据组数

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

55

85

61

41

68

97

75

70

50

87

43

70

75

82

72

文件编号

...

...

...

...

...

...

...

...

...

...

...

...

...

...

...

其中,“24.正常.txt”文件经处理后保留的数据为:

其余“109.正常.txt文件、“1.异常.txt文件、“100.异常.txt文件经处理后保留的数据详见附录A

4. 任务二的分析与求解

4 . 1 任务二分析

在本题中,需要利用任务1处理后的数据,分别对“正常数据”和“异常数据”,设计合适的数学模型(或算法),预测出靶点的精确位置。模型要求能够体现实验场景的信息,并对其有效性进行评估。对于正常数据而言,任务本质为通过四个锚点到靶点之间的带噪声的观测距离,预测靶点在锚点坐标系中所处的三维空间坐标,为经典的超定方程组优化问题(通过四个方程组解三个未知量)。针对这类问题,最小二乘法及相关特定方法Chan为经典解决方案,但这类解决方案通常优化难度较大,且当噪声为非高斯分布时,预测误差较大。本文提出了一种基于多层感知机的定位模型,将该最小二乘拟合问题建模为一个优化问题,并巧妙地用神经网络进行解决。模型与传统方法相比,具有较好的抗噪能力。并通过后接聚类算法,对预测结果进行进一步的聚类,选择较好的一类作为最终结果,因而模型具有较高的精度。

针对异常数据,建立了基站异常的联合定位模型。首先,对观测数据进行可视化,并根据题中陈述,合理进行假设——任一时刻最多只有一个基站的信号受到干扰。基于本假设,对观测到的异常数据进行采样,得到五个数据集合。用采样后的得到的五个数据集合,分别输入上述正常数据下的定位模型,得到五个相应的靶点预测集合。进而建立置信度评估模型,对预测结果进行置信度评估。最后,设计基于置信度的结果聚类算法,对预测结果进行聚类,选择较好的一类作为最终的结果。

为了验证方法的有效性,使用RMSE相对误差、绝对误差等多种精度指标,分别在三维空间、XY平面和3个坐标轴方向衡量了模型的定位精度,证明了所提方法在信号传输有干扰的情况下,仍能保持一定的定位精度。任务二的解决流程如图4­1所示。

代码

# 任务1
def outlier_remove(distance):
        mean_distance = np.mean(distan
        std_distance = np.std(distance, axis=0)

mask_temp = distance < (mean_d mask_temp = mask_temp & (dista         std_distance))
mask = mask_temp[:, 0] & mask_    mask_temp[:, 3]

return distance[mask,:]

def duplicate_samples_remove(distance):         unique,ori_index =
        np.unique(distance,axis=0,r

sort_index = np.argsort(ori_index) unique = unique[sort_index,:]
return unique

def similar_samples_remove(distan

# 计算均值,按照距离均值的距离计算可信度mu = np.mean(distance, axis=0)
ddistance = np.linalg.norm(dis

index = np.argsort(ddistance)

reverse_index = np.arange(0,le

# 按照可信度将样本进行排序,距离小的
sort_distance = distance[index, :]

sort_index = reverse_index[ind

# 遍历搜索,优先添加可信度高的样本。

selected_distance = []
time_index = []
for d,i in zip(sort_distance,s         if selected_distance == []:         selected_distance.append(d)         time_index.append(i)

append_flag = True
for sd in selected_distance:
       temp = np.linalg.norm(sd ­ d, 2)        if temp < margin:

append_flag = False

break

ce, axis=0)

istance + 3 * std_distance)

nce > (mean_distance ­ 3 *

temp[:, 1] & mask_temp[:, 2] &

eturn_index=True)

ce,margin = 20):

tance ­ mu, 2, axis=1)

n(distance))

样本可信度高

ex] # 用于恢复正常顺序

ort_index):

if append_flag:

selected_distance.append(d)

time_index.append(i)

index = np.argsort(time_index)

return np.array(selected_distance)[index,:]

# 任务2

import numpy as np

from tqdm import tqdm

import os

from sklearn.metrics import mean_squared_error

from torch import optim

import matplotlib.pyplot as plt

from sklearn.cluster import KMeans

def read_data(file_path:str):

data = pd.read_csv(file_path,index_col=0)

return data

def preprocess_data(csv_data):

distance = csv_data[['d1', 'd2', 'd3', 'd4']].values

is_normal = csv_data['is_normal'].values[0]

tag_location = csv_data[['x','y','z']].values

tag_location = np.array(tag_location)

return distance,tag_location,is_normal

###­­­­­­SGNN for Maximum Independent Set­­­­­­###

class SimpleGCN(nn.Module):

'''

The GCN layer refers to the paper (Graph Clustering with

Graph Neural Networks)

'''

def __init__(self, in_features, out_features, bias=True):       super(SimpleGCN, self).__init__()

self.in_features = in_features

self.out_features = out_features

self.weight = Parameter(torch.FloatTensor(in_features,

out_features))

if bias:

self.bias = Parameter(torch.FloatTensor(out_features))

else:

self.register_parameter('bias', None)

self.reset_parameters()

def reset_parameters(self):

### Random ###

stdv = 1. / math.sqrt(self.weight.size(1))

self.weight.data.uniform_(­stdv, stdv)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

python算法(魔法师版)

谢谢鼓励,您为支持开源做出贡献

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值