3% joint-dependent (non-product-
form) model
4N = 16; % number of jobs
7jdmodel = Network(
'model');
8node{1} = Delay(jdmodel,
'Delay');
9node{2} = Queue(jdmodel,
'Queue1', SchedStrategy.PS);
10jobclass{1} = ClosedClass(jdmodel,
'Class1', N, node{1}, 0);
11jobclass{2} = ClosedClass(jdmodel,
'Class2', N/2, node{1}, 0);
12node{1}.setService(
jobclass{1}, Exp.fitMean(1.0)); % mean = 1
13node{1}.setService(
jobclass{2}, Exp.fitMean(2.0)); % mean = 1
14node{2}.setService(
jobclass{1}, Exp.fitMean(1.5)); % mean = 1.5
15node{2}.setService(
jobclass{2}, Exp.fitMean(2.5)); % mean = 1.5
16node{2}.setJointDependence(@(ni) min(ni(1),c), c); % NON-product-
form: rate reads the
class-1 marginal only (eta_i), shared across classes; peak rate scaling = c (Util = T*S/c)
18P = jdmodel.initRoutingMatrix();
19P{1,1} = jdmodel.serialRouting(node);
20P{2,2} = jdmodel.serialRouting(node);
23jdAvgTableCTMC=CTMC(jdmodel).getAvgTable
24jdAvgTableJD=MVA(jdmodel,
'method',
'qd').getAvgTable
25% JMT
is not solved here: the JSIM writer has no representation
for the
26% joint-dependence handle, so SolverJMT rejects the model rather than
27% silently solving it unscaled (see SolverJMT.getFeatureSet).
29model = jdmodel; %
for test compatibility