-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtask3.m
More file actions
121 lines (102 loc) · 2.53 KB
/
task3.m
File metadata and controls
121 lines (102 loc) · 2.53 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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
clear all;
close all;
clc
Nodes= [30 70
350 40
550 180
310 130
100 170
540 290
120 240
400 310
220 370
550 380];
Links= [1 2
1 5
2 3
2 4
3 4
3 6
3 8
4 5
4 8
5 7
6 8
6 10
7 8
7 9
8 9
9 10];
T= [1 3 1.0 1.0
1 4 0.7 0.5
2 7 2.4 1.5
3 4 2.4 2.1
4 9 1.0 2.2
5 6 1.2 1.5
5 8 2.1 2.5
5 9 1.6 1.9
6 10 1.4 1.6];
nNodes= 10;
nLinks= size(Links,1);
nFlows= size(T,1);
B= 625; %Average packet size in Bytes
co= Nodes(:,1)+j*Nodes(:,2);
L= inf(nNodes); %Square matrix with arc lengths (in Km)
for i=1:nNodes
L(i,i)= 0;
end
C= zeros(nNodes); %Square matrix with arc capacities (in Gbps)
for i=1:nLinks
C(Links(i,1),Links(i,2))= 10; %Gbps
C(Links(i,2),Links(i,1))= 10; %Gbps
d= abs(co(Links(i,1))-co(Links(i,2)));
L(Links(i,1),Links(i,2))= d+5; %Km
L(Links(i,2),Links(i,1))= d+5; %Km
end
L= round(L); %Km
MTBF= (450*365*24)./L;
A= MTBF./(MTBF + 24);
A(isnan(A))= 0;
logA = -log(A);
%
% Compute up to 100 paths for each flow:
%n= 100;
[sP1 nSP1 sP2 nSP2]= calculateAvailability(logA,T,1);
%for i=1:nFlows
% disp(['Most available path is: [' num2str(sP{i}{1}(:).') ']']);
% fprintf('Availability of the path = %.5f%%\n\n',nSP(i)*100);
%end
sumAvai = 0;
for i=1:nFlows
disp(['Most available path is: [' num2str(sP1{i}{1}(:).') ']']);
%fprintf('\tAvailability of the path = %.5f%%\n',nSP1(i)*100);
disp(['Second most available path is: [' num2str(sP2{i}{1}(:).') ']']);
%fprintf('\tAvailability of the path = %.5f%%\n\n',nSP2(i)*100);
avai = 1-((1-nSP1(i))*(1-nSP2(i)));
sumAvai = sumAvai + avai;
fprintf('\tAvailability of the pair = %f\n\n',avai);
end
sumAvai= sumAvai/nFlows;
fprintf('\n Average service availability: %f\n\n',sumAvai);
% EX 3c)
Loads= calculateLinkLoads1plus1(nNodes,Links,T,sP1,sP2)
totalLoad= sum(sum(Loads(:,3:4)))
fprintf('Links do not have enough capacity:\n')
for i=1:length(Loads(:,3))
if(Loads(i,3)>10)
disp(Loads(i,1:3));
end
if(Loads(i,4)>10)
disp(Loads(i,[1:2 4]));
end
end
% EX 3d)
Loads= calculateLinkLoads1to1(nNodes,Links,T,sP1,sP2)
totalLoad= sum(sum(Loads(:,3:4)))
fprintf('Links do not have enough capacity:\n')
for i=1:length(Loads(:,3))
if(Loads(i,3)>10 || Loads(i,4)>10)
disp(Loads(i,:));
end
end
fprintf('\nThe highest bandwidth value required among all links: %.4f\n',max(Loads(:,3:4), [], 'all'));