LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
example_bas_small.m
1%% Example BAS Network (Small)
2% Smaller BAS network for faster testing
3% 3 queues, 5 jobs
4
5clear;
6clc;
7
8%% Define parameters
9params = struct();
10
11% Network size
12params.M = 3; % Number of queues
13params.N = 5; % Total population
14params.f = 1; % Finite capacity queue (1-based index)
15
16% Queue capacities
17params.F = [3; 5; 5];
18
19% Number of phases per queue
20params.K = [2; 2; 2];
21
22% Routing probabilities
23params.r = [
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
27];
28
29% Service rates mu{i}(k,h) - completion transition rates
30params.mu = cell(3, 1);
31for i = 1:3
32 params.mu{i} = [
33 1.0, 0.1;
34 0.1, 0.5
35 ];
36end
37
38% Background transition rates v{i}(k,h)
39params.v = cell(3, 1);
40for i = 1:3
41 params.v{i} = zeros(2, 2);
42end
43
44%% Blocking configurations
45% MR = number of blocking configurations
46params.MR = 3;
47
48% BB(m, i) = 1 if queue i is blocked in configuration m
49params.BB = [
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
53];
54
55% MM(m, order) = queue index at position 'order' in blocking list
56params.MM = [
57 0, 0; % m=1
58 2, 0; % m=2: queue 2 first
59 3, 0 % m=3: queue 3 first
60];
61
62% ZZ(m) = number of blocked queues in configuration m
63params.ZZ = [0; 1; 1];
64
65% ZM = maximum blocking depth
66params.ZM = 1;
67
68% MM1(m, j) = extended blocking order info
69params.MM1 = [
70 0, 0, 0; % m=1
71 0, 0, 0; % m=2
72 0, 0, 0 % m=3
73];
74
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);
84fprintf('\n');
85
86fprintf('--- Minimizing Utilization at Queue 1 ---\n');
87[result_min, x_min, fval_min, exitflag_min] = qrf_bas(params, 1, 'min');
88
89fprintf('\n--- Maximizing Utilization at Queue 1 ---\n');
90[result_max, x_max, fval_max, exitflag_max] = qrf_bas(params, 1, 'max');
91
92%% Summary
93fprintf('\n====================================\n');
94fprintf('SUMMARY\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');
100for i = 1:params.M
101 fprintf(' Queue %d: U = %.6f\n', i, result_min.U(i));
102end