Skip to main content
. 2025 Feb 24;11:e2687. doi: 10.7717/peerj-cs.2687

Algorithm 1. Core function for computing transmission probabilities and throughput calculation.

Require: Input parameters x
Ensure: Computed values for tap, the_sta, pcoll_cont_ap, pcoll_cont_he_sta
1: # Initialize core function for computing transmission probabilities
2: tap,the_sta,pc_ap,pcoll_cont_he_stax
3: numhe_staNumHe
4: function E( ContWmin,m,pc)
5:     return (1pcoll_contpcoll_cont(2pcoll_cont)m)(12pcoll_cont)
6: end function
7: pcoll_cont_ap1(1the_sta)numhe_sta
8: if numhe_sta>0 then
9:     pcoll_cont_he_sta1(1tap)
10: else
11:     pcoll_cont_he_sta0
12: end if
13: tap1E(ContWmin_ap,maxap,pcoll_cont_ap)+1
14: if numhe_sta>0 then
15:     the_sta1E(ContWmin_he_sta,maxhe_sta,pcoll_cont_he_sta)+1
16: else
17:     the_sta0
18: end if
19: outcome[tap,the_sta,pcoll_cont_ap,pcoll_cont_he_sta]
20: return outcome
21: # Fixed Point Iteration
22: initial_guess array of zeros with size 4
23: result scipy.optimize.fixed_point(core_function, initial_guess)
24: probability(1pcoll_cont_appcoll_cont_ap(2pcoll_cont_ap)maxap)(12pcoll_cont_ap)
25: # Transmission times
26: Trsu(Trsu_Du+TrSIFS+TrBACK+TrSIFS)
27: Trmu_duget_Trmu_du(numa_mu_dl,Vu)
28: Trmu_umaxTxopDuration
29: # Probabilities of having a certain outcome at a given slot
30: numhe_staNumHe
31: pcoll_he_deviceNumHeparams[nStations]
32: a1(tappcoll_he_deviceα(1pcoll_cont_ap))
33: a2(numhe_stathe_sta(1pcoll_cont_he_sta))
34: a3((1α)βtapphe_device)
35: a4((1α)(1β)tapphe_device)
36: b1((1tap)(1the_sta)numhe_sta)
37: pcoll_he_tx(1(1the_sta)numhe_sta)
38: # UL and DL throughput
39: Tha1Thsu
40: Tha2Thsu
41: Tha3Thmu_d
42: Tha4Thmu_u
43: Thc1Thcont_su
44: Thc2_staThcont_su
45: Thc2_apThcont_mu_dl
46: Thc3_staThcont_su
47: Thc3_apThcont_mu_ul_ap
48: Thc4Thcont_su
49: # Head-of-line
50: holifparams[dl]==suthenNumHe(Thsu+EapThe)1000elseNumHeVaru(Thmu_d+EapThe)1000