-
1:
Input:, ,
-
2:
Obtain SRS from UEs
-
3:
Determine active set of UEs
-
4:
// Determine maximum cluster size
-
5:
// Determine number of clusters
-
6:
if D=UL then
-
7:
SortDescend() // UE ordering for UL
-
8:
else
-
9:
SortAscend() // UE ordering for DL
-
10:
end if
-
11:
// Form UE partitions
-
12:
// Initialize clusters
-
13:
for n=1:N-1 do // Iterative UE admission starts
-
14:
// Initialize admission awaiting UEs
-
15:
EvalCostMatrix()
-
16:
if O=MS then // Max–Sum Rate Assignment
-
17:
Linear Sum Assignment()
-
18:
else if O=MM then // Max–Min Rate Assignment
-
19:
Linear Bottleneck Assignment()
-
20:
end if
-
21:
// Update clusters
-
22:
end for
-
23:
// Update cluster levels
-
24:
// Update cluster weights
-
25:
UE // Send RARs out
-
26:
return , , ,
-
27:
procedure EvalCostMatrix()
-
28:
for i=1:R do
-
29:
for j=1: do
-
30:
// Admit UE of to
-
31:
if D=UL then
-
32:
// power levels as per (7)
-
33:
if O=MS then
-
34:
-
35:
else if O=MM then
-
36:
-
37:
end if
-
38:
else if D=DL then
-
39:
// power weights as per (9)
-
40:
if O=MS then
-
41:
-
42:
else if O=MM then
-
43:
-
44:
end if
-
45:
end if
-
46:
end for
-
47:
end for
-
48:
return
-
49:
end procedure
-
50:
procedure Linear Sum Assignment()
-
51:
-
52:
-
53:
return
-
54:
end procedure
-
55:
procedureLinear Bottleneck Assignment()
-
56:
-
57:
-
58:
return
-
59:
end procedure