A computer program product stored in a non-transitory computer readable medium for controlling allocation of a first plurality of frequency resources among a second plurality of requesting mobile terminals, the allocation satisfying both an exclusivity constraint that each frequency resource is allocated to only one mobile terminal, and an adjacency constraint that all frequency resources allocated to any given mobile terminal are contiguous in a frequency domain, the computer program product comprising software instructions which, when run on one or more processors of a base station, causes the base station to:
- initially allocate frequency resources among the mobile terminals, based on stored channel conditions of the frequency resources as experienced by each mobile terminal, to maximize spectral efficiency, the allocation satisfying the exclusivity constraint but made without regard to the adjacency constraint;
- for each mobile terminal allocated at least one frequency resource , cluster contiguous frequency resources allocated to the mobile terminal, to generate one or more virtual resources (VR);
- and
- iteratively reallocate the VRs according to one or more predetermined rules until the resource allocation satisfies the adjacency constraint.