1function model = initDefaultCustom(model,
nodes)
2% This function sets a random initial state
for a QN model
3% generated by NetworkGenerator. NOTE: This
is copied directly from
4% LINE
's own version, with a slight modification to generate
5% only one initial state rather than enumerate all possible states
7sn = model.getStruct(false);
11 nodes = 1:model.getNumberOfNodes;
15 n0 = zeros(1,length(N));
16 s0 = zeros(1,length(N));
17 s = sn.nservers(sn.nodeToStation(i)); % allocate
18 for r=find(isfinite(N))
' % for all closed classes
19 if sn.nodeToStation(i) == sn.refstat(r)
25 state_i = State.fromMarginalAndStarted(sn,i,n0(:)',s0(:)
');
28 state_i = [state_i, 1:sn.nvars(i,2*R+1)];
31 switch sn.routing(i,r)
32 case {RoutingStrategy.RROBIN, RoutingStrategy.WRROBIN}
33 % start from first connected queue
34 state_i = [state_i, find(sn.rt(i,:),1)];
38 error('Default initialization failed on station %d.
',i);
40 model.nodes{i}.setState(state_i);
41 prior_state_i = zeros(1,size(state_i,1)); prior_state_i(1) = 1;
42 model.nodes{i}.setStatePrior(prior_state_i);
44 elseif sn.isstateful(i) % not a station
45 switch class(model.nodes{i})
47 state_i = zeros(1,model.getNumberOfClasses);
48 state_i = [state_i, 1:sum(model.nodes{i}.itemLevelCap)];
49 model.nodes{i}.setState(state_i);
51 model.nodes{i}.setState([1]);
53 model.nodes{i}.setState([]);
55 %error('Default initialization not available on stateful node %d.
',i);