The main purpose of the package is to provide an infrastructure for researchers to write their own simulation scripts. In addition to this, the package contains some basic network/channel models (inspired by 3GPP and ITU-T) and some reference implementations of popular precoding methods.
The package is under continuous development, and may be improved and extended in the future.
The networks are subtypes of the
Network abstract type. In order to generate
the network, several concrete models are available:
InterferingBroadcastChannel, a network without large-scale fading which can be used to simulate interfering broadcast channels (including interference channels).
TriangularMacroNetwork, a triangular macro network with three sites. Large-scale parameters are inspired by 3GPP Case 1.
TriangularHetNet, similar to the network above, but including a variable number of pico base stations per cell.
IndoorsNetwork, an office corridor inspired by ITU-T InH
RandomLargeScaleNetwork, a macro network with random base station placement and 3GPP inspired pathloss.
For each network, a convenience function is available for quick generation, e.g.:
setup_interfering_broadcast_channel(num_BSs, num_MSs_per_cell, num_MS_antennas, num_BS_antennas; kwargs)
The simulation is a simple Monte Carlo loop. Given a network, the
simulate(network, simulation_params) function determines large-scale
parameters by dropping the users by calling
small-scale fading is then generated by calling
channel = draw_channel(network).
By writing customized methods for these functions, new network models can be
The simulation function sweeps one main independent variable, but support also exists for sweeping auxiliary independent variables.
Reference implementations of precoding schemes
We provide implementations for the following precoding methods:
Shi2011_WMMSE, the famous WMMSE algorithm by Shi et al.
Razaviyayn2013_MinMaxWMMSE, min-max version of the WMMSE algorithm by Razaviyayn et al.
Komulainen2013_WMMSE, diagonalized WMMSE algorithm by Komulainen et al.
Gomadam2008_MinWLI, leakage minimization by Gomadam et al.
Gomadam2008_MaxSINR, heuristic per-stream SINR maximization by Gomadam et al.
Eigenprecoding, single-user optimal beamforming with/without TDMA
Installation and Usage
The package is installed by calling
Pkg.clone("https://github.com/rasmusbrandt/CoordinatedPrecoding.jl") from the Julia REPL.
The package uses PyPlot.jl for visualization, Lumberjack.jl for logging, and ProgressMeter.jl for showing progress during lengthy simulation runs. The Min-Max WMMSE algorithm is implemented using Gurobi.jl. The package uses Compat.jl for compatibility between julia 0.3 and 0.4.