JPL's Wireless Communication Reference Website

Chapter: Cellular Telephone Networks. Section: Frequency reuse, Dynamic Channel Assignments

Channel Assignment: Java Demo

Contributed by Jesse de Does

This is a Java implementation of JavaScript game for frequency assignment of a cellular network. The first version of this applet gives you the opportunity to test your own abilities as a cellular operator.


See also instructions for the Javascript version.

The little square boxes in the cells represent channels. An assigned channel is coloured, a free channel is white, a locked channel is black. (Un)assign a channel by clicking on it.

The slider regulates the speed of the Poisson call arrival process running in the background. You can force a step in the process with the "next" button.

Applet: Channel Assignment

Existing Algorithms

Of course you will want to compare your performance to existing DCA algorithms. Below is a applet providing a very simple instance of a rough implementation the `BDCL' algorithm.

Borrowing with Directional Channel Locking

  1. Compute initial fixed assignment

    Each cell is assigned a colour (number) k in (1,..,C), where C is the cluster size, in such a way that the distance between cells of the same colour is always at least equal to the reuse distance.

    All channels having number j such that j % C = k are then provisionally assigned to the cells of colour k. A channel assigned in this way to a cell is called a nominal channel of that cell.

  2. New call processing

    If a cell has a free nominal channel, assign the call to the lowest-numbered such channel.

    Otherwise, scan the direct neighbour cells for a channel that can be borrowed. (In the demo, a borrowed channel has a fat red dot above it).

    In borrowing, the highest-numbered channel of the neighbour cell having most free channels is preferred.

  3. Channel borrowing

    A channel can be borrowed by me if

    This last condition may seem superfluous from the point of view of channel locking, but it is needed in this version.

  4. Channel locking.

    A nominal channel in a cell c is defined to be locked in direction i by cell l if the i-th neighbour of c cannot borrow the channel from c without violating the reuse constraint, because the channel is already a borrowed channel in cell l. (Not necessarily borrowed from c!).

    We need not search the whole cluster around a cell for locking. Given a cell c borrowing a channel from a cell d, only three cells in the grid can carry locks with c locking that channel.

    Figure: If Cell z borrows from a, the cochannel cells b and c are locked in the directions indicated by a red line. Cell a is locked in all directions.

    • The cell d from which the channel is borrowed
    • Its two cochannel cells, i.e. the two cells of the same colour as d which are at distance smaller than the reuse distance from l

    A lock in direction i is represented by a coloured dot near the boundary with neighbour i.

  5. Channel release

    A channel is released if a call on that channel terminates or there are no locks on the channel.

  6. Channel reallocation

    When a channel is released, try to reallocate a call on a less eligible channel to it.

Borrowing with Channel Ordering can be described as a simpler version of the above scheme: a channel is always locked in all directions. The BDCL Algorithm was introduced and shown to compare favourably to its precedessors in an overview by M. Zhang and TS. P. Yum. Complete reference

JPL's Wireless Communication Reference Website 1999.