任务 A B C D E F G H I J K
时间 45 11 9 50 15 12 12 12 12 8 9
T(i):为完成第i项任务需要的时间。
SETS:
TASK/ A B C D E F G H I J K/: T; !任务集合,有一个完成时间属性 T;
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 /; !任务之间的优先关系集合(A 必须完成才能开始 B,等等);
STATION/1..4/; ! 工作站集合;
TXS( TASK, STATION): X;! X 是派生集合 TXS 的一个属性。如果 X(I,K)=1,则表
示第 I 个任务指派给第 K 个工作站完成;
ENDSETS
DATA:
T = 45 11 9 50 15 12 12 12 12 8 9; !任务 A B C D E F G H I J K 的完成时间;
ENDDATA
@FOR( TASK( I): @SUM( STATION( K): X( I, K)) = 1); !每一个作业必须指派到一个工
作站;
@FOR( PRED( I, J): @SUM( STATION( K): X(I, K))-@SUM( STATION( K): X(J,
K) )>=0) ; !对于每一个存在优先关系的作业对(I,J)来说,I先J后安排;
@FOR( STATION( K)SUM( TXS( I, K): T( I) * X( I, K)) <= CYCTIME); !对于每一个
工作站来说,其花费时间必须不大于装配线周期;
MIN = CYCTIME; !目标函数是最小化转配线周期;
@FOR( TXS: @BIN( X)); !指定 X(I,J) 为 0/1 变量;
END