为了更好的读懂论文,一边阅读一边尝试复现论文
在这篇论文中,作者提出了基于加权因子w(A,m) 的通用框架。将此加权因子的计算分为三类。
1、直接定值:Yager与Semts的融合规则适用
2、计算加权因子:Dempster与Dubios&Prade的融合规则适用
3、自动学习加权因子
1.融于框架后的Dempster融合规则
1.1.这里就先不详细写推导过程,本博文主要写的是程序复现这一部分

#基于通用框架的改进的Dempster方法
#本程序并不完善,过于冗余
#
#如果想增加(减少)数据源的个数,那么需要在 def K(X_set,n)和def m(str_one) 函数下,
#1、增加(减少)空集合,及set_1,set_2,这些是用来做 ∩ 运算
#2、增加(减少)for循环
#3、改变if条件语句
import math
#1、首先说明辩框X
set_List=['A','B','C'];
X_set=set(set_List);#变成集合
empty_set=set();#这是一个空集
#2、列出不同证据源的bpa
# m_1={'A':0.98,'B':0.01,'C':0.01};
# m_2={'A':0,'B':0.01,'C':0.99};
k=0.1;#固定值
#e=0.1,0.01,0.001,0.0001;#变化值
e=0.0001
z=1-k-e;#z+e+k=1
m_1={
'A':e,'B':k,'C':z};
m_2={
'A':z,'B':k,'C':e};
#3、计算K值即冲突质量m(ϕ)
def K(X_set,n):
sum=0.00;
set_1=set();
set_2=set();
if(n<1):
#print("只有一个证据,Fail!\n");
return -1;
#print("当前有{0}个证据来源\n".format(n));
for m1 in X_set:
set_1.add(m1);
for m2 in X_set:
set_2.add(m2);
#print(type(set_2),set_2)
if(set_1.intersection(set_2)==set()):
#此时相交集合为空集合
sum+=m_1[m1]*m_2[m2];
set_2.clear()
set_1.clear();
#print(sum);
return sum;
#4、计算m_∩(A)
def m(str_one):
i=1
sum=0.00
set_one=set(str_one);#将字符str_one放在一个集合中
set_2=set();#为了方便集合运算,创建一个临时的空集合
for m2 in m_2:
set_2.add(m2

本文介绍了如何基于加权因子w(A,m)的通用框架来复现论文中的Dempster-Shafer证据理论融合规则,并提供了具体的Python实现代码。该框架分为直接定值、计算加权因子和自动学习加权因子三种情况,适用于Yager与Semts、Dempster与Dubios&Prade的融合规则。
最低0.47元/天 解锁文章





