The goal for the service-controller is to find
\(m_{i}^{ref}(t)\) such that the utility function is maximized once the reference signal is realized in Δ
i
time-units, i.e., such that
u
i
(
t +Δ
i
) is maximized. In this section, it will be assumed that the utility function used is the one defined in Eq.
11; later in Section
3.3.1, it will be derived for the alternative utility function (
13). Recall that the utility function (
11) is given by
$$u_{i}(t) = a_{i}(t)\times e_{i}(t) = \frac{{s_{i}^{2}}(t)}{{s^{\text{cap}}_{i}}(t)\times r_{i}(t-d_{i}(t))}. $$
As explained in the introduction of this section, the input load is assumed to change relatively slowly over a time interval of a few milliseconds. Hence, one can approximate
$$ r_{i}(t-d_{i}(t)) \approx r_{i}(t), $$
(20)
since the goal of both the admission controller and the service controller is to keep
d
i
(
t) in the order of milliseconds or less. Therefore, it is possible to approximate the utility function with
$$u_{i}(t) \approx \frac{{s_{i}^{2}}(t)}{{s^{\text{cap}}_{i}}(t)\times r_{i}(t)}. $$
Furthermore, the service rate
s
i
(
t) can be approximated to be either at the capacity of the function,
\({s^{\text {cap}}_{i}}(t)\), or at the input rate
r
i
(
t)
$$ s_{i}(t) \approx \min\{{s^{\text{cap}}_{i}}(t),\,r_{i}(t)\}. $$
(21)
where the
\(\min \) is used since the function cannot process packets at a faster rate than what they are entering the function for a prolonged period of time. Likewise, it cannot process packets at a rate higher than the capacity of the function when the input were to be higher than this. This leads to the utility function being approximated as
$$u_{i}(t) \approx \left\{\begin{array}{lll} \frac{({s^{\text{cap}}_{i}}(t))^{2}}{{s^{\text{cap}}_{i}}(t)\times r_{i}(t)} = \frac{{s^{\text{cap}}_{i}}(t)}{r_{i}(t)},\, &\text{ if } {s^{\text{cap}}_{i}}(t) \leq r_{i}(t) \\ \frac{{r_{i}^{2}}(t)}{{s^{\text{cap}}_{i}}(t)\times r_{i}(t)} = \frac{r_{i}(t)}{{s^{\text{cap}}_{i}}(t)}, \, &\text{ else} \end{array}\right. $$
With
\({s^{\text {cap}}_{i}}(t)\) given by Eq.
3 and the average machine uncertainty
\({\hat {\xi }_{i}}(t)\) given by Eq.
4 the utility function can finally be approximated as
$$ u_{i}(t) \approx \left\{\begin{array}{lll} \frac{m_{i}(t)({\bar{s}_{i}} + {\hat{\xi}_{i}}(t))}{r_{i}(t)},\, &\text{ if } m_{i}(t)({\bar{s}_{i}} + {\hat{\xi}_{i}}(t)) \leq r_{i}(t) \\ \frac{r_{i}(t)}{m_{i}(t)({\bar{s}_{i}} + {\hat{\xi}_{i}}(t))}, \, &\text{ else} \end{array}\right. $$
(22)
Since the goal is to find
\(m_{i}^{ref}(t)\) in order to maximize
u
i
(
t +Δ
i
), one needs knowledge of
\({\hat {\xi }_{i}}(t+{\Delta }_{i})\) and
r
i
(
t +Δ
i
) which is not available. However, one can assume that the machine uncertainty will be fairly constant during Δ
i
time-units such that
\({\hat {\xi }_{i}}(t+{\Delta }_{i}) \approx {\hat {\xi }_{i}}(t)\). Furthermore, one has to estimate the future input-rate to the function. For the first function,
F
1, this can be done by using the derivative of the (preferably low-pass filtered) input-rate:
$${\hat{r}_{1}}(t) = r_{1}(t) + {\Delta}_{1}\frac{\mathrm{d}r_{1}(t)}{\mathrm{d}t}. $$
For the succeeding functions,
i = 2,…,
n, the input-rate will change in a step-wise fashion and can therefore not approximate it with the expression above. However, since
r
i
(
t) =
s
i−1(
t) and
m
i−1(
x) is known for
x ∈ [0,
t +Δ
i−1] (with
t being the current time), one could estimate the future input-rate
\({\hat {r}_{i}}(t)\) with
$${\hat{r}_{i}}(t) \approx \min \left( {s^{\text{cap}}_{i-1}}(t+{\Delta}_{i-1}),\, {\hat{r}_{i-1}}(t) \right),\quad i=2,\ldots,n. $$
Note that
\({s^{\text {cap}}_{i-1}}(t+{\Delta }_{i-1})\) is used here, instead of
\({s^{\text {cap}}_{i-1}}(t+{\Delta }_{i})\). The reason is that if Δ
i
>Δ
i−1 one does not have enough information to compute
\({s^{\text {cap}}_{i-1}}(t+{\Delta }_{i-1})\). However, one can use the assumption that Δ
i
≈Δ
i−1. Furthermore, since
$${s^{\text{cap}}_{i-1}}(t+{\Delta}_{i-1}) \approx {m^{\text{ref}}_{i-1}}(t)\times ({\bar{s}_{i-1}}+{\hat{\xi}_{i-1}}(t)) $$
one can summarize the predicted input
\({\hat {r}_{i}}(t)\) as
$$ {\hat{r}_{i}}(t)\! =\! \left\{\begin{array}{lll} r_{i}(t) + {\Delta}_{i}\frac{\mathrm{d}r_{i}(t)}{\mathrm{d}t}, & i=1 \\ \min\! \left\{ {m^{\text{ref}}_{i-1}}(t)\! \times \! ({\bar{s}_{i-1}}+{\hat{\xi}_{i-1}}(t)),\,\, {\hat{r}_{i-1}}(t) \right\}, &\text{ else} \end{array}\right. $$
(23)
The control signal, i.e., the number of instances that should be started,
\(m_{i}^{ref}(t)\) can then be found by solving
$$m_{i}^{ref}(t) = \left\{\begin{array}{ll} \arg\max\limits_{x\in \mathbb{Z}^{+}} \{x / \kappa_{i}(t) \},\, &\text{if } x \leq \kappa_{i}(t) \\ \arg\max\limits_{x\in \mathbb{Z}^{+}} \{ \kappa_{i}(t) / x \},\, &\text{else} \end{array}\right. $$
where
\(x\in \mathbb {Z}^{+}\) is the number of instances and
κ
i
(
t) given by Eq.
24. Here, one can see that the first case of the above equation is maximized when
x is as large as possible, but since this case is only valid when
x ≤
κ
i
(
t) it leads to
x = ⌊
κ
i
(
t)⌋. Similarly, the second case is maximized when
x is as small as possible, and since this case is valid for
x ≥
κ
i
(
t) it leads to
x = ⌈
κ
i
(
t)⌉, leading to the final control-law:
$$ m_{i}^{ref}(t) = \left\{\begin{array}{lll} \lfloor\kappa_{i}(t)\rfloor,\quad &\text{ if } \lfloor\kappa_{i}(t)\rfloor \lceil\kappa_{i}(t)\rceil \geq {\kappa_{i}^{2}}(t) \\ \lceil \kappa_{i}(t)\rceil,\, &\text{ else} \end{array}\right. $$
(25)
where again
\(\kappa _{i}(t) = \frac {{\hat {r}_{i}}(t)}{{\bar {s}_{i}}+{\hat {\xi }_{i}}(t)}\) is the real number of machines that is necessary to exactly match the predicted incoming traffic.
3.3.1 Alternative utility function
Using the same method described in Section
3.3, one can derive a control-law for the alternative utility function (
13):
$$\begin{array}{@{}rcl@{}} \tilde{u}_{i}(t)& =& \lambda_{i}a_{i}(t) + (1-\lambda_{i})e_{i}(t)\\ &=& \lambda_{i} \frac{s_{i}(t)}{r_{i}(t-d_{i}(t))} + (1-\lambda_{i})\frac{s_{i}(t)}{{s^{\text{cap}}_{i}}(t)}. \end{array} $$
By using the approximation (
20) for the input rate, (
21) for the service rate, (
23) for predicting the input rate, and finally (
3) for estimating the maximum capacity along with Eq.
4 for the machine uncertainty, one arrives at the following control-law:
$$m_{i}^{ref}(t) = \left\{\begin{array}{lll} \arg\max \limits_{x\in \mathbb{Z^{+}}} \left\{\lambda_{i} \frac{x}{\kappa_{i}(t)} + (1-\lambda_{i})\right\}, \quad &\text{ if } x\leq \kappa_{i}(t)\\ \arg\max\limits_{x\in\mathbb{Z^{+}}} \left\{\lambda_{i} + (1-\lambda_{i})\times \frac{\kappa_{i}(t)}{x} \right\}, &\text{ else} \end{array}\right. $$
where
\(\kappa _{i}(t) = \frac {{\hat {r}_{i}}(t)}{{\bar {s}_{i}}+{\hat {\xi }_{i}}(t)}\).
One can see that the upper case is maximized when
x is as large as possible within that case, i.e., with
x = ⌊
κ
i
(
t)⌋, while the lower case is maximized when
x is as small as possible, i.e., with
x = ⌈
κ
i
(
t)⌉. The remaining question is then which of the two cases that yield the largest utility. Fortunately, this it is easy to evaluate, resulting in the final control-law for the alternative utility function:
$$ m_{i}^{ref}(t) = \left\{\begin{array}{lll} \lfloor \kappa_{i}(t) \rfloor,\quad & \text{if } \lambda_{i}\lfloor \kappa_{i}(t) \rfloor \lceil \kappa_{i}(t) \rceil + (1-2\lambda_{i}) \kappa_{i}(t) \lceil \kappa_{i}(t) \rceil \geq (1-\lambda_{i}) {\kappa_{i}^{2}}(t) \\ \lceil \kappa_{i}(t) \rceil, &\text{else} \end{array}\right. $$
(26)
where again
\(\kappa _{i}(t) = \frac {{\hat {r}_{i}}(t)}{{\bar {s}_{i}}+{\hat {\xi }_{i}}(t)}\). Comparing the two control-laws (
25) and Eq.
26, one can see that the alternative control-law (
26) is equivalent to the Eq.
25 when the efficiency and availability are considered equally important, i.e., when
λ
i
= 1/2.