LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
sn_get_product_form_chain_params.m
1%{ @file sn_get_product_form_chain_params.m
2 % @brief Extracts product-form parameters aggregated by chain
3 %
4 % @author LINE Development Team
5%}
6
7%{
8 % @brief Extracts product-form parameters aggregated by chain
9 %
10 % @details
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.
14 %
15 % @par Syntax:
16 % @code
17 % [lambda,D,N,Z,mu,S,V] = sn_get_product_form_chain_params(sn)
18 % @endcode
19 %
20 % @par Parameters:
21 % <table>
22 % <tr><th>Name<th>Description
23 % <tr><td>sn<td>Network structure
24 % </table>
25 %
26 % @par Returns:
27 % <table>
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
36 % </table>
37%}
38function [lambda,D,N,Z,mu,S,V]= sn_get_product_form_chain_params(sn)
39
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);
46for c=1:sn.nchains
47 lambda_chains(c) = sum(lambda(sn.inchain{c}), 'omitnan');
48 %if sn.refclass(c)>0
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));
51 %else
52 D_chains(:,c) = Dchain(sn.nodeToStation(queueIndex),c);
53 Z_chains(:,c) = Dchain(sn.nodeToStation(delayIndex),c);
54 %end
55end
56S = sn.nservers(sn.nodeToStation(queueIndex));
57lambda = lambda_chains;
58N = Nchain;
59%D_chains(sn.nodeToStation(ignoreIndex),:) =[];
60Vchain(sn.nodeToStation(ignoreIndex),:) =[];
61D = D_chains;
62Z = Z_chains;
63
64V = Vchain;
65if isempty(Z)
66 Z = 0*N;
67end
68end
69
70