Scheduling

../../_images/scheduling_api.png

Since the spectrum is shared among multiple users, resources must be allocated in a fair and efficient manner. On the one hand, it is desirable to allocate resources uniformly across users. On the other hand, in the presence of fading, it is crucial to schedule users when their channel conditions are favorable.

The proportional fairness (PF) scheduler achieves both objectives by maximizing the sum of logarithms of the long-term throughputs T(u) across the users u=1,2,:

maxulogT(u).

For a usage example of user scheduling in Sionna, refer to the Proportional Fairness Scheduler notebook.

class sionna.sys.PFSchedulerSUMIMO(num_ut, num_freq_res, num_ofdm_sym, batch_size=None, num_streams_per_ut=1, beta=0.98, precision=None)[source]

Schedules users according to a proportional fairness (PF) metric in a single-user (SU) multiple-input multiple-output (MIMO) system, i.e., at most one user is scheduled per time-frequency resource.

Fixing the time slot t, R~t(u,i) is the achievable rate for user u on the time-frequency resource i during the current slot. Let Tt1(u) denote the throughput achieved by user u up to and including slot t1. Resource i is assigned to the user with the highest PF metric, as defined in [Jalali00]:

argmaxuR~t(u,i)Tt1(u).

All streams within a scheduled resource element are assigned to the selected user.

Let Rt(u) be the rate achieved by user u in slot t. The throughput T by each user u is updated via geometric discounting:

Tt(u)=βTt1(u)+(1β)Rt(u)

where β(0,1) is the discount factor.

Parameters:
  • num_ut (int) – Number of user terminals

  • num_freq_res (int) – Number of available frequency resources. A frequency resource is the smallest frequency unit that can be allocated to a user, typically a physical resource block (PRB).

  • num_ofdm_sym (int) – Number of OFDM symbols in a slot

  • batch_size (list | int | None (default)) – Batch size or shape. It can account for multiple sectors in which scheduling is performed simultaneously. If None, the batch size is set to [].

  • num_streams_per_ut (int (default: 1)) – Number of streams per user

  • beta (float (default: 0.98)) – Discount factor for computing the time-averaged achieved rate. Must be within (0,1).

  • precision (None (default) | “single” | “double”) – Precision used for internal calculations and outputs. If set to None, precision is used.

Input:
  • rate_last_slot ([batch_size, num_ut]) – Rate achieved by each user in the last slot

  • rate_achievable_curr_slot ([batch_size, num_ofdm_sym, num_freq_res, num_ut], tf.float) – Achievable rate for each user across the OFDM grid in the current slot

Output:

is_scheduled ([batch_size, num_ofdm_sym, num_freq_res, num_ut, num_streams_per_ut], tf.bool) – Whether a user is scheduled for transmission for each available resource

property beta

Get/set the discount factor for computing the time-averaged achieved rate. Must be within (0,1).

Type:

float

property pf_metric

Proportional fairness (PF) metric in the last slot

Type:

[batch_size, num_ofdm_sym, num_freq_res, num_ut], tf.float (read-only)

property rate_achieved_past

β-discounted time-averaged achieved rate for each user

Type:

[batch_size, num_ut], tf.float (read-only)

References:

[Jalali00]

A. Jalali, R. Padovani, R. Pankaj, “Data throughput of CDMA-HDR a high efficiency-high data rate personal communication wireless system.” VTC2000-Spring. 2000 IEEE 51st Vehicular Technology Conference Proceedings. Vol. 3. IEEE, 2000.