## 3 Mathematical Modeling
### The Basic Problem
#### 3.1.1 Problem Description and Notations  
Consider a job shop consisting of \(M\) machines where machines with common functionalities are grouped into a department (e.g., turning machines in a turning department). Assume that the system is currently processing jobs from the previous schedule, and each machine \(m\) (where \(m=1,\ldots,M\)) has a release date \(D_{m}\)--at which time, it will be available for the next scheduling. Consider also a total of \(J\) independent jobs to be scheduled next in the system where a job is a batch of identical parts. The number of parts in a batch of job \(j\) (where \(j=1,\ldots,J\)) is given by \(B_{j}\), and this batch is to be split into \(S_{j}\) number of unequal sublots (transfer batches). A decision variable \(b_{s,j}\) is used to denote the size of sublot \(s\) (where \(s=1,\ldots,S_{j}\)) of job \(j\). Each sublot of job \(j\) is to undergo \(O_{j}\) number of operations in a fixed sequence such that each operation \(o\) (where \(o=1,\ldots,O_{j}\)) can be processed by one of several eligible machines. \(T_{o,j,m}\) is unit-processing-time for operation \(o\) of job \(j\) on machine \(m\). The operation \(o\) of a sublot of job \(j\) can be started on an eligible machine \(m\) after lag time \(L_{o,j}\) and after the setup is performed. The lag time \(L_{o,j}\) is a waiting time that may be required either for cooling, drying, or for some other purpose. The setup time for an operation \(o\) of job type \(j\) on machine \(m\) depends on the preceding operations and is denoted by \(S_{o,j,m,a^{\prime},j^{\prime}}\), where operation \(o^{\prime}\) of a sublot of job \(j^{\prime}\) is the preceding operation on machine \(m\). If operation \(o\) of sublot \(s\) of job \(j\) is the first operation to be processed on machine \(m\), the setup time is represented as \(S^{*}_{o,j,m}\). The setup time \(S_{o,j,m,a^{\prime},j^{\prime}}\) (or \(S^{*}_{o,j,m}\)) for operation \(o\) of a sublot of job \(j\) can be overlapped with the processing time of operation \(o-1\) of the same sublot if the setup is a detached setup and machine \(m\) is available for setup. The problem is to determine the size of each sublot, assign the operation of each sublot to one of the eligible machines and determine the sequence and starting time of the assigned operations on each machine. The objective is to minimize the makespan of the schedule. We next introduce some additional notations and then present a mixed-integer linear programming (MILP) formulation for FJSP-LS. Additional Parameters:  
\(R_{m}\)The maximum number of production runs of machine \(m\) where production runs are indexed by \(r=1,2,\ldots,R_{m}\). Each of these production runs can be assigned to, at most, one operation of one sublot. Thus, the assignment of the operations to production runs of a given machine determines the sequence of the operations on that machine. \(P_{o,j,m}\)A binary data point equal to 1 if operation \(o\) of job \(j\) can be processed on machine \(m\), and 0 otherwise. \(A_{o,j}\)A binary data point equal to 1 if the setup of operation \(o\) of of job \(j\) is attached (non-anticipatory), or 0 if this setup is detached (anticipatory). \(\Omega\)Large positive number. Variables:  
_Continuous Variables:_  
\(c_{max}\)Makespan of the schedule. \(c_{o,s,j}\)Completion time of operation \(o\) of sublot \(s\) of job \(j\). \(\widehat{c}_{r,m}\)Completion time of the \(r\)th run of machine \(m\). \(b_{s,j}\)Size of sublot \(s\) of job \(j\). _Binary Integer Variables:_  
\(x_{r,m,o,s,j}\)A binary variable that takes the value 1 if the \(r\)th run on machine \(m\) is for operation \(o\) of sublot \(s\) of job \(j\), and 0 otherwise. \(y_{r,m,o,j}\)A binary variable that takes the value 1 if the \(r\)th run on machine \(m\) is for operation \(o\) of any one of the sublots of job \(j\), and 0 otherwise. \(\gamma_{s,j}\)A binary variable that takes the value 1 if sublot \(s\) of job \(j\) is non-zero (\(b_{s,j}\geq 1\)), and 0 otherwise.