LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
example_rsrd.m
1%% Example RS-RD Network
2% MATLAB port of example_rsrd.mod
3% RS-RD network with 20 jobs and 5 queues
4
5clear;
6clc;
7
8%% Define parameters
9params = struct();
10
11% Network size
12params.M = 5; % Number of queues
13params.N = 20; % Total population
14
15% Queue capacities
16params.F = [5; 5; 5; 5; 5];
17
18% Number of phases per queue
19params.K = [2; 2; 2; 2; 2];
20
21% Routing probabilities
22params.r = [
23 0.0, 0.5, 0.0, 0.0, 0.5; % from queue 1
24 0.5, 0.0, 0.5, 0.0, 0.0; % from queue 2
25 0.0, 0.5, 0.0, 0.5, 0.0; % from queue 3
26 0.0, 0.0, 0.5, 0.0, 0.5; % from queue 4
27 0.5, 0.0, 0.0, 0.5, 0.0 % from queue 5
28];
29
30% Service rates mu{i}(k,h) - completion transition rates
31% Each mu{i} is a K(i) x K(i) matrix
32params.mu = cell(5, 1);
33for i = 1:5
34 params.mu{i} = [
35 1.016186e+00, 2.585708e-05;
36 1.569888e-03, 1.413298e-02
37 ];
38end
39
40% Background transition rates v{i}(k,h)
41% Each v{i} is a K(i) x K(i) matrix
42params.v = cell(5, 1);
43for i = 1:5
44 params.v{i} = zeros(2, 2);
45end
46
47% Load-dependent rates alpha{i}(n) - default is 1 for all
48% (not specified in example, so using default)
49
50%% Solve for minimum utilization at queue 1
51fprintf('====================================\n');
52fprintf('QRF RS-RD Example\n');
53fprintf('====================================\n');
54fprintf('Network: %d queues, %d jobs\n', params.M, params.N);
55fprintf('Capacities: [%s]\n', num2str(params.F'));
56fprintf('Phases: [%s]\n', num2str(params.K'));
57fprintf('\n');
58
59fprintf('--- Minimizing Utilization at Queue 1 ---\n');
60[result_min, x_min, fval_min, exitflag_min] = qrf_rsrd(params, 1, 'min');
61
62fprintf('\n--- Maximizing Utilization at Queue 1 ---\n');
63[result_max, x_max, fval_max, exitflag_max] = qrf_rsrd(params, 1, 'max');
64
65%% Summary
66fprintf('\n====================================\n');
67fprintf('SUMMARY\n');
68fprintf('====================================\n');
69fprintf('Utilization bounds for Queue 1:\n');
70fprintf(' Lower bound: %.6f\n', fval_min);
71fprintf(' Upper bound: %.6f\n', fval_max);
72fprintf('\nAll queue utilizations (at minimum):\n');
73for i = 1:params.M
74 fprintf(' Queue %d: U = %.6f\n', i, result_min.U(i));
75end