1function model = json_classcap_droprule()
2% Open 2-
class network with per-class capacity, drop rules, and load-dependence.
3model = Network(
'ClassCap_DropRule');
5source = Source(model,
'Source');
6queue = Queue(model,
'Queue', SchedStrategy.PS);
7sink = Sink(model,
'Sink');
9queue.setNumberOfServers(2);
12class1 = OpenClass(model,
'Class1');
13class2 = OpenClass(model,
'Class2');
15source.setArrival(class1, Exp(1));
16source.setArrival(class2, Exp(0.5));
17queue.setService(class1, Exp(3));
18queue.setService(class2, Exp(2));
21queue.classCap(class1.index) = 8;
22queue.classCap(class2.index) = 15;
24% Per-
class drop rules. WAITQ
is not usable here: no solver honours "wait
25% upstream" for an open class at a plain finite capacity (CTMC drops the
26% arrival, JMT blocks at the source and ignores the cap), so refreshCapacity
27% rejects that combination. BAS
is the honoured blocking policy.
28queue.setDropRule(class1, DropStrategy.DROP);
29queue.setDropRule(class2, DropStrategy.BAS);
31% Load-dependent scaling
32queue.setLoadDependence([1.0, 0.9, 0.8, 0.7]);
34P = model.initRoutingMatrix();
35P{class1} = Network.serialRouting(source, queue, sink);
36P{class2} = Network.serialRouting(source, queue, sink);