D-S证据理论局部冲突处理:基于证据项权重的新方法

需积分: 9 7 下载量 121 浏览量 更新于2024-09-09 收藏 298KB PDF 举报
"这篇论文探讨了基于证据项权重的D-S证据理论在处理局部冲突时的应用。作者王俊松分析了D-S证据理论合成规则存在的问题,并提出了一个新的局部冲突分配方案,该方案考虑了证据项的权重,以提高合成规则的收敛性和实现简便性。论文主要关注了D-S合成规则在处理不确定信息时的冲突概率分配,以及如何优化这一过程,以增强证据理论在实际应用中的价值。" D-S证据理论,全称为Dempster-Shafer证据理论,是一种处理不确定信息的重要工具,尤其在决策分析、模糊系统和人工智能等领域有着广泛的应用。然而,其标准合成规则存在一些限制,尤其是在面对冲突信息时,可能无法有效地进行信息融合。这篇论文指出,经典D-S合成规则将冲突概率按照非冲突概率的比例重新分配,这种处理方式可能导致信息的失真。 作者王俊松首先回顾了D-S合成规则的历史,强调了冲突概率处理的重要性。他注意到,许多改进策略旨在克服D-S规则的局限,如处理冲突概率为1的情况,以及寻找更合理的冲突概率分配方法,以提升合成的精度和收敛速度。王俊松特别提到了Yager合成规则,这是一种认为冲突导致完全不确定性的观点,冲突部分被视为无效信息。 在现有的冲突概率改进方案中,论文进一步讨论了各种方法的优缺点。例如,Yager规则虽然简单,但可能会过于保守,忽视了冲突信息中可能包含的部分有用信息。因此,王俊松提出了基于证据项权重的局部冲突分配方案,这种方法考虑了每个证据项对冲突的贡献,从而更加灵活地处理局部冲突。 通过实例分析,王俊松证明了新提出的合成规则在收敛性和计算效率上的优势。这种方法不仅能够更好地保留原始信息的特性,而且在处理复杂场景时具有更高的实用性。论文的关键贡献在于提供了一个新的冲突处理框架,为D-S证据理论在实际问题中的应用开辟了新的可能性。 这篇论文深入探讨了D-S证据理论的局限性,并提出了一个创新的解决方案,以解决局部冲突处理的问题。这对于不确定信息处理和决策支持系统的开发具有重要意义,有助于推动证据理论在复杂信息系统中的进一步发展。

#------(一)方法1:基于指标体系1的结果---- #--------1.数据导入------------- library(xlsx) d1.1 <- read.xlsx('data.xlsx', '2022', encoding = "UTF-8") #读取数据 head(d1.1,10) colnames(d1.1) d1 <- d1.1[,5:ncol(d1.1)] d1 <- abs(d1) #---------2.归一化处理--------------- Rescale = function(x, type=1) { # type=1正向指标, type=2负向指标 rng = range(x, na.rm = TRUE) if (type == 1) { (x - rng[1]) / (rng[2] - rng[1]) } else { (rng[2] - x) / (rng[2] - rng[1]) } } #---------3.熵值法步骤---------- #定义熵值函数 Entropy = function(x) { entropy=array(data = NA, dim = ncol(x),dimnames = NULL) j=1 while (j<=ncol(x)) { value=0 i=1 while (i<=nrow(x)) { if (x[i,j]==0) { (value=value) } else { (value=value+x[i,j]log(x[i,j])) } i=i+1 } entropy[j]=value(-1/log(nrow(x))) j=j+1 } return(entropy) } Entropy_Weight = function(X, index) { pos = which(index == 1) neg = which(index != 1) X[,pos] = lapply(X[,pos], Rescale, type=1) X[,neg] = lapply(X[,neg], Rescale, type=2) P = data.frame(lapply(X, function(x) x / sum(x))) e = Entropy(P) d = 1 - e # 计算信息熵冗余度 w = d / sum(d) # 计算权重向量 list(X = X,P = P, w=w) } #-------4.代入数据计算权重----- # -------二级指标权重------ ind=array(rep(1,ncol(d1))) aa=Entropy_Weight(X = d1,index = ind) weight=as.data.frame(aa["w"]) weigh X <- as.data.frame(aa["X"]) X P <- as.data.frame(aa["P"]) P d1.a <- X[,c(grep("A",colnames(X)))] d1.b <- X[,c(grep("B",colnames(X)))] d1.c <- X[,c(grep("C",colnames(X)))] d1a <- as.matrix(d1.a) d1b <- as.matrix(d1.b) d1c <- as.matrix(d1.c) n1 <- ncol(d1a) n2 <- ncol(d1b) n3 <- ncol(d1c) wa <- weight[1:n1,1] wb <- weight[(n1+1):(n1+n2),1] wc <- weight[(n1+n2+1):(n1+n2+n3),1] wa <- as.matrix(wa,ncol =1) wb <- as.matrix(wb,ncol =1) wc <- as.matrix(wc,ncol =1) indexa <- d1a%%wa indexb <- d1b%%wb indexc <- d1c%*%wc d1abc <- cbind(indexa,indexb,indexc) 参考以上代码,用不同一级指标下分别计算二级指标权重,再求一级指标权重

2023-06-10 上传