-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathGenRandomQueue.m
More file actions
89 lines (79 loc) · 2.86 KB
/
Copy pathGenRandomQueue.m
File metadata and controls
89 lines (79 loc) · 2.86 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
clear; close all;
lambda = 2;
numChanges = 500;
QUEUE_MAX = 10;
QUEUE_MIN = 1;
interval = 100*2;
toWrite = zeros(1,numChanges);
traceNum = 4;
if traceNum==0
temp = poissrnd(lambda,1,numChanges);
QueueNum = round(temp/max(temp)*(QUEUE_MAX-QUEUE_MIN)) + QUEUE_MIN;
else
if traceNum==1 % facebook
cycle = [800 700 1100 1800 1100 1500 600 1050 900 700 800 1000 ...
400 700 1200 1600 1900 1200 2000 1100 800 600 900 400 ...
400 1000 900 800 1500 1100 1300 1000 800 1100 700 600 ...
500 1050 700 2000 1600 1100 1105 600 1000 800 900 600 ...
500 700 800 1000 1500 1250 1200 1900 1000 800 600 500 ...
400 600 2000 1500 1800 1000 1200 1000 800 1100 600 400 ...
300 800 800 600 1100 1100 800 900 600 1100 600 1100 ...
];
elseif traceNum==2 % CC-e
cycle = [60 30 70 40 20 60 80 50 40 20 70 30 ...
80 30 40 75 40 55 55 90 90 30 30 70 ...
80 35 70 45 25 80 60 100 50 150 30 100 ...
80 40 70 100 60 50 80 70 80 60 30 50 ...
90 30 70 40 30 50 190 50 30 20 70 50 ...
80 30 50 90 50 40 70 80 90 50 20 60 ...
80 20 70 20 70 20 60 70 30 60 20 120 ...
];
cycle = cycle + 1;
elseif traceNum==3 % CC-a
cycle = [1 2 3 0 1 0 1 0 5 10 5 0 ...
2 0 3 0 1 0 6 3 6 3 5 0 ...
3 5 0 3 0 3 0 4 0 2 10 8 ...
0 2 0 0 0 2 1 8 2 7 0 1 ...
0 1 0 3 5 1 0 2 0 2 0 2 ...
0 2 0 4 0 1 0 2 0 2 1 2 ...
1 2 0 5 1 0 2 0 4 1 0 1 ...
];
elseif traceNum==4 % CC-c
cycle = [3 1 1 2 1 2 1 2 1 1 0 1 ...
6 1 2 2 3 2 3 5 2 1 1 0 ...
5 3 4 2 5 3 6 3 1 4 2 1 ...
2 4 2 1 1 4 7 10 6 4 8 1 ...
4 3 5 6 4 6 0 8 2 0 2 1 ...
1 4 2 4 2 1 6 3 2 1 2 1 ...
4 1 6 4 1 3 5 4 3 0 1 3 ...
];
end
cycle = round(cycle/max(cycle)*(QUEUE_MAX));
t = 0:interval:interval*(length(cycle)-1);
figure;
plot(t,cycle,'x-');
xlabel('time (secs)');
ylabel('queue numbers');
ylim([0 max(cycle)]);
for j=1:length(cycle): numChanges
startIdx = j;
endIdx = min(j + length(cycle)-1,numChanges);
temp = cycle(1:endIdx-startIdx+1);
QueueNum(startIdx:endIdx) = temp;
end
QueueNum = round(QueueNum/max(QueueNum)*(QUEUE_MAX));
end
csvwrite('queue_nums.csv',QueueNum);
% fprintf('int[] QUEUE_NUM = {');
% for i=1:numChanges
% fprintf('%d,',QueueNum);
% end
% fprintf('}');
interval = 100*2;
range = 100;
t = 0:interval:interval*(range-1);
figure;
plot(t,QueueNum(1:range));
ylim([0 max(QueueNum)]);
xlabel('time (secs)');
ylabel('queue numbers');