5G NR Scheduling Strategies Seem to Behave Similarly
5 views (last 30 days)
Show older comments
I'm testing BestCQI, RoundRobin, and ProportionalFair schedulers using MATLAB's 5G/NRPlugCustomSchedulerExample with 4 UEs (full buffer, MaxNumUsersPerTTI=4), but all three produce similar resource share plots that look like round robin. For BestCQI, I expected UEs with better CQI (in this case UE-1 and UE-2) to get more resources, but they don't - however, when I set MaxNumUsersPerTTI=2, only the two UEs (UE-1and UE-2) get scheduled as expected. Is this correct behavior where or am I missing something here?
Resource Share Plot when MaxNumUsersPerTTI=4:

Resource Share Plot when MaxNumUsersPerTTI=2:

This is the script:
ng("default") % Reset the random number generator
numFrameSimulation = 30; % Simulation time in terms of number of 10 ms frames
networkSimulator = wirelessNetworkSimulator.init;
gNB = nrGNB(Position=[0 0 10],DuplexMode="FDD",CarrierFrequency=2.6e9,ChannelBandwidth=5e6,SubcarrierSpacing=15e3,ReceiveGain=11, NumTransmitAntennas=16,NumReceiveAntennas=8,SRSPeriodicityUE=40);
configureScheduler(gNB, Scheduler='BestCQI', ResourceAllocationType=1, MaxNumUsersPerTTI=4);
numUEs = 4;
uePositions = [100 0 3; 250 0 3; 700 0 3; 750 0 3];
ueNames = "UE-" + (1:size(uePositions,1));
UEs = nrUE(Name=ueNames,Position=uePositions);
connectUE(gNB,UEs(ordinaryUEsStartIndex:numUEs),CSIReportPeriodicity=10, FullBufferTraffic="on"
addNodes(networkSimulator,gNB);
addNodes(networkSimulator,UEs));
% Model an urban macro scenario, as defined in the 3GPP TR 38.901 channel
% model, using the h38901Channel object.
% Define scenario boundaries
pos = reshape([gNB.Position UEs.Position],3,[]);
minX = min(pos(1,:)); % x-coordinate of the left edge of the scenario in meters
minY = min(pos(2,:)); % y-coordinate of the bottom edge of the scenario in meters
width = max(pos(1,:)) - minX; % Width (distance from left to right edge of the 2-D scenario) in meters, given as maxX - minX
height = max(pos(2,:)) - minY; % Height (distance from bottom to top edge of the 2-D scenario) in meters, given as maxY - minY
% Create the channel model
channel = h38901Channel(Scenario="UMa",ScenarioExtents=[minX minY width height]);
% Add the channel model to the simulator
addChannelModel(networkSimulator,@channel.channelFunction)
% Connect the simulator and channel model
connectNodes(channel,networkSimulator);
% Create an object to log scheduler traces
simSchedulingLogger = helperNRSchedulingLogger(numFrameSimulation,gNB,UEs);
% Create an object to log PHY traces
simPhyLogger = helperNRPhyLogger(numFrameSimulation,gNB,UEs);
% Calculate the simulation duration (in seconds)
simulationTime = numFrameSimulation * 1e-2;
% Run the simulation
run(networkSimulator,simulationTime);
0 Comments
Accepted Answer
Sameer
on 9 Jul 2025
Hi @Arman
When "MaxNumUsersPerTTI" is set to 4 (same as the number of UEs), the scheduler is allowed to serve all UEs in every slot. Even though BestCQI prioritizes UEs with better CQI, it doesn’t need to exclude anyone—so all UEs end up getting resources, and the resource share appears uniform, similar to RoundRobin.
However, when you set "MaxNumUsersPerTTI" = 2, the scheduler can only pick 2 UEs per TTI. In this case, BestCQI chooses the UEs with the highest CQI (UE-1 and UE-2), which is why they dominate the resource share—this reflects the expected behavior of the BestCQI policy.
In short, BestCQI only shows a clear preference when it has to choose between more UEs than it can serve in a slot. If all UEs can be scheduled, it won't drop any, so the result looks fair regardless of CQI differences.
Hope this helps!
0 Comments
More Answers (0)
See Also
Categories
Find more on System-Level Simulation in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!