1%% Example BAS Network (Small)
2% Smaller BAS network
for faster testing
12params.M = 3; % Number of queues
13params.N = 5; % Total population
14params.f = 1; % Finite capacity queue (1-based index)
19% Number of phases per queue
22% Routing probabilities
24 0.0, 0.5, 0.5; % from queue 1
25 0.5, 0.0, 0.5; % from queue 2
26 0.5, 0.5, 0.0 % from queue 3
29% Service rates mu{i}(k,h) - completion transition rates
30params.mu = cell(3, 1);
38% Background transition rates v{i}(k,h)
41 params.v{i} = zeros(2, 2);
44%% Blocking configurations
45% MR = number of blocking configurations
48% BB(m, i) = 1
if queue i
is blocked in configuration m
50 0, 0, 0; % m=1: no blocking
51 0, 1, 0; % m=2: queue 2 blocked
52 0, 0, 1 % m=3: queue 3 blocked
55% MM(m, order) = queue index at position
'order' in blocking list
58 2, 0; % m=2: queue 2 first
59 3, 0 % m=3: queue 3 first
62% ZZ(m) = number of blocked queues in configuration m
65% ZM = maximum blocking depth
68% MM1(m, j) = extended blocking order info
75%% Solve
for minimum utilization at queue 1
76fprintf(
'====================================\n');
77fprintf(
'QRF BAS Example (Small)\n');
78fprintf(
'====================================\n');
79fprintf(
'Network: %d queues, %d jobs\n', params.M, params.N);
80fprintf(
'Finite capacity queue: %d (capacity=%d)\n', params.f, params.F(params.f));
81fprintf(
'Capacities: [%s]\n', num2str(params.F
'));
82fprintf('Phases: [%s]\n
', num2str(params.K'));
83fprintf(
'Blocking configurations: %d\n', params.MR);
86fprintf(
'--- Minimizing Utilization at Queue 1 ---\n');
87[result_min, x_min, fval_min, exitflag_min] = qrf_bas(params, 1,
'min');
89fprintf(
'\n--- Maximizing Utilization at Queue 1 ---\n');
90[result_max, x_max, fval_max, exitflag_max] = qrf_bas(params, 1,
'max');
93fprintf(
'\n====================================\n');
95fprintf(
'====================================\n');
96fprintf(
'Utilization bounds for Queue 1:\n');
97fprintf(
' Lower bound: %.6f\n', fval_min);
98fprintf(
' Upper bound: %.6f\n', fval_max);
99fprintf(
'\nAll queue utilizations (at minimum):\n');
101 fprintf(
' Queue %d: U = %.6f\n', i, result_min.U(i));