FJSP可定义为以下情况:
目标函数:
min f = C max \min {\kern 1pt} {\kern 1pt} f = C\max minf=Cmax
约束条件:
s i j + u i j × p i j k ≤ c i j , i = 1 , 2 , … , n ; j = 1 , 2 , … e i ; k = 1 , 2 , … , m {s_{ij}} + {u_{ij}} \times {p_{ijk}} \le {c_{ij}},i = 1,2, \ldots ,n;j = 1,2, \ldots {e_i};k = 1,2, \ldots ,m sij+uij×pijk≤cij,i=1,2,…,n;j=1,2,…ei;k=1,2,…,m
c i j ≤ s i j + 1 , i = 1 , 2 , … , n ; j = 1 , 2 , … , e i − 1 {c_{ij}} \le {s_{ij + 1}},i = 1,2, \ldots ,n;j = 1,2, \ldots ,{e_i} - 1 cij≤sij+1,i=1,2,…,n;j=1,2,…,ei−1
c i j ≤ s i j + 1 + L ( 1 − y l h i j + 1 k ) , i = 1 , 2 , … , n ; l = 0 , 1 , … , n , j = 1 , 2 , … , e i − 1 ; h = 1 , 2 , … , e l ; k = 1 , 2 , … , m , \begin{array}{r} {c_{ij}} \le {s_{ij + 1}} + L(1 - {y_{lhij + 1k}}),i = 1,2, \ldots ,n;l = 0,1, \ldots ,n,\\ j = 1,2, \ldots ,{e_i} - 1;h = 1,2, \ldots ,{e_l};k = 1,2, \ldots ,m, \end{array} cij≤sij+1+L(1−ylhij+1k),i=1,2,…,n;l=0,1,…,n,j=1,2,…,ei−1;h=1,2,…,el;k=1,2,…,m,
s i j + p i j k ≤ s l h + L ( 1 − y i j l h k ) , i = 0 , 1 , … , n ; l = 1 , 2 , … , n , j = 1 , 2 , … , e i ; h = 1 , 2 , … , e l ; k = 1 , 2 , … , m , \begin{array}{r} {s_{ij}} + {p_{ijk}} \le {s_{lh}} + L(1 - {y_{ijlhk}}),i = 0,1, \ldots ,n;l = 1,2, \ldots ,n,\\ j = 1,2, \ldots ,{e_i};h = 1,2, \ldots ,{e_l};k = 1,2, \ldots ,m, \end{array} sij+pijk≤slh+L(1−yijlhk),i=0,1,…,n;l=1,2,…,n,j=1,2,…,ei;h=1,2,…,el;k=1,2,…,m,
∑ k = 1 m u i j k = 1 , \sum\limits_{k = 1}^m {{u_{ijk}}} = 1, k=1∑muijk=1,
目标函数将最大完工时间作为优化目标,第一个约束条件和式(第二个约束条件表示为工件工序之间的优先级约束,而第三个约束条件和公式第四个约束条件表示的是每一台加工机器在同一时间只能处理一个工件,第五个约束条件表示的是每一个工件在同一时刻只能在一台机器上加工。
求解单目标与多目标FJSP问题一般可以采用智能算法,如粒子群、遗传、蜂群、MOEA/D、NSGA算法的等。
算了,具体算法和代码有时间再更。