2、0-1规划作业
- 格式:doc
- 大小:2.00 MB
- 文档页数:7
2、0-1规划作业
0-1规划问题
一条装配线由一系列工作站组成,被装配或制造的产品在装配线上流动的过程中,每站都要完成一道或几道工序,假定一共有六道工序,这些工序按先后次序在各工作站上完成,关于这些工序有如下的数据:
工序 所需时间(分) 前驱工序
1 3 无
2 5 无
3 2 2
4 6 1,3
5 8 2
6 3 4
另外工艺流程特别要求,在任一给定的工作站上,不管完成哪些工序,可用的总时间不能超过10分钟,如何将这些工序分配给各工作站,以使所需的工作站数为最少?
1)模型分析与变量的假设
下面,我们先讨论工序与工作站的关系,并试图建立起该问题的0—1型整数规划模型。
对任一工序而言,它要么属于工作站j,要么不属于工作站j,故决策变量可定义为:
行 运 上 j 不在工作站 若工序 0行 运 上 在工作站 若工序 1ij ixij
这种定义,使我们能根据最优解中ijx的值来很快确定工序i与工作站j之间的隶属关系。
又因工序1,2,3所需的工作时间不超过10分钟,故工序1,2,3的工作可以在一个工作站上完成,此时,工序4,5,6只能分别在各自的工作站上工作,该可行解对应的工作站数为4个。也就是说,对最优解而言,该装配线上所需的工作站个数不会多于4个。因此,我们再定义变量如下:
jjwj 作站 工 要 需 不 中 解 优 若在最 0 站 作 工 要 需 中 解 优 若在最 1 至此,我们得到所需的目标函数为:
4321 maxwwwwz 2)再考虑该模型的约束条件:
(1) 每道工序均隶属于一个工作站,且每一工序都必须完成,故有以下六个约束:
6) 5, 4, 3, 2, ,1( 14321ixxxxiiii (2)在任一工作站上完成隶属工序所用的时间不能超过10分钟,故有以下四个约束:
4) 3, 2, 1,(j 10386253654321jjjjjjxxxxxx
(3)最后,我们再考虑各道工序所受的先后次序约束的条件。
先考察工序2与工序3的关系,因工序2在工序3之前运行,故若工序3隶属于工作站4,则工序2无论属于那个工作站均可;若工序3隶属于工作站3,则工序2可属于工作站1或2或3;此时,变量3) 2, ,1( 2jxj应满足的约束条件为:
33232221xxxx;
同理,若工序3隶属于工作站2或1,则变量3) 2, ,1( 2jxj应
满足的约束条件为:
322221xxx
3121xx 同理,根据其它工序的优先关系,可仿此法给出其相应的约束条件,由上图知,六个工序之间有五个优先关系,故这类约束条件共有15个。
另外,在最优解中,若有一个工作站4) 3, 2, 1,(pwp不用(即pw=0),则隶属于该工作站的全部6) 5, 4, 3, 2, 1,(ixip必须为0,于是,有以下四个约束条件:
4) 3, 2, 1,( 6654321iwxxxxxxjjjjjjj 3)模型的建立与求解
至此,我们得到了该问题的0—1型整数规划模型,它共包含28个变量,29个约束条件,这样的模型用枚举法求解,人工计算是很难胜任的,这时,只能求助于计算机求解了。我们给出该问题的模型如下。
该问题的目标函数为:
4321 maxwwwwz 约束条件为:
6) 5, 4, 3, 2, ,1( 14321ixxxxiiii 4) 3, 2, 1,(j 10386253654321jjjjjjxxxxxx
33232221xxxx; 322221xxx; 3121xx
53232221xxxx; 522221xxx; 5121xx;
43131211xxxx; 421211xxx; 4111xx;
43333231xxxx; 423231xxx; 4131xx;
63434241xxxx; 624241xxx; 6141xx;
4) 3, 2, 1,( 6654321iwxxxxxxjjjjjjj
一条装配线含有一系列的工作站,在最终产品的加工过程中每个工作站执行一种或几种特定的任务.装配线周期是指所有工作站完成分配给它们各自的任务所花费时间中的最大值.平衡装配线的目标是为每个工作站分配加工任务,尽可能使每个工作站执行相同数量的任务,其最终标准是装配线周期最短.不适当的平衡装配线将会产生瓶颈------有较少任务的工作站将被迫等待其前面分配了较
对于每一个工作站来说,其花费时间必须不大于装配线周期:
CycleTimek) i, x( * T(i)41k ③
3)模型的建立与求解
至此,我们得到了该问题的0—1型整数规划模型,我们给出该问题的模型如下。
该问题的目标函数为:
min= CycleTime
约束条件为:
11)1,2(i1,x(i,4)x(i,3)x(i,2)x(i,1)
41的前驱任务)j为i,(0k) i, x( * k - k) j, x( * kk
CycleTimek) i, x( * T(i)41k
MODEL:
!装配线平衡模型;
SETS:
!任务集合,有一个完成时间属性T;
TASK/ A B C D E F G H I J K/: T;
!任务之间的优先关系集合(A 必须完成才能开始B,等等);
PRED( TASK, TASK)/ A,B B,C C,F C,G F,J G,J
J,K D,E E,H E,I H,J I,J /;
! 工作站集合;
STATION/1..4/;
TXS( TASK, STATION): X;
! X是派生集合TXS的一个属性。如果X(I,K)=1,则表示第I个任务
指派给第K个工作站完成;
ENDSETS
DATA:
!任务A B C D E F G H I J K的完成时间估计如下;
T = 45 11 9 50 15 12 12 12 12 8 9;
ENDDATA
! 当任务超过15个时,模型的求解将变得很慢;
!每一个作业必须指派到一个工作站,即满足约束①;
@FOR( TASK( I): @SUM( STATION( K): X( I, K)) = 1);
!对于每一个存在优先关系的作业对来说,前者对应的工作站I必须小于后
者对应的工作站J,即满足约束②;
@FOR( PRED( I, J): @SUM( STATION( K): K * X( J, K) - K * X( I, K)) >= 0);
!对于每一个工作站来说,其花费时间必须不大于装配线周期;
@FOR( STATION( K):
@SUM( TXS( I, K): T( I) * X( I, K)) <= CYCTIME);
!目标函数是最小化转配线周期;
MIN = CYCTIME;
!指定X(I,J) 为0/1变量;
@FOR( TXS: @BIN( X));
END
计算的部分结果为
Global optimal solution found.
Objective value: 50.00000
Extended solver steps: 2
Total solver iterations: 388
Variable Value Reduced Cost
CYCTIME 50.00000 0.000000
T( A) 45.00000 0.000000
T( B) 11.00000 0.000000
T( C) 9.000000 0.000000
T( D) 50.00000 0.000000
T( E) 15.00000 0.000000
T( F) 12.00000 0.000000
T( G) 12.00000 0.000000
T( H) 12.00000 0.000000
T( I) 12.00000 0.000000
T( J) 8.000000 0.000000
T( K) 9.000000 0.000000
X( A, 1) 1.000000 0.000000
X( A, 2) 0.000000 45.00000
X( A, 3) 0.000000 0.000000
X( A, 4) 0.000000 0.000000
X( B, 1) 0.000000 0.000000