1. 程式人生 > >任務車間排程問題的混合整數規劃模型

任務車間排程問題的混合整數規劃模型

任務車間排程問題的混合整數規劃模型

文獻[1]的7.3節講了一個任務車間排程問題。

一個車間生產套印紙張,分別套印藍綠黃三種顏色。三種紙張根據需求分別在藍、綠、黃三個機器上印刷,印刷時間如下表:

  印製顏色 紙1 紙2 紙3
機器1 45 20 12
機器2   10 17
機器3 10 34 28

紙張需要滿足下圖所示的印製次序:

要求安排工藝排程(即安排紙張在各個機床上的加工時間)以使得總完成時間最短。

模型及求解

從上圖可以讀出紙張的印製次序為:

  Paper 1:  1 --> 3 

  Paper 2:  2 --> 1 -->3

  Paper 3:  3--> 1 --> 2

Paper 1 不需要在機器2上加工。為一致起見,設其在機器2上的加工時間為0,加工次序為3。得到下面的加工次序矩陣。

  S={

    1  3  2

    2  1  3

    3  1  2

  }

設 T[i][j] 為紙張 j 在機器 i 上的加工時長。設 t[i][j] 為紙張 j 在機器 i 上的開始加工時刻。

模型的目標是極小化總完工時間tt:

  min  tt               //(1)

顯然tt必須大於等於三種紙張的各自完成時間:

  tt >= t[S[j][3]][j]+T[S[j][3]][j] | j=1,...,3   //(2)

對任意紙張j和k, 如果 j<>k, 則他們在同一臺機器上的加工時間不可衝突:

       t[i][k] >= t[i][j] + T[i][j] 或 t[i][j] >= t[i][k] + T[i][k] | i=1,...,3;j=1,...,3;k=1,..,3;j<>k

 上面是兩個或約束,不可以直接寫入混合線性規劃的。解決辦法是引入二值變數u[i][j][k]和大M,把上面的邏輯轉換成兩個聯立約束:

  t[i][k] >= t[i][j] + T[i][j] - M*u[i][j][k] | i=1,...,3;j=1,...,3;k=1,..,3;j<>k //(3)
  t[i][j] >= t[i][k] + T[i][k] -M(1-u[i][j][k]) | i=1,...,3;j=1,...,3;k=1,..,3;j<>k //(4)

紙張需要滿足加工次序約束:

  t[S[j][k+1]][j] >= t[S[j][k]][j] + T[S[j][k]][j] |j=1,...,3; k=1,...,2  //(5)

完整的+Leapms模型:

min  tt               //(1)

subject to

    //tt大於等於三種紙張的各自完成時間:
  tt >= t[S[j][3]][j]+T[S[j][3]][j] | j=1,...,3   //(2)

    //對任意紙張j和k,如果j<>k,則他們在同一臺機器上的加工時間不能衝突:
    t[i][k] >= t[i][j] + T[i][j] - M*u[i][j][k] | i=1,...,3;j=1,...,3;k=1,..,3;j<>k   //(3)
  t[i][j] >= t[i][k] + T[i][k] -M(1-u[i][j][k]) | i=1,...,3;j=1,...,3;k=1,..,3;j<>k //(4)

   //加工次序約束:
   t[S[j][k+1]][j] >= t[S[j][k]][j] + T[S[j][k]][j] |j=1,...,3; k=1,...,2  //(5)

where
   M is a number
   T[i][j] is a number | i=1,...,3;j=1,...,3
   S[i][j] is an integer | i=1,...,3;j=1,...,3
   tt is a variable of nonnegative number
   t[i][j] is a variable of nonnegative number | i=1,...,3;j=1,...,3
   u[i][j][k] is a variable of binary|i=1,...,3;j=1,...,3;k=1,..,3;j<>k

data

   T={
	45 20 12
	 0 10 17
	10 34 28
    }

    S={
    1  3  2
    2  1  3
    3  1  2
  }
    M=1000

