5.3 A Branch and Bound Approach for Resource Allocation
5.3.4 Complexity reduction techniques for the B&B based algorithm
(1) The VOC order allocation of the tree’s level
The order of the decision sequence D = (m1, m2, · · · , mN) that decides which data type is served by the mkth VOC at the kth level is a prominent factor that affects the searching speed. If a bad VOC, which is not even used in the final optimal solution, is in the early part of the decision sequence, the virtual consuming power of the corresponding level’s child nodes will not be altered and we will waste much more time searching in its subtree. Intuitively, the decision sequence D should be arranged according to the VOC’s GNR. But for the downlink scenario, the GNR of a VOC is a function of the data type (user terminal) it serves. Hence, we suggest the following systematic method to determine the decision sequence.
1. Apply the mono-rate channel/rate assignment algorithm for each data type.
2. Compute the sum rate of each VOC and denote by rs(i) and D(i) the sum rate and the set of data types (as was determined by running the water-filling algorithm d times for the d data types) to be served by the ith VOC.
3. mk = arg max{rs(j)|j ∈ IN\{m1, · · · , mk−1}}, where IN = {1, 2, · · · , N }.
Recall that the jth child node in the ith level, no matter to which parent node it belongs, represents the decision that the ith VOC is to serve the jth data type. Once the ith VOC is assigned to serve a data type, it must be released the duty of serving other data types in D(i). These data types will have to seek the services of other VOCs that will demand larger power to satisfy the required transmission service. With such an ordering of the decision sequence, as we proceed from one level to the next, the
Level
i = 0, 1, 2, … , N
Figure 5.7: The B&B format complied searching tree for multiuser channel assignment.
corresponding required total power will increase more rapidly, making it more likely to terminate an incorrect path. Thus the proposed decision sequence has the desired property of blocking the wrong path in the earliest possible stages.
Initially, we define some subsets of VOCs,
C(j) = { i | 1 ≤ i ≤ N}, 1 ≤ j ≤ d (5.4)
Cr6=0(i) = { j | 1 ≤ j ≤ d, rij 6= 0}, 1 ≤ i ≤ N (5.5)
Callocated = {∅} (5.6)
C≥2 = { i | 1 ≤ i ≤ N, |Cr6=0(i)| ≥ 2, i 6∈ Callocated} (5.7) C<2 = { i | 1 ≤ i ≤ N, |Cr6=0(i)| < 2, i 6∈ Callocated} (5.8)
For the VOCs in the subset (Callocated), it means that the order of the VOCs have been already determined in the tree’s level. The VOCs in the subset (C≥2) are important VOCs in at least two data type subsets. For the reason that the more total data rate of the VOC supporting to all data types, the more power-raising after the VOC is decided to one data type, so we place the VOC with the largest summation serving data rate to the first level. After that, this VOC is virtually assigned to the data type which it supports the highest data rate, since this assignment increases the least power and has the highest probability to obtain the optimal path. Next, this VOC will be moved into the subset (Callocated). The data types which lose this specific VOC need to run the iterative algorithm to calculate a new power allocation and modify the subset (C≥2).
Finally, continue the same action to arrange VOCs on the tree’s level until the subset (C≥2) is empty.
Second, as for the VOCs in the subset (C<2), we cannot make a clear difference from them, so a simple method is proposed based on exploring the importance of them to each data type. Concerning the VOCs in the subset (Callocated), the VOCs with the greatest channel gain in each subset (C(j)) for 1 ≤ j ≤ d are deleted and each data type runs the mono-rate iterative algorithm under its rate constraint again. The transmitted
rate will be transferred from the greatest VOCs to other VOCs, so there may be some new VOCs in the subset (C<2). It means these new VOCs are more important in all VOCs whose order have not been determined. Lastly, run the first step again until all VOCs are placed into the tree’s level. However, if the subset (C≥2) is still empty, the rest VOCs will be sorted by their maximum channel response to all data types.
To describe the detailed procedure, the following parameters are needed to be defined.
C(j) the subset of the jth data type.
Callocated the subset of VOCs which has been allocated in the tree’s level.
Cunallocated the subset of VOCs which has not been allocated in the tree’s level and the order of the subset is sorted by the maximum channel response in the VOC to all data types.
MaxSumRateIndex the index of VOC that has the maximum summation rate of all data type.
MaxRateIndex the index of data type which the MaxSumRateIndex supports the highest transmitted rate.
MaxV OCIndex(j) the index of VOC that serves the most transmitted rate to jth data type.
It{ C(j) } the consuming power of the iterative algorithm in Fig. 4.1 with the jth data type subset.
With the above definitions, the complete procedure is described in the table given below,
Table 5.2: The procedure of allocating the order of tree’s level.
Step 1: Define
C(j) = { i | 1 ≤ i ≤ N}, 1 ≤ j ≤ d,
Cr6=0(i) = { j | 1 ≤ j ≤ d, rij 6= 0}, 1 ≤ i ≤ N,
Callocated = {∅}, C≥2= { i | 1 ≤ i ≤ N, |Cr6=0(i)| ≥ 2, i 6∈ Callocated} Step 2: while |C≥2| 6= 0
MaxSumRateIndex = { i | max
i (Pd
j=1rij), i ∈ C≥2} MaxRateIndex = { j | max
j (rij), i = MaxSumRateIndex, 1 ≤ j ≤ d}
for j = 1 : d
if j 6= MaxRateIndex
C(j) = C(j) \ MaxSumRateIndex It{ C(j) }
end end
Callocated = Callocated∪ MaxSumRateIndex
Redefine C≥2 = { i | 1 ≤ i ≤ N, |Cr6=0(i)| ≥ 2, i 6∈ Callocated} end
if |Callocated| == N Exit Program end
Step 3: for j = 1 : d
MaxV OCIndex(j) = { i | max
i (rij), i ∈ Callocated, 1 ≤ i ≤ N}
C(j) = C(j) \ MaxV OCIndex(j) It{ C(j) }
end
Redefine C≥2 = { i | 1 ≤ i ≤ N, |Cr6=0(i)| ≥ 2, i 6∈ Callocated} if |C≥2| 6= 0
go to Step 2 end
Step 4: Define Cunallocated= { i | Sort
i (max
j (aij)), i 6∈ Callocated, 1 ≤ j ≤ d, 1 ≤ i ≤ N}
Callocated = Callocated∪ Cunallocated
(2) Select the node with the least increasing power first
As we know B&B method before, the bounding value will affect the searching per-formance a lot, because the tight bounding value can stop the path which does not have the optimal solution earlier. Hence, the earlier a searching path can achieve the optimal solution, the less computational cost is needed. For this reason, there is a technique to increase the speed for searching the optimal solution.
Every parent node has d child nodes and can choose any one of them as the next node. However, if the worse node is chosen to be the next node, the consuming power at this level is increasing and the probability of this path having the optimal solution is decreasing. Thus, we sort the d child nodes according to their increasing consuming power and search forward from the node with the least raising power first. After applying this action to each level, the probability of finding the optimal solution in first several paths raises a lot.
(3) Early termination in tree-searching
Due to our having already placed important VOCs in the front of the tree’s level, there may be a lot of weak VOCs which are not used if the number of VOCs is large.
Thus, we can apply a simple technique to reduce this useless calculation.
At the ith level, the ith VOC will be decided to transmit the jth data type. However, if the ith VOC does not support any rates for all data types, it means the ith VOC is weaker than other VOCs in each data type subset. In addition, most of the VOCs which will be determined after the ith level are weaker than the ith VOC, so we can start the checking procedure to verify if all VOCs decided after the ith level do not transmit any rates for all data types. If so, it implies those VOCs are weaker in each data type subset and the virtual consuming power will not increase even if those VOCs are all deleted from each data type subset. The expansion of the following tree from this parent node is useless and this parent node can be a feasible solution, so we can terminate the search
of this path at this parent node and check if its virtual minimum consuming power is smaller than the bounding value.
(4) Reuse the results of repetitious calculations in the same level
The resource allocation of the first level is taken as an example in Fig. 5.8 to il-lustrate this technique. There are d child nodes from the initial parent node and the first VOC needs to be decided which data type it should serve. For every child node, there is one subset which is the same as the initial node and the other subsets which exclude from the first VOC. For this reason, the transmitted power of each data type at the initial node is stored into the memory and each data type subset which loses the first VOC is also calculated and stored. Therefore, the total consuming power of the jth child node is summed up the transmitted power of the jth data type at the initial node and the other data types which exclude from the first VOC. In addition, if the first VOC does not transmit any rates for the jth data type, we can delete the first VOC from the jth data type subset directly and do not need to run the iterative algorithm.
1 2 3 N
Figure 5.8: Illustration for subsets of all child nodes from the initial node
49
The following part is to define some parameters to express the detail procedure in Table 5.3.
C(j) the subset of the jth data type.
Pparent(j) the virtual consuming power of the parent node’s jth data type subset.
Pdeleted(j) the virtual consuming power of the parent node’s jth data type subset excluding ith VOC.
Pchildk (j) the virtual consuming power of the kth child node’s jth data type subset.
It{ C(j) \ i } the consuming power of the iterative algorithm in Fig. 4.1 with the jth data type subset excluding the ith VOC.
Table 5.3: The procedure of reusing the results of repetitious calculations.
Step 1: Read all data C(1), . . . , C(d) and Pparent(1), . . . , Pparent(d) Step 2: for j = 1 : d
if the ith VOC serves data rate in C(j) Pdeleted(j) = It{ C(j) \ i }
else
Pdeleted(j) = Pparent(j) end
end
Step 3: for k = 1 : d for j = 1 : d
if k == j
Pchildk (j) = Pparent(j) else
Pchildk (j) = Pdeleted(j) end
end end
Lastly, the cost for this method is that it needs 2 × d × N memory to store the value of the Pparent and Pdeleted. However, calculational times of the iterative algorithm can decrease from d2 times to at most d times in each level.
(5) Efficiencies of various complexity reduction techniques
To assess the improvements brought about by various complexity reduction tech-niques for the BBRA method, we resort to computer simulation and conduct 100000 runs for each technique to examine its average effect. The numbers of data types and VOCs are 5 and 128, and the normalized rate of each data type is uniformly distributed in [0, 3]. The results are summarized in Table 5.4 and the number in this table means the calling times of the mono-rate iterative algorithm. From our simulation, we know that the first technique affects the searching times of BBRA approach very much. Without this technique, the searching times are usually more than 1000000 times, so the first technique is always applied in Table 5.4 to compare the effects of other techniques.
The purpose of the second technique is to find the optimal solution as early as possible, so during the searching process, this method can provide a better bounding value to block useless paths at a earlier level. Hence, BBRA algorithm can avoid the tree expanding too much and reduce the probability of unusually high searching times.
From the simulation results in Table 5.4, this method obviously works well.
For the third technique, the final part of useless level can be early terminated, so within most of large N cases, the early-terminating method can save a lot of useless computations. In the simulation results, we can know this method can reduce the average calculational times, but it is not able to avoid the deep searching when the bounding value is not close enough in some special cases.
The final technique uses the additional memory to save the repetitious calculations at each level, and in this way, the computational times can decrease much in all kinds of cases. From the results, this technique reduces much calculational complexity. However, it still cannot prevent the occurrence of the deep searching as the third technique, either.
Compared with the complexity associated with the VOC sorting, if all the above techniques are used in the BBRA scheme, the computational complexity is approximately reduced by 30 times. With these complexity-reduction techniques, the BBRA algorithm
becomes a practical algorithm when the number of required data types is not too large.
Table 5.4: Effects of different techniques on the performance of the BBRA approach.
d=5, N=128 DPRA (1) (1)+(2) (1)+(3) (1)+(4) (1)+(2)+(3)+(4)
Mean 44.6147 2587.20 773.981 578.0975 116.1923 88.3233
Mean ( < 200000 ) 44.6147 1717.80 773.981 549.9142 93.7858 88.3233
Prob. ( > 200000 ) 0 0.0012 0 0.00005 0.00004 0
Max Times 81 21622894 180132 1800602 981053 587
Additional Cost *1 *1 *2 *1 *3 *1 *4 *1 *2 *3 *4
Cost for each technique :
*1. Additional calculation before starting BBRA.
*2. Additional N×d memory to store the order of the next child node.
*3. Additional checking process to determine if the early termination is needed.
*4. Additional 2×N×d memory to store the Pparent and Pdeleted .
Example 5.2. Consider the same data types and VOCs as Example 5.1 and take the result of it as an initial bounding value. First, Fig. 5.5 illustrates how the first technique works. For this example, on account of the number of VOCs being much fewer, the step 3 and step 4 of the first technique are not executed. For the same reason, the third technique is not, either. Finally, the searching tree and the detail computation of each node are shown in Figs. 5.9 and 5.6.
Table 5.5: A greedy search procedure for solving Example 5.2
Step1 Define C(j)={1,2,3,4,5},1≤j≤3, C≥2={1,3,4,5} and Callocated ={φ}
r MaxSumRateIndex=1
2
r MaxSumRateIndex=4
1
1 (1)
Figure 5.9: The searching tree associated with Example 5.2.
Table 5.6: The step-by-step searching procedure for solving Example 5.2.
Index C(1) Power of C(1) C(2) Power of C(2) C(3) Power of C(3) Total Power Upper Bound 0 {1,2,3,4,5} 1.1227 {1,2,3,4,5} 4.3292 {1,2,3,4,5} 2.4825 7.9344 12.7049
1 {2,3,4,5} 1.1227 {1,2,3,4,5} 4.3292 {2,3,4,5} 3.2764 8.7284 12.7049
2 {2,3,4,5} 1.1227 {1,2,3,5} 5.2558 {2,3,5} 3.6028 9.9813 12.7049
3 {2,3,4} 1.1227 {1,2,3} 6.4634 {2,3,5} 3.6028 11.1889 12.7049
4 {2,4} 1.1227 {1,2,3} 6.4634 {2,5} 5.0960 12.6821 12.7049
5 {4} 1.1455 {1,3} 6.4634 {2,5} 5.0960 12.7049 12.7049
6 {2,4} 1.1227 {1,3} 6.4634 {5} 6.3891 13.9752 12.7049
7 {4} 1.1455 {1,2,3} 6.4634 {5} 6.3891 13.9980 12.7049
8 {2,4} 1.1227 {1,2} 8.6724 {2,3,5} 3.6028 13.3979 12.7049
9 {2,3,4} 1.1227 {1,2} 8.6724 {2,5} 5.0960 14.8910 12.7049
10 {2,3,4} 1.1227 {1,2,3,5} 5.2558 {2,3} 5.4498 11.8284 12.7049
11 {2,4} 1.1227 {1,2,5} 5.6469 {2,3} 5.4498 12.2194 12.7049
12 {4} 1.1455 {1,5} 5.6469 {2,3} 5.4498 12.2422 12.7049
13 {2,4} 1.1227 {1,5} 5.6469 {3} 7.0990 13.8686 12.2422
14 {4} 1.1455 {1,2,5} 5.6469 {3} 7.0990 13.8913 12.2422
15 {2,4} 1.1227 {1,2,3,5} 5.2558 {2} 15.9726 22.3512 12.2422
16 {2,3,4} 1.1227 {1,2,5} 5.6469 {2} 15.9726 22.7422 12.2422
17 {2,3,4,5} 1.1227 {1,2,3} 6.4634 {2,3} 5.4498 13.0359 12.2422
18 {2,3,5} 2.3030 {1,2,3,4,5} 4.3292 {2,3,5} 3.6028 10.2350 12.2422
19 {2,3} 2.3030 {1,2,3,4} 4.6549 {2,3,5} 3.6028 10.5607 12.2422
20 {2} 2.4547 {1,2,4} 4.8381 {2,3,5} 3.6028 10.8956 12.2422
21 {2} 2.4547 {1,4} 4.8381 {3,5} 3.6195 10.9123 12.2422
22 {} Inf {1,4} 4.8381 {2,3,5} 3.6028 Inf 10.9123
23 {} Inf {1,2,4} 4.8381 {3,5} 3.6195 Inf 10.9123
24 {2} 2.4547 {1,2,3,4} 4.6549 {2,5} 5.0960 12.2055 10.9123
25 {2,3} 2.3030 {1,2,4} 4.8381 {2,5} 5.0960 12.2370 10.9123
26 {2,3} 2.3030 {1,2,3,4,5} 4.3292 {2,3} 5.4498 12.0820 10.9123
27 {2,3,5} 2.3030 {1,2,3,4} 4.6549 {2,3} 5.4498 12.4077 10.9123
28 {2,3,5} 2.3030 {1,2,3,5} 5.2558 {2,3,4,5} 3.2764 10.8353 10.9123
29 {2,3} 2.3030 {1,2,3,5} 5.2558 {2,3,4} 4.2112 11.7700 10.9123
30 {2,3} 2.3030 {1,2,3} 6.4634 {2,3,4,5} 3.2764 12.0428 10.9123
31 {2,3,5} 2.3030 {1,2,3} 6.4634 {2,3,4} 4.2112 12.9776 10.9123
32 {2,3,4,5} 1.1227 {2,3,4,5} 7.1430 {1,2,3,4,5} 2.4825 10.7482 10.9123
33 {2,3,5} 2.3030 {2,3,4,5} 7.1430 {1,2,3,5} 2.5092 11.9552 10.9123
34 {2,3,4,5} 1.1227 {2,3,5} 11.3586 {1,2,3,5} 2.5092 14.9905 10.9123
35 {2,3,5} 2.3030 {2,3,5} 11.3586 {1,2,3,4,5} 2.4825 16.1440 10.9123
36 {1,2,3,4,5} 1.1227 {2,3,4,5} 7.1430 {2,3,4,5} 3.2764 11.5422 10.9123