## 4 Results
### Integrating the Virtual Strategy Engineer into the Race Simulation  
Figure 15 gives an overview of the integration of the VSE into the race simulation. As can be seen, the VSE is called once per lap and driver to make the strategy decision. The race simulation is implemented in the Python programming language. One simulation run for an example race with 20 drivers and 55 laps takes about 100 ms on a standard computer (Intel i7-6820 HQ) if the strategy decisions are fixed. Since thousands of runs must be performed for Monte Carlo simulation, the time per run must remain in this magnitude, even if the VSE determines the participants' strategies (although the runs are independent of each other and can be executed in parallel on CPUs with multiple cores). We could only achieve this by using TensorFlow Lite [51], a reduced framework whose original purpose is to bring ML functionality to devices such as mobile phones. Consequently, the trained models were converted into TensorFlow Lite models. Afterward, they only contain the functionality required for inferencing. This enables us to achieve calculation times of about 200 ms per simulation run. The race simulation allows us to compare the results when using different sources on which to base strategy decisions. For the analysis, we use simulation parameters that were fitted for the 2019 Austrian Grand Prix. The race is a good example because, in reality, there were no accidents or breakdowns, and therefore no FCY phases. Five variants of race strategy determination will be analyzed:  
* Variant 1: All drivers use the strategy they have used in the real race
* Variant 2: [PERSON] uses his optimized basic strategy, all other drivers use their real-race strategy
* Variant 3: The VSE determines [PERSON]'s strategy, all other drivers use their real-race strategy
* Variant 4: The VSE determines [PERSON] strategy, all other drivers use their real-race strategy
* Variant 5: The VSE determines all drivers' strategies  
[PERSON] and [PERSON] were chosen as test drivers because they achieve average result positions of 3.4 and 3.8 in the simulation with their real-race strategies, which allows the VSE to improve with different strategies. The real-race strategies of all drivers are given in Table 12, in the Appendix A. [PERSON]'s basic strategy was determined as medium-- medium (from lap 29)--soft (from lap 60) using the optimization algorithm presented. The VSE is based on the final trained NNs that were analyzed in Sections 4.2.2 and 4.3.2. We performed 10,000 simulation runs for each variant, which enabled us to make a reasonable estimate of the average result positions [3]. Probabilistic influences (lap time variability, race start performance, pit stop duration variability) were activated. FCY phases were deactivated for the first stage, to be added later. We furthermore deactivated retirements for all variants such that the result positions were based solely on racing and strategy decisions. The results of this first stage are shown in Table 18. For simplicity, we display only the top five drivers of the simulated races. First, it is noticeable that [PERSON]'s result position in reality (five) differs strongly from that of the simulation with the real-race strategies (3.4 in Variant 1), which also causes large deviations for [PERSON] and [PERSON]. In the present case, this can be explained by the fact that [PERSON] received a new front wing during his pit stop in reality, which increased the pit stop time loss by about 8 s. This is not included in the simulation. In general, it must also be considered that a race simulation cannot perfectly reproduce a real race, for instance, because of model inaccuracies or parameterization errors. Figure 15: Overview of the integration of the virtual strategy engineer into the race simulation. Furthermore, the progress of the race changes with different strategies. Consequently, the following results can only be compared with each other and not with a real-world race.