一、问题描述[1]
有一家公司收到三种类型墙纸的订单:第一种(墙纸1)在蓝色背景上有黄色图案,第二种(墙纸 2)在绿色背景上有蓝色和黄色图案;第三种(墙纸3)在黄色背景上有蓝色和绿色图案。在生产时,每种类型的墙纸都是一个连续的纸卷,并且将要通过若于台机器,每台机器向其上印刷不同的颜色。墙纸通过机器的顺序取决于墙纸的设计:对于墙纸1,首先印刷蓝色背景,然后印刷黄色图案;对于墙纸 2,首先印刷绿色背景,然后先印刷蓝色图案再印刷黄色图案;对于墙纸 3,首先印刷黄色背景,然后先印刷蓝色图案再印刷绿色图案。
每一个工序的处理时间取决于需要向其上印刷的对象。每种墙纸类型每种颜色的印刷时间(分钟)列于下表中。
墙纸1 | 墙纸2 | 墙纸3 | |
---|---|---|---|
蓝色 | 45 | 20 | 12 |
绿色 | 0 | 10 | 17 |
黄色 | 10 | 34 | 28 |
二、混合整数模型
符号 | 符号说明 |
印刷工序索引, | |
墙纸类型索引, | |
第j种墙纸的第i道工序在第几台设备上处理,蓝色第一台,绿色第二台,黄色第三台 | |
第i种墙纸的在第j台设备上的的处理时间 | |
第j种墙纸的第i台设备上的开始时间 | |
01变量,第j种墙纸为第k种墙纸在第i台设备上的紧前任务,为1;否则,为0 | |
一个足够大的数 |
模型的目标是极小化总完工时间makespan
(1)
subject to
(2)
(3)
(4)
(5)
(6)
(7)
(8)
其中(2)进行完工时间约束,大于等于三种纸张的各自完成时间;(3)(4)对任意纸张j和k,如果j不等于k,则他们在同一台机器上的加工时间不能冲突;(5)加工次序约束,上一工序完成时才能进行下一工序的操作;(6)工序开始时间需大于等0;(7)完工时间需大于等于0;(8)0-1变量。
三、Lingo求解
3.1 Lingo代码:
model:
sets:
row/1..3/:;
cols/1..2/:;
link(row,row):T,S,tt,finish;
links(row,row,row):u;
endsets
data:
S=1 3 2
2 1 3
3 1 2;
T=45 20 12
0 10 17
10 34 28;
enddata
[obj]min=makespan;
@for(row(j):makespan>=tt(S(j,3),j)+T(S(j,3),j));
@for(links(i,j,k):tt(i,k)>=@if(j#ne#k,tt(i,j)+T(i,j)-M*u(i,j,k),0));
@for(links(i,j,k):tt(i,j)>=@if(j#ne#k,tt(i,k)+T(i,k)-M*(1-u(i,j,k)),0));
@for(row(j):@for(cols(k):tt(S(j,k+1),j)>=tt(S(j,k),j)+T(S(j,k),j)));
@for(link(i,j):tt(i,j)>=0);
makespan>=0;
@for(links:@bin(u));
@for(link(i,j):finish(i,j)=tt(i,j)+T(i,j));
end
3.2 求解结果
Local optimal solution found.
Objective value: 97.00000
Objective bound: 97.00000
Infeasibilities: 0.000000
Extended solver steps: 47
Total solver iterations: 1696
Variable Value Reduced Cost
MAKESPAN 97.00000 0.000000
M 97.00000 0.000000
T( 1, 1) 45.00000 0.000000
T( 1, 2) 20.00000 0.000000
T( 1, 3) 12.00000 0.000000
T( 2, 1) 0.000000 0.000000
T( 2, 2) 10.00000 0.000000
T( 2, 3) 17.00000 0.000000
T( 3, 1) 10.00000 0.000000
T( 3, 2) 34.00000 0.000000
T( 3, 3) 28.00000 0.000000
S( 1, 1) 1.000000 0.000000
S( 1, 2) 3.000000 0.000000
S( 1, 3) 2.000000 0.000000
S( 2, 1) 2.000000 0.000000
S( 2, 2) 1.000000 0.000000
S( 2, 3) 3.000000 0.000000
S( 3, 1) 3.000000 0.000000
S( 3, 2) 1.000000 0.000000
S( 3, 3) 2.000000 0.000000
TT( 1, 1) 42.00000 0.000000
TT( 1, 2) 10.00000 0.000000
TT( 1, 3) 30.00000 0.000000
TT( 2, 1) 97.00000 0.000000
TT( 2, 2) 0.000000 0.000000
TT( 2, 3) 42.00000 0.000000
TT( 3, 1) 87.00000 0.000000
TT( 3, 2) 30.00000 0.000000
TT( 3, 3) 2.000000 0.000000
FINISH( 1, 1) 87.00000 0.000000
FINISH( 1, 2) 30.00000 0.000000
FINISH( 1, 3) 42.00000 0.000000
FINISH( 2, 1) 97.00000 0.000000
FINISH( 2, 2) 10.00000 0.000000
FINISH( 2, 3) 59.00000 0.000000
FINISH( 3, 1) 97.00000 0.000000
FINISH( 3, 2) 64.00000 0.000000
FINISH( 3, 3) 30.00000 0.000000
U( 1, 1, 1) 0.000000 0.000000
U( 1, 1, 2) 1.000000 0.000000
U( 1, 1, 3) 1.000000 0.000000
U( 1, 2, 1) 0.000000 0.000000
U( 1, 2, 2) 0.000000 0.000000
U( 1, 2, 3) 0.000000 0.000000
U( 1, 3, 1) 0.000000 0.000000
U( 1, 3, 2) 1.000000 0.000000
U( 1, 3, 3) 0.000000 0.000000
U( 2, 1, 1) 0.000000 0.000000
U( 2, 1, 2) 1.000000 0.000000
U( 2, 1, 3) 1.000000 0.000000
U( 2, 2, 1) 0.000000 0.000000
U( 2, 2, 2) 0.000000 0.000000
U( 2, 2, 3) 0.000000 0.000000
U( 2, 3, 1) 0.000000 0.000000
U( 2, 3, 2) 1.000000 0.000000
U( 2, 3, 3) 0.000000 0.000000
U( 3, 1, 1) 0.000000 0.000000
U( 3, 1, 2) 1.000000 0.000000
U( 3, 1, 3) 1.000000 0.000000
U( 3, 2, 1) 0.000000 0.000000
U( 3, 2, 2) 0.000000 0.000000
U( 3, 2, 3) 1.000000 0.000000
U( 3, 3, 1) 0.000000 0.000000
U( 3, 3, 2) 0.000000 0.000000
U( 3, 3, 3) 0.000000 0.000000
3.3 调度方案:
墙纸1 | 墙纸2 | 墙纸3 | |
蓝色 | 42-87 | 10-30 | 30-42 |
绿色 | 97-97 | 0-10 | 42-59 |
黄色 | 87-97 | 30-64 | 2-30 |
3.4 甘特图:
四、参考文献
[1] Christelle Guéret, Christian Prins, Marc Sevaux. Applications of optimization with Xpress-MP (Translated and revised by Susanne Heipcke). Dash Optimization Ltd. 2000.