Information-Theoretic Link Scheduling (ITLinQ)
ITLinQ is a spectrum sharing mechanism that we have proposed for wireless networks, especially for device-to-device (D2D) communication systems. Inspired by the recently-found optimality condition for treating interference as noise, we define a new concept of "information-theoretic independent sets" (ITIS), which indicates the sets of links in a network with multiple source-destination links for which simultaneous communication and treating the interference from each other as noise is information-theoretically optimal (to within a constant gap). Based on this concept, our proposed scheme, called ITLinQ, at each time schedules those links that form an ITIS.
In our paper on ITLinQ, we first provide a performance guarantee for ITLinQ by characterizing the fraction of the capacity region that it can achieve in a network with sources and destinations located randomly within a fixed area. Furthermore, we demonstrate how ITLinQ can be implemented in a distributed manner, using an initial 2-phase signaling mechanism which provides the required channel state information at all the links. Through numerical analysis, we show that distributed ITLinQ can outperform similar state-of-the-art spectrum sharing mechanisms, such as FlashLinQ, by more than a 100% of sum-rate gain, while keeping the complexity at the same level. Finally, we discuss a variation of the distributed ITLinQ scheme which can also guarantee fairness among the links in the network and numerically evaluate its performance.
Here, you can find the detailed implementation of ITLinQ, which was used in Section IV of our paper, through this m-file written in MATLAB®. This m-file will generate two plots: 1) The sum-rate comparison of FlashLinQ, Distributed ITLinQ, Fair ITLinQ, and the no scheduling scheme in which all of the links in the networks are active. 2) The average link rate CDF comparion of FlashLinQ, Distributed ITLinQ, and Fair ITLinQ for the case of 1024 links in the network. NOTE: In order to run the code, you will also need to have this function m-file (for the channel model) in the same directory as the main m-file above.