求解過程

+Leapms>load
 Current directory is "ROOT".
 .........
        jobshop.leap
 .........
please input the filename:jobshop
================================================================
1:  min  tt               //(1)
2:
3:  subject to
4:
5:      //tt大於等於三種紙張的各自完成時間:
6:    tt >= t[S[j][3]][j]+T[S[j][3]][j] | j=1,...,3   //(2)
7:
8:      //對任意紙張j和k,如果j<>k,則他們在同一臺機器上的加工時間不能衝突:
9:      t[i][k] >= t[i][j] + T[i][j] - M*u[i][j][k] | i=1,...,3;j=1,...,3;k=1,..
,3;j<>k   //(3)
10:    t[i][j] >= t[i][k] + T[i][k] -M(1-u[i][j][k]) | i=1,...,3;j=1,...,3;k=1
,..,3;j<>k //(4)
11:
12:     //加工次序約束:
13:     t[S[j][k+1]][j] >= t[S[j][k]][j] + T[S[j][k]][j] |j=1,...,3; k=1,...,2
//(5)
14:
15:  where
16:     M is a number
17:     T[i][j] is a number | i=1,...,3;j=1,...,3
18:     S[i][j] is an integer | i=1,...,3;j=1,...,3
19:     tt is a variable of nonnegative number
20:     t[i][j] is a variable of nonnegative number | i=1,...,3;j=1,...,3
21:     u[i][j][k] is a variable of binary|i=1,...,3;j=1,...,3;k=1,..,3;j<>k
22:
23:  data
24:
25:     T={
26:     45 20 12
27:      0 10 17
28:     10 34 28
29:      }
30:
31:      S={
32:      1  3  2
33:      2  1  3
34:      3  1  2
35:    }
36:      M=1000
================================================================
>>end of the file.
Parsing model:
1D
2R
3V
4O
5C
6S
7End.
..................................
number of variables=28
number of constraints=45
..................................
+Leapms>mip
relexed_solution=64; number_of_nodes_branched=0; memindex=(2,2)
The Problem is solved to optimal as an MIP.
找到整數規劃的最優解.非零變數值和最優目標值如下:
  .........
    t1_1* =42
    t1_2* =10
    t1_3* =30
    t2_1* =97
    t2_3* =42
    t3_1* =87
    t3_2* =30
    t3_3* =2
    tt* =97
    u1_1_2* =1
    u1_1_3* =1
    u1_3_2* =1
    u2_1_2* =1
    u2_1_3* =1
    u2_3_2* =1
    u3_1_2* =1
    u3_1_3* =1
    u3_2_3* =1
  .........
    Objective*=97
  .........
+Leapms>
求解過程(按+檢視)

求解結果

+Leapms>mip
relexed_solution=64; number_of_nodes_branched=0; memindex=(2,2)
The Problem is solved to optimal as an MIP.
找到整數規劃的最優解.非零變數值和最優目標值如下:
  .........
    t1_1* =42
    t1_2* =10
    t1_3* =30
    t2_1* =97
    t2_3* =42
    t3_1* =87
    t3_2* =30
    t3_3* =2
    tt* =97
    u1_1_2* =1
    u1_1_3* =1
    u1_3_2* =1
    u2_1_2* =1
    u2_1_3* =1
    u2_3_2* =1
    u3_1_2* =1
    u3_1_3* =1
    u3_2_3* =1
  .........
    Objective*=97
  .........
+Leapms>

反向生成Latex數學概念模型

+Leapms提供從+Leapms模型向Latex數學概念模型的轉換。

當模型調整和測試完畢,使用+Leapms的latex命令可生成本問題的如下數學概念模型:

 

參考文獻

[1] Christelle Guéret, Christian Prins, Marc Sevaux. Applications of optimization with Xpress-MP (Translated and revised by Susanne Heipcke). Dash Optimization Ltd. 2000