# Modified Migrating Birds Optimization for Energy-Aware Flexible Job Shop Scheduling Problem
## 2 Mathematical Model of EDRCFJSP  
### Problem Description  
In the workshop, \(n\) independent jobs are supposed to be processed on \(m\) machines with \(w\) workers. For each job \(i\), \(j_{i}\) operations need to be processed following a given processing order, i.e., the precedence order between operations of the same job is fixed and known. Each operation must be processed by a machine selected from the operation's eligible machine set. In addition, each machine must be operated by a worker selected from the machine's eligible worker set. The processing time of each operation is dependent on the assigned machine and the selected worker. Moreover, different energy consumption may be needed by different machines and workers. Thus, the EDRCFJSP problem can be decomposed into three sub-problems: machine assignment (MA), worker selection (WS) and operation permutation (OP). The optimization goal is to minimize the total energy consumption in the workshop. Some assumptions should be considered as follows:  
1. Jobs, machines and workers are ready at the time zero;
2. Each machine can process, at most, one operation at a time;
3. Each worker can operate, at most, one machine at a time;
4. For each operation, preemption is not permitted;
5. Any two operations belonging to different jobs are independent of each other;
6. A worker cannot be changed when he/she is processing jobs;
7. Each machine cannot be completely turned off unless all jobs assigned to it are finished;
8. The transportation times of jobs and moving times of the workers between different machines are ignored.  
Before formulating the problem, some necessary symbols are listed as follows:  
\(n\): Number of jobs, \(i=1,2,3,\ldots,n\);  
\(m\): Number of machines, \(k=1,2,3,\ldots,m\);\(w\): Number of workers, \(l=1,2,3,\ldots,w\);  
\(J_{i}\): Number of operations in job \(i\), \(j=1,2,3,\ldots,J_{i}\);  
\(O_{ij}\): The \(j\)th operation of job \(i\);  
\(F\): The objective function;  
\(E_{1}\): The processing energy consumption;  
\(E_{2}\): The idle energy consumption;  
\(E_{3}\): The setup energy consumption;  
\(E_{4}\): The common energy consumption;  
\(S_{ij}\): Start time of \(O_{ij}\);  
\(C_{ij}\): Completion time of \(O_{ij}\);  
\(p_{ijkl}\): Processing time of \(O_{ij}\) on machine \(k\) operated by worker \(l\);  
\(PE_{ijkl}\): Processing energy consumption coefficient of \(O_{ij}\) on machine \(k\) operated by worker \(l\);  
\(SE_{k}\): Idle energy consumption coefficient of machine \(k\) when it is running in the idle state;  
M: A big positive constant number;  
\(S^{\prime}_{k}\): Start time of machine \(k\);  
\(C^{\prime}_{k}\): Completion time of machine \(k\);  
\(W_{k}\): Workload of machine \(k\), which equals the sum of the processing times of jobs assigned to machine \(k\);  
\(TST_{k}\): Total setup time of machine \(k\);  
\(TU_{k}\): Setup energy consumption coefficient of machine \(k\);  
\(CE\): Common energy consumption coefficient;  
\(C_{\max}\): Final completion time (makspan) of the workshop;  
\(SU_{I^{\prime}i^{\prime}jk}\): Setup time of machine \(k\) when \(O_{ij}\) is processed immediately after \(O_{i^{\prime}j^{\prime}}\)  
\(y_{ijkl}\): A binary variable, if \(O_{ij}\) is processed on machine \(k\) operated by worker \(l\), \(y_{ijkl}=1\); otherwise, \(y_{ijkl}=0\);  
\(z_{iji^{\prime}j^{\prime}k}\): A binary variable, if \(O_{ij}\) is processed on machine \(k\) prior to \(O_{i^{\prime}j^{\prime}}\), \(z_{iji^{\prime}j^{\prime}k}=1\); otherwise, \(z_{iji^{\prime}j^{\prime}k}=0\).