5.5 Coalition Game for Multi-Objective Clustering
5.5.1 Coalitional Game Model for SC Clustering Sub-game
In this subsection, we formulate the SC clustering sub-game where SC clusters are formed and dynamically updated based on spatio-temporal changes in the network and/or user profiles. Let C = {SC1, . . . , SCn} be the players of our
coalition game i.e. small cells in the network and assume that they are grouped into clusters C = {C1, . . . , Cs}. A coalition is defined as the groups of players
in the same cluster i.e. Ci = {SCi1, SCi2...SCiz} and a collection is defined as
the set of coalitions H = {H1, H2, ..., Hb}. A collection is called a partition
partition C is defined by the utility function v(Ci, C) and overall SC clustering
sub-game is defined by (C, v) pair. The utility function reflects the overall gain for cooperation including multiple objectives of CoMP deployment (e.g. like spectral efficiency and backhaul/RAN load balancing) and also the various cost factors of cooperation (e.g. like additional pilot requirement, signal processing complexity). An accurate utility function is key for better CoMP clustering to maximize the benefits expected from CoMP.
We utilize two utility functions we presented in Chapter 4. Firstly, we employ a load aware utility function which aims to shift load from highly loaded cells to lightly loaded cells and implicitly improve spectral efficiency as follows:
v1(SCm, Ci) = −(ˆlim) 1−c(|Ci|)ˆuim ˆlim<1 −(ˆlim)3 1−c(|Ci|)ˆuim ˆlim≥1 (5.12) where c(|Ci|) = 1+e−(|Ci|−C1 n
max). c(|Ci|) is defined as the complexity function
which represents the additional overhead for CoMP such as precoding processing complexity, synchronization issues and additional backhaul capacity. As the ad- ditional overheads for CoMP increase when cluster size increase, the complexity function is designed to introduce a soft limit to maximum cluster size Cn
max based
on the requirements of the network for the right trade-off between additional spectral efficiency/load gain and CoMP overheads.
An spectral efficiency based utility is also employed in our work within a greedy algorithm for comparison. This utility does not consider cell load but aims to maximize spectral efficiency only. Spectral efficiency based utility function is defined as follows: v2(SCm, Ci) = X k∈Ubest im yk(1 − c(|Ci|)) (5.13) where Ubest
im is the list of users where SCm is the best serving cell based on
average received signal power within Ci , i.e. a subset of the associated users
Uim at the SCm and yk is the spectral efficiency achieved at UEk i.e. yk = log2(1 +SIN Rˆ k).
To compare the utility of two different collections H = {H1, H2, ..., Hb} and G = {G1, G2, ..., Gz} of the same subset of players, we employ the utilitarian
comparison order where collection H is preferable to collection G if the overall utility of the collection is higher, even if the individual players may be worse off, i.e. H . G if Pb
i=1v(Hi) > Pzi=1v(Gi) [31,148].
SC coalitions are formed and adapted into changing network/user profile con- ditions by 3 different clustering actions:
• Merge: Players (SCs) in any two or more coalitions {G1, G2, ..., Gz} prefer
to merge into one coalition F = ∪z
i=1Gi i.e. ∪zi=1Gi . {G1, G2, ..., Gz}, if v(F) > (Pz
i=1v(Gi)) following the utilitarian order.
• Split: Players (SCs) prefer to split from any coalition Ci into smaller
coalitions {Ci1, Ci2, ..., Ciy} where Ci = ∪j=1y Cij i.e. {Ci1, Ci2, ..., Ciy} . Ci if
(Py
j=1v(Cij) > v(Ci) following utilitarian order.
• Transfer: Any player in Ci, i.e. SCix ⊆ Ci prefer to transfer from coalition
Ci to Cj i.e. {Ci\SCix, Cj ∪ SCix} . {Ci, Cj} if v({Ci\SCix) + v(Cj ∪ SCix) >
{v(Ci) + v(Cj)}.
Assume C = {C1, C2, ..., Cs} be any partition of C, i.e. the current network
clustering structure. We propose to start with split operation, followed by merge operation and then a transfer operation afterwards. Split/merge/transfer opera- tions are repeated until there is no more re-clustering action possible to improve overall utility.
Split operation checks possible split options for ∀Ci in C, and implements the
split operation when it finds a suitable split option based on utilitarian order i.e. (Py
j=1v(Cij) > v(Ci). Split operation is repeated iteratively until there is
no further split is possible as detailed in Algorithm 6. A new partition H is formed after the split operation. H is then subject to merge operation as detailed in Algorithm 7. Merge operation starts with coalition Hi with the maximum
absolute payoff value and looks for merge options to its neighbour coalitions. We avoid exhaustive search of possible merge with every other coalition in the network which reduces the algorithm complexity significantly. Merge operation is implemented for (Hi, Hj) coalition pair where Hj is the neighbour coalition for
Hi with maximum additional payoff in the case of a possible merge operation.
We adapt the neighbour coalition concept from Chapter 4 where we define them based on the reported average received signal power from the users. For any user
UEkwithin the serving area of SCm ⊆ Hm, a neighbour rank value is incremented
for {Hm, Hj} pair if pkj/pkm > P nei
∆ and pkj > P nei
min where pkm and pkj are the
average signal power values received from UEk for SCm ⊆ Hm and SCj ⊆ Hj
respectively. Merge operation continues for ∀Hi in H and is repeated for the
whole partition until no other merge is possible. Once the merge operation is finished, transfer operation starts with the new partition G formed after merge operation. For ∀Gi ∈ G, each SCix ∈ Gi are checked for a possible transfer to one
of the neighbour coalition Gj i.e. T (SCix, Gi, Gj). Within each coalition Gi, all
possible transfer operations are ranked and transfer operation T (SCix, Gi, Gj) is
continues for all ∀Gi ∈ Gand is repeated for the newly formed partition until there
is no further transfer possible with additional payoff, as detailed in Algorithm 8. Split, merge and transfer operations are then repeated until there is no further SC coalition actions possible.
Algorithm 6 Split Operation
For any given network clustering state C = {C1, C2, ..., Cs}, ∀Ci ∈ C, set
Ci.splitpossible=1
Split-ongoing=1
while Split-ongoing do
Split-ongoing=0
for all Ci where (Ci.split-possible=1 and |Ci| >1) do
Update Ci.Split-options
Ci.split-possible=0
for all Ci.Split-Options do
if Any split option is possible i.e. (Py
j=1v(Cij) > v(Ci) then
Split(Ci to {Ci1, Ci2, ..., Ciy}
Split-ongoing=1
∀Cij, set Cij.split-possible=1
Break for-loop and continue with next Ci
end if end for end for end while