-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDS.m
More file actions
92 lines (85 loc) · 4.9 KB
/
Copy pathDS.m
File metadata and controls
92 lines (85 loc) · 4.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
function [ belief ] = DS( graph, reputation, service_judged )
[ Neighbors ] = GetDirectNeighbors( graph, service_judged );
CountNeighbors=size(Neighbors,1);
Trustworthiness=zeros(size(graph,1));
basic_trust=zeros(size(graph,1),size(graph,1));
basic_untrust=zeros(size(graph,1),size(graph,1));
basic_uncertain=zeros(size(graph,1),size(graph,1));
for i=1:length(reputation)
for j=1:CountNeighbors
% disp('i');
% disp(i);
% disp('j');
% disp(j);
%disp('reputation(i)');
%disp(reputation(i));
if(reputation(i)==Neighbors(j))
Trustworthiness(Neighbors(j))=reputation(i+1);
%disp('Neighbors(j)');
%disp(Neighbors(j));
disp('Trust Neighbors');
disp(Trustworthiness(Neighbors(j)));
end
end
end
for i=1:CountNeighbors
[ value ] = GetEdgeValue( graph, service_judged, Neighbors(i) );
disp('Neighbors(j)');
disp(Neighbors(i));
disp('service_judged');
disp(service_judged);
disp('Value');
disp(value);
if(value==1)
basic_trust(service_judged,Neighbors(i))=Trustworthiness(Neighbors(i));
basic_untrust(service_judged,Neighbors(i))=0;
basic_uncertain(service_judged,Neighbors(i))=1-basic_trust(service_judged);
else
if(value==-1)
basic_trust(service_judged,Neighbors(i))=0;
basic_untrust(service_judged,Neighbors(i))=Trustworthiness(Neighbors(i));
basic_uncertain(service_judged,Neighbors(i))=1-basic_untrust(service_judged);
end
end
end
k=0; %basic probability mass: sum of the product of the opinion of each watchdog in a certain node
t=0;
%belief=0;
for i=1:CountNeighbors %# of watchdogs
for j=1:CountNeighbors %# of watchdogs
%[ value1 ] = GetEdgeValue( graph, service_judged, Neighbors(i) );
%[ value2 ] = GetEdgeValue( graph, service_judged, Neighbors(j) );
%tf = strcmp(value1,value2);
if(i~=j)
%k=basic_trust(service_judged,Neighbors(i))*basic_trust(service_judged,Neighbors(j))+basic_trust(service_judged,Neighbors(i))*basic_uncertain(service_judged,Neighbors(j))+basic_uncertain(service_judged,Neighbors(i))*basic_trust(service_judged,Neighbors(j))+basic_untrust(service_judged,Neighbors(i))*basic_untrust(service_judged,Neighbors(j))+basic_untrust(service_judged,Neighbors(i))*basic_uncertain(service_judged,Neighbors(j))+basic_uncertain(service_judged,Neighbors(i))*basic_untrust(service_judged,Neighbors(j))+basic_uncertain(service_judged,Neighbors(i))*basic_uncertain(service_judged,Neighbors(j));
%disp('basic_uncertain(service_judged)');
%disp(basic_uncertain(service_judged));
%t=basic_trust(service_judged,Neighbors(i))*basic_trust(service_judged,Neighbors(j))+basic_trust(service_judged,Neighbors(i))*basic_uncertain(service_judged,Neighbors(j))+basic_uncertain(service_judged,Neighbors(i))*basic_trust(service_judged,Neighbors(j));
disp('basic_trust(service_judged,Neighbors(i))*basic_trust(service_judged,Neighbors(j))');
disp(basic_trust(service_judged,Neighbors(i))*basic_trust(service_judged,Neighbors(j)));
disp('basic_untrust(service_judged,Neighbors(i))*basic_untrust(service_judged,Neighbors(j))');
disp(basic_untrust(service_judged,Neighbors(i))*basic_untrust(service_judged,Neighbors(j)));
disp('basic_uncertain(service_judged,Neighbors(i))*basic_uncertain(service_judged,Neighbors(j))');
disp(basic_uncertain(service_judged,Neighbors(i))*basic_uncertain(service_judged,Neighbors(j)));
t=basic_trust(service_judged,Neighbors(i))*basic_trust(service_judged,Neighbors(j))+basic_untrust(service_judged,Neighbors(i))*basic_untrust(service_judged,Neighbors(j))+basic_uncertain(service_judged,Neighbors(i))*basic_uncertain(service_judged,Neighbors(j));
k=(basic_trust(service_judged,Neighbors(i))*basic_uncertain(service_judged,Neighbors(j))+basic_uncertain(service_judged,Neighbors(i))*basic_trust(service_judged,Neighbors(j))+basic_untrust(service_judged,Neighbors(i))*basic_uncertain(service_judged,Neighbors(j))+basic_uncertain(service_judged,Neighbors(i))*basic_untrust(service_judged,Neighbors(j)));
if(k>1)
k=1;
else
k=(basic_trust(service_judged,Neighbors(i))*basic_uncertain(service_judged,Neighbors(j))+basic_uncertain(service_judged,Neighbors(i))*basic_trust(service_judged,Neighbors(j))+basic_untrust(service_judged,Neighbors(i))*basic_uncertain(service_judged,Neighbors(j))+basic_uncertain(service_judged,Neighbors(i))*basic_untrust(service_judged,Neighbors(j)));
end
%end
end
end
disp('t');
disp(t);
disp('k');
disp(k);
belief=t/k;
if(belief>1)
belief=belief-1;
else
belief=t/k;
end
%end
end