LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
ld_class_dependence.m
1clear node jobclass
2
3% class-dependent (product-form) model.
4% Each class sees a service-rate scaling beta_{i,r} that depends ONLY on its
5% own per-class population n_{i,r} at the station. This is the BCMP
6% product-form case of QD-AMVA (Casale, Perez, Wang, IFIP PERFORMANCE 2015):
7% D_{i,r}(n) = theta_{i,r} * beta_{i,r}(n_{i,r}). The handle returns a length-R
8% vector [beta_{i,1}(n), beta_{i,2}(n)], of which the solver picks class r.
9% Contrast ld_joint_dependence.m, where the scalar min(ni(1),c) reads a foreign
10% class marginal and is therefore non-product-form (setJointDependence).
11N = 16; % number of jobs
12c = 2;
13%%
14cdmodel = Network('model');
15node{1} = Delay(cdmodel, 'Delay');
16node{2} = Queue(cdmodel, 'Queue1', SchedStrategy.PS);
17jobclass{1} = ClosedClass(cdmodel, 'Class1', N, node{1}, 0);
18jobclass{2} = ClosedClass(cdmodel, 'Class2', N/2, node{1}, 0);
19node{1}.setService(jobclass{1}, Exp.fitMean(1.0)); % mean = 1
20node{1}.setService(jobclass{2}, Exp.fitMean(2.0)); % mean = 2
21node{2}.setService(jobclass{1}, Exp.fitMean(1.5)); % mean = 1.5
22node{2}.setService(jobclass{2}, Exp.fitMean(2.5)); % mean = 2.5
23% beta_{i,r}(n_{i,r}): class 1 scales up to c servers with its OWN count, class
24% 2 is always single-server. Both entries read only their own marginal, so the
25% demands satisfy the product-form recurrence. Peak rate scaling [c 1] per
26% class normalizes Util = T*S/peak.
27node{2}.setClassDependence(@(ni) [min(ni(1),c), 1], [c 1]);
28
29P = cdmodel.initRoutingMatrix();
30P{1,1} = cdmodel.serialRouting(node);
31P{2,2} = cdmodel.serialRouting(node);
32cdmodel.link(P);
33
34cdAvgTableCTMC=CTMC(cdmodel).getAvgTable
35cdAvgTableCD=MVA(cdmodel,'method','qd').getAvgTable
36% JMT is not solved here: the JSIM writer has no representation for the
37% class-dependence handle, so SolverJMT rejects the model rather than
38% silently solving it unscaled (see SolverJMT.getFeatureSet).
39
40model = cdmodel; % for test compatibility