## 4 Improved Adaptive Backoff Algorithm (I-ABA)
### Markov-Based Mathematical Model for I-ABA
Probability of Collision The following expression gives the probability of experiencing packet collisions: \[P_{C}\ =\ 1-(1-\tau)^{N-1}.\] (4)
2. Channel Utilization The channel utilization (\(U\)) parameter measures how efficiently I-ABA utilizes the wireless communication channel to transmit packets successfully. Based on the Markov model in Figure 3, we can express \(U\) in the following manner: \[U\ =\ NL\tau(1-\alpha)(1-\beta)(1-\tau)^{N-1}.\] (5)
3. Channel Idle Time The channel idle time (\(T_{idle}\)) parameter measures the percentage of time in which the wireless communication channel is free of transmissions or collisions. \(T_{idle}\) is indicative of the percentage of time in which all nodes are either in backoff or CCA stages; therefore, the access protocol should lower its value. In Table 1, we have defined \(\alpha\) to be the probability of finding the medium busy during CCA1. As such, we can define \(T_{idle}\) to be the complement of \(\alpha\). Therefore, \(T_{idle}\) is mathematically expressed as follows: \[T_{idle}\ =\ 1-\alpha.\] (6)
4. Channel Collision Time The channel collision time (\(T_{collision}\)) parameter measures the percentage of time in which the wireless communication channel is busy due to collisions. Collisions prevent nodes from utilizing the wireless channel. We should aim to lower \(T_{collision}\) to minimize the portion of time the wireless channel is wasted with useless activities. Based on (5) and (6), we can express \(T_{collision}\) as follows: \[T_{collision}\ =\ 1-U-T_{idle}\ =\ \alpha-NL\tau(1-\alpha)(1-\beta)(1-\tau)^{N-1}.\] (7)
5. Delay We define delay (\(D\)) to be the meantime needed to transmit a packet successfully, and it is defined as follows: \[D\ =\ \frac{1}{\pi_{SC}}\overline{T}_{BO}+\frac{\pi_{BC}}{\pi_{SC}}\overline{T}_{CCA }+\bigg{(}1+\frac{\pi_{CC}}{\pi_{SC}}\bigg{)}(2+L).\] (8)
6. Reliability Reliability (\(R\)) refers to the probability of delivering a packet successfully. Computing R requires knowledge of the number of successfully transmitted packets (\(n_{s}\)), the number of medium access failures (\(n_{af}\)), and the number of collision failures (\(n_{cf}\)). The full detailsof finding these numbers are found in our previous work in [11]. Therefore, \(R\) can be expressed as follows:  
\[R\ =\ \frac{n_{s}}{n_{s}+n_{af}+n_{cf}}.\]  
The mathematical derivation of the metric leads to the following expression:  
\[R\ =\ \frac{1}{1+\frac{(1-x)x^{m+1}}{\left(1-x^{m+1}\right)(1-x-y)}+\frac{y^{m+1 }}{\left(1-x\right)^{m+1}-y^{m+1}}}. \tag{9}\]  
G. Average Energy Consumption  
The average energy consumed while sending unacknowledged traffic can be computed using the following expression:  
Figure 5:0  
where \(V_{tho}\) is the predicted theoretical value by the Markov-based model, \(V_{sim}\) is the simulated value, \(\overline{V}\) is the average of the observed values, and \(n_{sample}\) is the total number of the sample values used. An accurate theoretical model should achieve low values for CV (RMSD). Figure 5:1 Probability of collision against the size of the network. Figure 5:2 Channel utilization against the size of the network. Figure 5:3 Channel idle time against the size of the network. Figure 5:4 Transmission delay against the size of the network. Figure 5:5 Channel collision time against the size of the network. Figure 5:6 Reliability against the size of the network. Figure 5:7 Average energy consumption against the size of the network. Figure 5:8 Average energy wasted in collision against the size of the network. Table 2 shows the CV(RMSD) values for all parameters in Figures 6-13. The table shows the difference between the two simulation tools (J_Sim/C_Sim), the Java-based simulator and MATLAB (J_Sim/Theoretical), and the C-based simulator and MATLAB (C_Sim/Theoretical). It is fairly evident in this table that the CV(RMSD) values are fairly small, which proves that the simulation tools are generating highly comparable results and that both tools closely match what MATLAB is generating.