## 5 Feasibility Study Through System Simulations
### Simulation Process
#### 5.6.1 Main Execution Flow of the Simulator  
The main execution flow of the simulator is presented in the block diagram depicted in Figure 14. Each block implements the following steps:  
* In step 1, the input parameters for the simulation are set, and some of the main variables that are a function of these are initialized. A list of the parameters for simulation, with the corresponding values used in our simulations, is presented in Table 9. The main variables are listed in Table 10. The number of fingerprint sources, \(N_{F}\), is fixed for the considered scenario to four fingerprint sources. The side length of the sub-tile \(S_{S}\) and the number of sub-tiles per side of the tile \(N_{SS}\) are the two main parameters that are used in the simulations to compare the results using different sub-tile and tile sizes. The pattern-matching model is trained with initial random weights. A loop takes care to perform a number of iterations with different initial random weights, given by the parameter \(N_{I}\), as discussed in Section 5.5. The reference percentile for the selection of the best model weights with the MTV dataset is given by the parameter \(P_{R}\), discussed in Section 5.5. The parameters for the radio channel model, namely the frequency, the standard deviation in the shadow fading, and the power loss coefficient, are given by the parameters \(f\), \(\sigma\), and \(N_{PL}\), respectively. The side length of the tile is calculated using the number of sub-tiles multiplied by the side length of the sub-tile, as indicated in Table 10, and stored in the variable \(S_{T}\). Because a tile is equivalent in size to the 2D sensor array, \(S_{T}\) is the side length of the 2D sensor array. The total number of sub-tiles in a tile is stored in the variable \(N_{ST}\). \begin{table}
\begin{tabular}{l l l} \hline \hline
**Parameter** & **Description** & **Value** \\ \hline \(N_{F}\) & Number of fingerprint sources in the scenario & 4 fingerprint sources \\  & (Number of fingerprints in the vector/set & (4 fingerprints) \\  & of fingerprints) & \\ \(S_{S}\) & Side length of the sub-tile & According to tile \\  & & arrangement (Table: Tile arrangements) \\ \(N_{SS}\) & Number of sub-tiles per side of the tile & According to tile \\  & & arrangement (Table: Tile arrangements) \\ \(N_{TTB}\) & Number of fixed tile batches & 50 batches \\ \(N_{MTV}\) & Number of moving tiles for validation & 5000 tiles \\ \(N_{MTT}\) & Number of moving tiles for testing & 5000 tiles \\ \(N_{I}\) & Number of training iterations & 120 iterations (minimum) \\ \(P_{R}\) & Reference percentile for the selection of the & 0.95 (95\%) \\  & model weights with the MTV dataset & \\ \(f\) & Frequency in the radio channel model & 2600 MHz \\ \(\sigma\) & Standard deviation in the radio channel model & 3 [dB] \\ \(N_{PL}\) & Power loss coefficient in the radio channel model & 30 \\ \hline \hline \end{tabular}
\end{table} 
Table 9: Parameters for simulation. * In step 2, the scenario is created. The base stations' positions (referred to as node coordinates in 2) are set according to Table 7. Then, the fixed tile centers are calculated using the function \(FTileCenters()\) (Pseudocode 1) as a function of \(S_{S}\) and \(N_{SS}\). The number of fixed tiles for training and validation of the datasets FTT and FTV is stored in the variables \(N_{FTI}\) and \(N_{FTV}\). These are determined by the number of fixed tile batches, given through the parameter \(N_{FTB}\) in step 1, and multiplied by the number of tiles that fit into the positioning area in the scenario, \(N_{T}\). In turn, \(N_{T}\) is a function of the positioning area's dimensions. The value of the variable \(N_{T}\) is calculated and returned by the function \(FTileCenters()\). In contrast, moving tiles do not follow the grid-like pattern of the fixed tiles but are placed in random places. Therefore, the number of moving tiles in the MTV and MTT datasets is directly given through the parameters \(N_{MTV}\) and \(N_{MTT}\) in step 1.