140520200849
The purpose of the exercise is to indicate the general performance characteristics of the banking information processing system.
The following formulas come from the study: Hillier F.S., Lieberman G.J. Instruction of Operation Research. New York: McGrew Hill 1990 oraz Z. Jędrzejczyk, K.Kukuła, J.Skrzypek, A. Walkosz Badania operacyjne w przykładach i zadaniach, Wydawnictwo Naukowe PWN
Arrival rate: λ
These are transactions arriving within a minute. It is a stream of transaction orders sent from bank customers sent online.
import numpy as np
np.random.seed(148)
Λ1 = (np.random.random_sample(2354)*4690)
Λ2 = (np.random.random_sample(4899)*2319)
Λ3 = (np.random.random_sample(3511)*5491)
a1= sum(Λ1)
p1= len(Λ1)
λ1 = 1/(p1/a1)
a2= sum(Λ2)
p2= len(Λ2)
λ2 = 1/(p2/a2)
a3= sum(Λ3)
p3= len(Λ3)
λ3 = 1/(p3/a3)
print('Number of transactions: ', p1)
print('Sume of transactions time: print('Arrival_λ1: print('-----------------------------------------------')
print('Number of transactions: ', p2)
print('Sume of transactions time: print('Arrival_λ2: print('-----------------------------------------------')
print('Number of transactions: ', p3)
print('Sume of transactions time: print('Arrival_λ3: print('-----------------------------------------------')
Service rate: μ
This parameter represents the execution time of individual banking transactions by the banking transaction system.Each of the three data centers has a number of servers. A single server is treated as an individual information flow channel.
r1 = 5
r2 = 6
r3 = 8
np.random.seed(148)
M1 = (np.random.random_sample(2354)*959)
M2 = (np.random.random_sample(4899)*790)
M3 = (np.random.random_sample(3511)*903)
a1= sum(M1)
p1= len(M1)
μ1 = 1/(p1/a1)
a2= sum(M2)
p2= len(M2)
μ2 = 1/(p2/a2)
a3= sum(M3)
p3= len(M3)
μ3 = 1/(p3/a3)
print('Number of transactions: ', p1)
print('Sume of service time: print('Service_μ: print('-----------------------------------------------')
print('Number of transactions: ', p2)
print('Sume of service time: print('Service_μ: print('-----------------------------------------------')
print('Number of transactions: ', p3)
print('Sume of service time: print('Service_μ: print('-----------------------------------------------')
Traffic intensity: ϱ
Traffic intensity is the ratio of arrival rate to service rate.
\bbox[#f3f3f3,12px,border:1px solid black] {
{ϱ}=\frac{λ}{{μ}*r}
} \qquad (1)
$$
ϱ1 = λ1/(μ1*r1)
if ϱ1 >= 1:
print("The system is unstable, we do not carry out further calculations!")
print('Arrival rate λ1 > service rate μ1, ϱ1= else:
print("The system is stable, you can calculate the probabilities!")
print('Arrival rate λ1 > service rate μ1')
print('Arrival rate λ1: print('Service rate μ1: print('Traffic intensity ϱ1: ϱ2 = λ2/(μ2*r2)
if ϱ2 >= 1:
print("The system is unstable, we do not carry out further calculations!")
print('Arrival rate λ2 > service rate μ2 ,ϱ2= else:
print("The system is stable, you can calculate the probabilities!")
print('Arrival rate λ2 > service rate μ2')
print('Arrival rate λ2: print('Service rate μ2: print('Traffic intensity ϱ2: ϱ3 = λ3/(μ3*r3)
if ϱ3 >= 1:
print("The system is unstable, we do not carry out further calculations!")
print('Arrival rate λ3 > service rate μ3, ϱ3= else:
print("The system is stable, you can calculate the probabilities!")
print('Arrival rate λ3 > service rate μ3')
print('Arrival rate λ3: print('Service rate μ3: print('Traffic intensity ϱ3:
Multiple service channel
$\begin{align}
λ < rμ &&\text{where r is the number of service channels} \tag 5\\
\end{align}$
\bbox[#f3f3f3,12px,border:1px solid black] {
p(n=0) = \displaystyle\frac{1}{sum_{n=1}^\infty}
} \qquad (6)
$$
The probability that there are no queues at r service stations.
\bbox[#f3f3f3,12px,border:1px solid black] {
p(n=0) =\frac{1}{\displaystyle\sum_{i=0}^{r-1} \frac{?^i}{i!}+\frac{?^r}{{\left(r-{?}\right)}{\left(r-1\right)!}}}
} \qquad (7)
$$
\bbox[#f3f3f3,12px,border:1px solid black] {
ψ =\frac{{?^{r+1}{p(n=0)}}}{{(r-?)}^2{(r-1)!}}
} \qquad (8)
$$
\bbox[#f3f3f3,12px,border:1px solid black] {p(n) =\begin{cases}
\frac{{ψ^n}{p(n=0)}}{n!}, & \text{if $n\le r$}
\frac{{r^{r-n}}{ψ^n}{p(n=0)}}{r!}, & \text{if $n\gt r$}
\end{cases}
} \qquad (9)
$$
The probability that the system has more than zero elements and elements is more than r channels.
\bbox[#f3f3f3,12px,border:1px solid black] {
p(n>n_0) =\frac{{r^{r-n_{0}}}{?^{n_{0}+1}}{p(n=0)}}{(r-{?})r!}
} \qquad (10)
$$
\bbox[#f3f3f3,12px,border:1px solid black] {
p(t>t_0) ={{p{(n>r-1)}}{e^{μt(r-ψ)}}}
} \qquad (11)
$$
λ=λ1
μ=μ1
r=r1
We check for inequality:
λ<rμ
print('Arrival rate λ: print('Service rate μ: ϱ = λ/(r*μ)
print('Traffic intensity ϱ:
if ϱ > 1:
print("The system is unstable, we do not carry out further calculations!")
print('Arrival rate λ > split service rate μ')
else:
print("The system is stable, you can calculate the probabilities!")
print('Arrival rate λ > split service rate μ')
def factorial(n):
return 1 if (n==1 or n==0) else n * factorial(n - 1);
Since there are two airports, the time to accept the plane is 2*μ
Probability of no queues, pattern no. 7
$${
p(n=0) =\frac{1}{\displaystyle\sum_{i=0}^{r-1} \frac{?^i}{i!}+\frac{?^r}{{\left(r-{?}\right)}{\left(r-1\right)!}}}
}\qquad (7)$$
p7=1/((1+ϱ)+(((ϱ**r)/((r-ϱ)*factorial(r-1)))))
print('Probability of no queues ?(?=0)≈
Probability that you will have to wait in queue, template no. 10¶
$${
p(n>n_0) =\frac{{r^{r-n_{0}}}{?^{n_{0}+1}}{p(n=0)}}{(r-{?})r!}
} \qquad (10)$$
if ϱ > 1:
print("The system is unstable, we do not carry out further calculations!")
print('Arrival rate λ > split service rate μ')
else:
n0 = 1
p10 = ((r**(r-n0))*(?**(n0+1))*p7)/((r-?)*factorial(r))
print('Probability to wait in queue ?(?>?0)≈
Probability of two items in the queue: $p(n>2)$ where $n_0 =2$¶
n0 = 2
if ϱ > 1:
print("The system is unstable, we do not carry out further calculations!")
print('Arrival rate λ > split service rate μ')
else:
n0 = 2
p11 = ((r**(r-n0))*(?**(n0+1))*p7)/((r-?)*factorial(r))
print('Probability of two items in the queue: ?(?>2)≈
The probability that the item will have to queue over k minutes: $p(t>?_0)$¶
$${
p(n>n_0) =frac{{r^{r-n_{0}}}{?^{n_{0}+1}}{p(n=0)}}{(r-{?})r!}
} qquad (10)$$$${
p(t>t_0) ={{p{(n>r-1)}}{e^{μt(r-ψ)}}}
} qquad (11)
$$
## time in minutes
t0=0.05
t0=t0/60
print('n - unspecified number of units in the queue')
print('number of channels r =', r)
$ p(n>r-1) = p(n>1)$
equation ⟹ 10 for $p(n>1)$
n0=1
p12 = ((r**(r-n0))*(?**(n0+1))*p7)/((r-?)*factorial(r))
p12
# wzór 11
if ϱ > 1:
print("The system is unstable, we do not carry out further calculations!")
print('Arrival rate λ > split service rate μ')
else:
p13 = p12*(np.e**(-μ*t0*(r-?)))
print('The probability that the item will have to queue over n minutes: ?(?>?0)≈
What is the average number of transactions waiting?!¶
${
ψ =\frac{{?^{r+1}{p(n=0)}}}{{(r-?)}^2{(r-1)!}}
} \qquad (8)$
if ϱ > 1:
print("The system is unstable, we do not carry out further calculations!")
print('Arrival rate λ > split service rate μ')
else:
p14 = ((?**(r+1))*p7)/(((r-?)**2)*factorial(r-1))
print('The average number of items waiting ψ ≈
def queueing_test(λ,μ,r):
def factorial(n):
return 1 if (n==1 or n==0) else n * factorial(n - 1);
print("-----------------------------------------------------------------------")
print('Arrival rate λ: print('Service rate μ: ϱ = λ/(μ*r)
print('Traffic intensity ϱ: print("-----------------------------------------------------------------------")
if ϱ > 1:
print("The system is unstable, we do not carry out further calculations!")
print('Arrival rate λ > split service rate μ')
else:
print("The system is stable, you can calculate the probabilities!")
print('Arrival rate λ > split service rate μ')
print("-----------------------------------------------------------------------")
p7=1/((1+ϱ)+(((ϱ**r)/((r-ϱ)*factorial(r-1)))))
print('P7 Probability of no queues ?(?=0)≈ print("-----------------------------------------------------------------------")
n0 = 2
p11 = ((r**(r-n0))*(?**(n0+1))*p7)/((r-?)*factorial(r))
print('P11 Probability of two items in the queue: ?(?>2)≈ print("-----------------------------------------------------------------------")
n0=1
p12 = ((r**(r-n0))*(?**(n0+1))*p7)/((r-?)*factorial(r))
## time in minutes
t1=0.0165 ## 1 SEKUNDA PRZESTÓJ
t1=t1/60
p13A = p12*(np.e**(-μ*t1*(r-?)))
print('P13 The probability that the item will have to queue over 1.0 SEC: ?(?>?0)≈ ## time in minutes
t0=0.05 ## 3 SEKUNDY PRZESTÓJ
t0=t0/60
p13B = p12*(np.e**(-μ*t0*(r-?)))
print('P13 The probability that the item will have to queue over 3.0 SEC: ?(?>?0)≈ ## time in minutes
t2=0.0834 ## 5 SEKUNDA PRZESTÓJ
t2=t2/60
p13C = p12*(np.e**(-μ*t2*(r-?)))
print('P13 The probability that the item will have to queue over 5.0 SEC: ?(?>?0)≈ print("-----------------------------------------------------------------------")
p14 = ((?**(r+1))*p7)/(((r-?)**2)*factorial(r-1))
print('P14 The average number of items waiting ψ ≈ print("-----------------------------------------------------------------------")
First server room
queueing_test(λ1,μ1,r1)
Second server room
queueing_test(λ2,μ2,r2)
Third server room
queueing_test(λ3,μ3,r3)
As you can see above, we tested the performance of three bank information processing centers. The probability of no queue in the first center is p7 = 50% even though the traffic intensity ϱ indicator is there as much as 98%, in the second p = 67% and in the third p7 = 57% even though the traffic intensity ϱ there is less than 0.76 there. The difference is even better between the first and third IT center in the category of probability of waiting time for a transaction for 1 second, 3 and 5 seconds.