## 4 Proposed Model Using Symbolic Regression in Python  
Symbolic regression is performed using gplearn [22], which executes genetic encoding in Python through a scikit-learn stimulated and reconcilable application programming interface (API). The hyperparameters used for symbolic regression in gplearn are listed in Table 3. The experimental dataset of 257 observations [2, 8, 10, 13, 14, 15, 16, 19] as shown in Table 1, is further separated according to the penetration type. Datasets belonging to narrow, intermediate, and deep penetrations consist of 26, 59, and 174 data observations, respectively. Symbolic regression is performed separately for each dataset to obtain the underlying mathematical expressions to describe the best relationship. For intermediate and deep penetration datasets, 70% of data is used to construct the mathematical model (i.e., train the model), and 30% of data is used to test the mathematical model's performance (i.e., test the model). Since data observations in the narrow penetration are small and consist of 26 data observations only, all data is used to construct the mathematical model. The hyperparameters used for symbolic regression in gplearn are shown in Table 3.  
The mathematical model obtained for narrow, medium, and deep penetration datasets from symbolic regression is shown in the Figures 9-11 as expression  
\begin{table}
\begin{tabular}{l c c c} \hline \hline \multirow{2}{*}{**Parameter**} & \multicolumn{2}{c}{**Value**} \\ \cline{2-4}  & **EQ 1** & **EQ 2** & **EQ 3** \\ \hline population size & 5000 & 5000 & 5000 \\ generations & 60 & 60 & 60 \\ stopping\_criteria & 0.01 & 0.01 & 0.01 \\ p\_crossover & 0.9 & 0.7 & 0.7 \\ p\_subtree\_mutation & 0.01 & 0.01 & 0.1 \\ p\_hoist\_mutation & 0.01 & 0.05 & 0.05 \\ p\_point\_mutation & 0.01 & 0.1 & 0.1 \\ function\_set & +, \(-\), \(\times\), \(\div\) & +, \(-\), \(\times\), \(\div\), \(\div\) & +, \(-\), \(\times\), \(\div\) \\ tournament size & 25 & 25 & 25 \\ parsimony\_coefficient & 0.0003 & 0.002 & 0.003 \\ metric & MAE & MAE & MAE \\ const\_range & \((-5,5)\) & \((-5,5)\) & \((-5,5)\) \\ \hline \hline \end{tabular} The following is an explanation of the hyperparameters: population size: number of mathematical formulas in each generation; generations: maximum number of generations; stopping_criteria: MAE value that program stops; p_crossover: crossover probability; p_subtree_mutation: subtree mutation probability; p_hoist_mutation: host mutation probability; p_point_mutation: point mutation probability; function_set: building blocks containing mathematical operators; parsimony_coefficient: a constant that penalizes large individuals by adjusting their MAE to make them less favorable for selection; metric: measures how well an individual fits; const_range: the range of constants included in the model.  
\end{table}
Table 3: The hyperparameters for symbolic regression in gplearn.  
Figure 9: Model equation for narrow penetration, in expression tree form, identified by symbolic regression.  
The proposed equations, obtained from symbolic regression, can be re-written in mathematical form, as follows.  
\[\frac{x}{d}=\left(I-\frac{3I}{N}\right)\left(1.179-\frac{3I}{N}\right)\text{ for }\frac{x}{d}<0.5 \tag{1}\]  
\[\frac{x}{d}=I^{3}+(I-1.0)(N-\lambda)+0.202\text{ for }0.5<\frac{x}{d}<5.0 \tag{2}\]  
\[\frac{x}{d}=0.5I+3.324\text{ for }\frac{x}{d}>0.5 \tag{3}\]  
Figure 11: Model equation for deep penetration, in expression tree form, identified by symbolic regression.  
Figure 10: Model equation for intermediate penetration, in expression tree form, identified by symbolic regression.