Ctmc Call Center A7B05E
1. **Problem statement:** We have a call center with two telephone lines. Calls arrive following a Poisson process with rate $\lambda > 0$ calls per minute. Each call duration is exponentially distributed with parameter $\mu > 0$. The system states are:
- State 0: no line busy
- State 1: one line busy
- State 2: both lines busy
We want to model this as a continuous-time Markov chain (CTMC), find the transition graph and matrix, and simulate the system.
2. **Transition graph and matrix:**
- From State 0:
- Arrival of a call (rate $\lambda$) moves to State 1
- From State 1:
- Arrival of a call (rate $\lambda$) moves to State 2
- Call ends (rate $\mu$) moves to State 0
- From State 2:
- Call ends (rate $2\mu$) moves to State 1
- Arrival of a call is lost (no state change)
The transition rate matrix $Q$ is:
$$
Q = \begin{pmatrix}
-\lambda & \lambda & 0 \\
\mu & -(\lambda + \mu) & \lambda \\
0 & 2\mu & -2\mu
\end{pmatrix}
$$
3. **Simulation algorithm for the CTMC:**
- Initialize state $s = 0$ and event count $n = 0$
- While $n < 50$:
1. Determine rates of possible transitions from current state $s$
2. Compute total rate $r = -Q_{ss}$
3. Sample time to next event $\Delta t$ from exponential distribution with parameter $r$
4. Choose next state based on transition probabilities $p_{s \to j} = Q_{sj}/r$
5. Update state $s$ and increment $n$
6. Record if a call is lost (when in state 2 and arrival occurs)
4. **Python simulation code:**
```python
import numpy as np
lambda_rate = 1.0 # example arrival rate
mu = 0.5 # example service rate
Q = np.array([[-lambda_rate, lambda_rate, 0],
[mu, -(lambda_rate + mu), lambda_rate],
[0, 2*mu, -2*mu]])
state = 0
n_events = 0
lost_calls = 0
while n_events < 50:
rates = Q[state].copy()
rates[state] = 0
total_rate = -Q[state,state]
if total_rate == 0:
break
dt = np.random.exponential(1/total_rate)
probs = rates / total_rate
next_state = np.random.choice([0,1,2], p=probs)
if state == 2 and next_state == 2:
lost_calls += 1
else:
state = next_state
n_events += 1
proportion_lost = lost_calls / 50
print(f"Proportion of lost calls: {proportion_lost}")
```
5. **Explanation:**
- The CTMC models the number of busy lines.
- Transitions correspond to call arrivals and call completions.
- Lost calls occur only when both lines are busy and a new call arrives.
- The simulation runs 50 events and estimates the proportion of lost calls.
**Final answer:** The transition matrix is given above, and the simulation algorithm and code estimate the lost call proportion after 50 events.