LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
SensitivityData.m
1classdef SensitivityData < handle
2 % SensitivityData Analytic performance sensitivities for a product-form
3 % model, mirroring native-Python compute_model_sensitivities: metric kind
4 % ('RespT'|'QLen'|'Tput'|'Util') -> metric key -> parameter key ->
5 % d(metric)/d(parameter). Keys are canonical strings: a metric key is
6 % 'station' (Util) or 'station||class'; a parameter key is
7 % 'rate||station||class'. Backed by nested containers.Map.
8
9 properties
10 data % Map kind -> (Map metricKey -> (Map paramKey -> value))
11 end
12
13 methods
14 function obj = SensitivityData()
15 obj.data = containers.Map('KeyType', 'char', 'ValueType', 'any');
16 end
17
18 function add(obj, kind, metricKey, paramKey, value)
19 if ~isKey(obj.data, kind)
20 obj.data(kind) = containers.Map('KeyType', 'char', 'ValueType', 'any');
21 end
22 byMetric = obj.data(kind);
23 if ~isKey(byMetric, metricKey)
24 byMetric(metricKey) = containers.Map('KeyType', 'char', 'ValueType', 'double'); %#ok<NASGU>
25 end
26 byParam = byMetric(metricKey);
27 if isKey(byParam, paramKey)
28 byParam(paramKey) = byParam(paramKey) + value;
29 else
30 byParam(paramKey) = value;
31 end
32 end
33
34 function m = forKind(obj, kind)
35 if isKey(obj.data, kind), m = obj.data(kind); else, m = []; end
36 end
37
38 function tf = isempty(obj)
39 tf = (obj.data.Count == 0);
40 end
41 end
42
43 methods (Static)
44 function k = metricKey(station, jobclass)
45 k = [station '||' jobclass];
46 end
47 function k = paramKey(station, jobclass)
48 k = ['rate||' station '||' jobclass];
49 end
50 end
51end