## 2 Blocking Flow Shop Scheduling Problem  
In the blocking flowshop scheduling problem, \(n\) jobs from the set \(J=\{1,2,..,n\}\) have to be processed on \(m\) machines from the set \(M=\{1,2,..,m\}\) with the same permutation on each machine without any intermediate buffer. Each job \(j\) has a processing time on machine \(k\), which is denoted as \(p_{j,k}\). The setup time is assumed to be included in the processing time. Only a single job can be processed on each machine. Since waiting times are not allowed in the flowshop due to no intermediate buffers, jobs cannot leave machines after completing their operations until next machines are free. In other words, if the next machine is busy, then the current job on the machine must be blocked since there is no intermediate buffer amongst machines. The goal is to obtain a permutation, which will be applied to each machine and the total flowtime (TFT) is to be minimized. Given a job sequence \(\pi=\{\pi_{1},\pi_{2}..,\pi_{n}\}\), the departure time \(d_{\pi_{j},k}\) of job \(\pi_{j}\) on machine \(k\) can be computed by following [PERSON] (2000) as follows:  
\[d_{\pi_{1},0}=0 \tag{1}\]  
\[d_{\pi_{1},k}=d_{\pi_{1},k-1}+p_{\pi_{1},k}\ k=1,..,m-1 \tag{2}\]  
\[d_{\pi_{j},0}=d_{\pi_{j}-1,1}\ j=2,..,n \tag{3}\]  
\[d_{\pi_{j},k}=max\left\{d_{\pi_{j},k-1}+p_{\pi_{j},k},d_{\pi_{j}-1,k+1}\right\} \ j=2,..,n\ and\ k=1,..,m-1 \tag{4}\]  
\[d_{\pi_{j},m}=d_{\pi_{j},m-1}+p_{\pi_{j},m}\ j=1,..,n \tag{5}\]  
where \(d_{\pi_{j},0}\), \(j=1,..,n\) denotes the starting time of job \(j\) on the first machine. Since \(C_{\pi_{j},m}=d_{\pi_{j},m}\) for all \(j\), then the total flowtime of the sequence \(\pi\) can be given as \(TFT\left(\pi\right)=\sum_{j=1}^{n}C_{\pi_{j},m}\). Briefly, the objective is to determine a sequence \(\pi^{*}\) in the set of all sequences \(\Pi\) such that \(TFT\left(\pi^{*}\right)\leq TFT\left(\pi\right)\ \forall\pi\in\Pi\). There are two neighborhood structures in scheduling problems in general. These are based on insertion and swap neighborhood structures. As known, the computational complexity of both neighborhood structures is \(\mathrm{O}\left(n^{3}m\right)\). For the traditional PFSP with the total flowtime criterion, [PERSON] et al. [PERSON] et al. (2017) proposed a speed-up method for the swap and insertion neighborhood structures. They showed that the proposed speed-up method makes a reduction in the CPU times up to 40 to 50 percent. Based on their idea, we develop a fast fitness function calculation for insertion and swap moves. Suppose that we have sequence \(\pi\). We first calculate the departure times of each job on each machine and store them in a matrix denoted as \(D_{\pi_{j},k}\). Given the current sequence as \(\pi=\{1,2,3,4,5\}\). Now, suppose that we would like to interchange job 3 at position 3 with job 4 at position 4. Due to the fact that the departure times are stored in \(D_{\pi_{j},k}\) in advance until job 3 at position 3, we do not need to re-calculate departure times until job 3 at position 3, again. In other words, after interchanging those two jobs, the departure times of the new sequence \(\pi=\{1,2,4,3,5\}\) can be calculated as follows. First, we copy the departure times from \(D_{\pi_{j},k}\) matrix with \(d_{\pi_{j},k}=D_{\pi_{j},k}\)_for \(j=1,..,3\ and\ k=1,..,m\). Then, we calculate the departure times starting from position 3 to 5 with \(d_{\pi_{j},k}\), \(j=3,..,5\), \(k=1,..,m\). In order to generalize it, we first determine two randomly chosen positons \(pos1\) and \(pos2\) such that \((pos1<pos2)\in(1,n)\). Our swap function, \(\pi=Swap\left(\pi^{0},pos1,pos2\right)\), interchanges jobs \(\pi^{0}_{j=pos1}\) and \(\pi^{0}_{j=pos2}\); then, store the new sequence on a temporary sequence \(\pi\). Finally, our fast fitness function, \(f_{fast}\left(\ \pi,pos1\right)\), copies the departure times from \(D_{\pi_{j},k}\)_matrix_ until position \(j=pos1\) and then, re-calculates the departure times starting from position \(pos1\) to the end of the remaining part of the sequence.