LINE Solver
MATLAB API documentation
Loading...
Searching...
No Matches
refreshRates.m
1function [rates, scv, hasRateChanged, hasSCVChanged] = refreshRates(self, statSet, classSet)
2% [RATES, SCV] = REFRESHRATES()
3
4% Copyright (c) 2012-2026, Imperial College London
5% All rights reserved.
6
7hasRateChanged = false;
8hasSCVChanged = false;
9M = getNumberOfStations(self);
10K = getNumberOfClasses(self);
11if nargin<2
12 statSet = 1:M;
13 classSet = 1:K;
14 rates = zeros(M,K);
15 scv = nan(M,K);
16 hasRateChanged = true;
17 hasSCVChanged = true;
18elseif nargin==2
19 classSet = 1:K;
20 rates = self.sn.rates;
21 scv = self.sn.scv;
22 rates_orig = self.sn.rates;
23 scv_orig = self.sn.scv;
24elseif nargin==3 % this is used only to update self.sn
25 % we are only updating selected stations and classes so use the
26 % existing ones for the others
27 rates = self.sn.rates;
28 scv = self.sn.scv;
29 rates_orig = self.sn.rates;
30 scv_orig = self.sn.scv;
31end
32hasOpenClasses = self.hasOpenClasses;
33
34stations = self.stations;
35% determine rates
36for i=statSet
37 station_i = stations{i};
38 for r=classSet
39 switch station_i.server.className
40 case 'ServiceTunnel'
41 % do nothing
42 switch class(station_i)
43 case 'Source'
44 if isempty(station_i.input.sourceClasses{r})
45 rates(i,r) = NaN;
46 scv(i,r) = NaN;
47 else
48 distr = station_i.input.sourceClasses{r}{end};
49 rates(i,r) = distr.getRate();
50 scv(i,r) = distr.getSCV();
51 end
52 case 'Join'
53 rates(i,r) = Inf;
54 scv(i,r) = 0;
55 case 'Place'
56 rates(i,r) = NaN;
57 scv(i,r) = NaN;
58 %Draft SPN code:
59 %rates(i,r) = 1;
60 %scv(i,r) = 0;
61 end
62 otherwise
63 if ~hasOpenClasses || i ~= self.getIndexSourceStation
64 if isempty(station_i.server.serviceProcess{r})
65 rates(i,r) = NaN;
66 scv(i,r) = NaN;
67 else
68 distr = station_i.server.serviceProcess{r}{end};
69 rates(i,r) = distr.getRate();
70 scv(i,r) = distr.getSCV();
71 end
72 end
73 end
74 end
75end
76
77if ~hasRateChanged
78 if any((abs(rates-rates_orig)>0))
79 hasRateChanged = true;
80 end
81end
82
83if ~hasSCVChanged
84 if any((abs(scv-scv_orig)>0))
85 hasSCVChanged = true;
86 end
87end
88
89%if ~isempty(self.sn)
90 if hasRateChanged
91 self.sn.rates = rates;
92 end
93 if hasSCVChanged
94 self.sn.scv = scv;
95 end
96%end
97
98end