1%{ @file sn_get_product_form_chain_params.m
2 % @brief Extracts product-form parameters aggregated by chain
4 % @author LINE Development Team
8 % @brief Extracts product-form parameters aggregated by chain
11 % This function extracts parameters from a network structure and aggregates
12 % them by chain
for use in product-form analysis methods. The mu parameter
13 % includes extra elements beyond population |N| as required by MVALDMX.
17 % [lambda,D,N,Z,mu,S,V] = sn_get_product_form_chain_params(sn)
22 % <tr><th>Name<th>Description
23 % <tr><td>sn<td>Network structure
28 % <tr><th>Name<th>Description
29 % <tr><td>lambda<td>Chain arrival rates
30 % <tr><td>D<td>Chain service demands at queuing stations
31 % <tr><td>N<td>Chain populations
32 % <tr><td>Z<td>Chain think times (service demands at delay stations)
33 % <tr><td>mu<td>Load-dependent service capacity scaling factors
34 % <tr><td>S<td>Number of servers at queuing stations
35 % <tr><td>V<td>Chain visit ratios
38function [lambda,D,N,Z,mu,S,V]= sn_get_product_form_chain_params(sn)
40[lambda,~,~,~,mu,~] = sn_get_product_form_params(sn);
41queueIndex = find(sn.nodetype == NodeType.Queue);
42delayIndex = find(sn.nodetype == NodeType.Delay);
43ignoreIndex = find(sn.nodetype == NodeType.Source | sn.nodetype == NodeType.Join);
44[Dchain,~,Vchain,~,Nchain,~,~] = sn_get_demands_chain(sn);
45lambda_chains = zeros(1,sn.nchains);
47 lambda_chains(c) = sum(lambda(sn.inchain{c}),
'omitnan');
49 %D_chains(:,c) = Dchain(find(isfinite(sn.nservers)),c)/alpha(sn.refstat(c),sn.refclass(c));
50 %Z_chains(:,c) = Dchain(find(isinf(sn.nservers)),c)/alpha(sn.refstat(c),sn.refclass(c));
52 D_chains(:,c) = Dchain(sn.nodeToStation(queueIndex),c);
53 Z_chains(:,c) = Dchain(sn.nodeToStation(delayIndex),c);
56S = sn.nservers(sn.nodeToStation(queueIndex));
57lambda = lambda_chains;
59%D_chains(sn.nodeToStation(ignoreIndex),:) =[];
60Vchain(sn.nodeToStation(ignoreIndex),:) =[];