## 2 Methodology
### Fuzzy c-Means Clustering  
The FCM clustering is a soft partitioning algorithm, where jobs with similar attribute values are classified into the same cluster. FCM was developed by [PERSON] [52] and later improved by [PERSON] and [PERSON] [53]. It is used to assign patterns or data to different clusters, where each data point is allowed to belong to several clusters with different membership values. These membership values represent the extent to which each point belongs to each cluster, and they are also used to update the cluster centers. With this FCM clustering method, the number of clusters is pre-determined, and each data point is then assigned to one or more clusters. The FCM algorithm can be seen as a fuzzified version of the k-means clustering algorithm and is based on minimizing an objective function called the c-means function [53; 54]. This takes three input parameters, namely: (i) the number of clusters \(G\); (ii) the fuzziness exponent value \(m>1\); and (iii) the termination tolerance \(\phi>0\). Given a set of job records \(\mathcal{R}\), including six attributes \(\mathcal{B}\), FCM attempts to minimize the objective function \(J\) using the following steps.  
Since the proposed hybrid FCM-based GA needs an efficient chromosome design, it is crucial to understand the FCM spatially. To help readers understand, an example of FCM is given in Figure 1 with 6 data points in circles, 2 attributes in axes, and 3 cluster centers in rectangles on two-dimensional spaces. The distance \(d_{ic}\) is calculated once cluster centers are obtained.  
(1) _Minimization of c-means functional_ The FCM minimizes an objective function called c-means functional, given as follows. The objective function \(J\) measures the sum of fuzzy similarity for job  
Figure 1: Example of FCM with notation (G = 3).  
records \(\mathcal{R}\) over all clusters. Note that, at each iteration, the FCM updates the centers of all clusters. The objective function \(J\) is given by  
\[J=\sum_{c\in G}\sum_{i\in R}u_{ic}^{m}.d_{ic}, \tag{1}\]  
where \(d_{ic}\) is the Euclidean distance between job record \(i\) and the center of cluster \(c\).  
(2) _Classification (membership updates)_ We update the membership value \(u_{ic}\) of each job record \(i\) toward cluster \(c\). Note that at the start of the algorithm, these membership values \(u_{ic}\) are initialized randomly such that \(u_{ic}>0\) and \(\sum_{c\in G}u_{ic}=1\). The fuzziness coefficient \(1<m<\infty\) represents the required clustering tolerance. The membership value \(u_{ic}\) is updated by  
\[u_{ic}=\frac{1}{\sum_{\begin{subarray}{c}\mid\in G\end{subarray}}\left(\frac {d_{ic}}{d_{ic}}\right)^{\frac{2}{m-1}}}. \tag{2}\]  
(3) _Determination of cluster center_ We calculate the K-dimensional center for each cluster using Equation (3) and then update the Euclidean distance from each job record \(i\) to the center of cluster \(c\), as well as the membership value \(u_{ic}\), using Equation (4):  
\[z_{cb}=\sum_{i\in R}u_{ic}^{m}.v_{ib}/\sum_{i\in R}u_{ic}^{m}, \tag{3}\]  
\[d_{ic}=\sqrt{\sum_{b\in\mathcal{B}}\left[W_{b}.(v_{ib}-z_{cb})\right]^{2}} \tag{4}\]  
It is noted that the deviation of values in each attribute is different, and more significant attributes do not overwhelm smaller ones. It was proposed that the original data should be normalized into the same range for all attributes. In this process of reducing prediction errors, \(w_{b}\) can be determined by applying  
\[w_{b}=\frac{100}{\max(v_{Rb})-\min(v_{Rb})}. \tag{5}\]  
(4) _Termination condition_ The incremental improvement for objective function value \(J\) determines if the iteration continues. When the FCM termination tolerance \(\phi\) is given, the FCM terminates if  
\[\left|J^{s+1}-J^{s}\right|<\phi, \tag{6}\]  
where \(s\) is the iteration number.