## 2 Materials and Methods
### Genetic Programming-Symbolic Regression  
Genetic programming-symbolic regression (GPSR) begins its execution by creating the unit population. The population members' quality initially is very low. Then, through a consecutive number of generations, they are fit for a specific task with the application of genetic operations. To build the initial population in GPSR, the dataset is required to have labeled input variables, the target output variable, the range of constant values, and mathematical functions. It should be noted that, in this paper, the following mathematical functions were used: addition, subtraction, multiplication, division, square root, cube root, absolute value, sine, cosine, tangent, minimum value, maximum value, natural logarithm, logarithm with base 2 and 10, respectively. It should be noted that mathematical functions such as division, natural logarithm, logarithm with base 2 and 10, and square root are specifically defined to avoid zero division errors and infinite or complex values during GPSR execution. The definition of these functions is given in Appendix A.The constant range hyperparameter is defined in Table 3. From these three sets, the GPSR randomly selects components to create population members, i.e., initial population. The hyperparameters required for the development of the initial population are population size, the maximum number of generations, and the constant range. According to [17], there are three commonly used methods for creating population members, and these are full, grow, and ramped-half-and-half. The ramped-half-and-half  
Figure 4: The flow chart of the research methodology. method is a combination of the full and grow methods, i.e., both methods are used to create half of the dataset. To ensure a higher population diversity in the ramped-half-and-half method, the population members' depth is set in the range of hyperparameter init_depth. For example, if the init_depth value is set to (6,20), this means that the population members will be created with the full and grow method, where the population member's depth will be in the range from 6 to a maximum of 20. The population members (SEs) and obtained SEs from each GPSR execution can be measured in terms of length. The length is counted as the sum of all mathematical functions, variables, and constants contained in a single SE. In the Results Section, besides the depth of the SEs, the length of the SEs will be also given. In this paper, the fitness function used in all investigations is the mean absolute error (\(MAE\)), which can be written in the following form:  
\[MAE=\frac{\sum_{i=1}^{n}(y_{i}-x_{i})}{n}, \tag{2}\]  
where \(y_{i}\), \(x_{i}\), and \(n\) are predicted values by the population member, the true (output) dataset value, and the number of dataset samples [18]. To calculate the \(MAE\), first, the population member must be evaluated, i.e., the values of the input variables must be provided to calculate the output. This output is the predicted \(y_{i}\) variable in Equation (2). The tournament selection method was used to select the parents to which the genetic operations will be applied. When this selection is used, the population members are selected randomly for comparison. The member with the best fitness value is chosen as the winner of the process. The tournament_size hyperparameter defines the number of units used in this process. Sometimes, during the execution of GPSR and due to the low correlation between dataset variables, the size of candidate solutions can rapidly grow through the generations. The size of the population members can grow so large that this can result in the bloat phenomenon. Various methods can be used to prevent this phenomenon, such as size fair crossover [19], size fair mutation [20], the Tarpeian method [21], and the parsimony pressure method [22]. The latter method is the most-commonly used and will be used in this paper.