## 3 Materials  
### Harmony Search (HS) Algorithm  
Traditional optimization algorithms, such as linear programming (LP), non-linear programming (NLP), and dynamic programming (DP), have taken on major roles in solving optimization problems. Nevertheless, their drawbacks generate a demand for other types of algorithms, such as meta-heuristic/heuristic optimization approaches. These algorithms have been identified as efficient, intelligent techniques to solve optimization issues. In recent years, various metaheuristic algorithms (MAs) have been proposed to solve a wide range of complex real-world problems [26; 27; 28]. The harmony search (HS) algorithm is a type of metaheuristic optimization algorithm, that was designed by [PERSON] et al. [25].  
\begin{table}
\begin{tabular}{c c c c} \hline \hline
**Lithology** & \(\mathbf{a_{i2}}\) & \(\mathbf{a_{i1}}\) & \(\mathbf{a_{i0}}\) \\ \hline Sandstone & 0 & 0.80416 & \(-\)0.85588 \\ Limestone & \(-\)0.05508 & 1.01677 & \(-\)1.03049 \\ Dolomite & 0 & 0.58321 & \(-\)0.07775 \\ Shale & 0 & 0.76969 & \(-\)0.86735 \\ \hline \hline \end{tabular}
\end{table}
Table 1: Regression coefficients for \(\mathrm{V_{S}}\) prediction for the Greenberg—Castagna relations.  
Inspired by the improvisation of music players, they first play music randomly with existing instruments. This harmony is kept in the musician's memory. In the next stage, according to the harmony in their memory, the musician plays new music that has changed from the previous one. Generally, the HS algorithm consists of three steps: (a) harmony memory initialization; (b) improvisation; and (c) updating the harmony memory. The harmony memory initialization step produces the initial harmonies (solutions), randomly. Then, in step (b), an iterative process is completed to enhance the quality of solutions, by making new solutions according to three operators, including harmony memory consideration, pitch adjustment, and random consideration. Finally, in step (c), the best-found harmony is selected based on objective function(s) as the optimum solution.  
The HS algorithm has been applied to solve a wide range of real world optimization problems. In [29], a modified harmony search algorithm was introduced and applied to overcome the problem of combined heat and power economic dispatch. In order to solve the Team Orienteering Problem (TOP), a new version of HS algorithm was proposed in [30]. In this way, the authors proposed an innovative method called the Similarity Hybrid Harmony Search (SHHS) algorithm. A variant of the original harmony search algorithm was developed in [31] for the optimum design of steel frames. The authors applied the HS algorithm to find minimum weight frames by choosing appropriate sections from a standard steel sections set. In [32], a discrete version of HS algorithm, named DHS, was introduced to solve a Flexible Job-shop Scheduling Problem (FJSP). The proposed DHS algorithm was utilized to minimize a weighted combination of the maximum completion time and the earliness mean. A hybrid variant of the Harmony Search (HHS) algorithm was introduced by the authors of [33]. The authors hybridized the neighborhood search and the global-best search mechanism of the Particle Swarm Optimization (PSO) algorithm with the HS algorithm to solve the problem of discrete truss-structure optimization. An adaptive harmony search algorithm was designed to achieve an optimal virtual machine (VM) consolidation model that decreased the power consumption of the datacenter in [34]. In order to obtain the optimum solution for the proportional-integral-derivative (PID) controller, [PERSON] et al. proposed a Self-Adaptive Global Harmony Search (SGHS) algorithm [35]. [PERSON] et al. [36] introduced a modified HS algorithm called Supervised Filter Harmony Search Algorithm (SFHSA), to eliminate redundant/irrelevant features without any significant effect on the process of classification for a Facial Emotion Recognition (FER) task.