装配线平衡模型

问题:(装配线平衡模型)一条装配线含有一系列的工作站,在最终产品的加工过程中每个工作站执行一种或几种特定的任务。 装配线周期是指所有工作站完成分配给它们各自的任务所花费时间中的最大值。 平衡装配线的目标是为每个工作站分配加工任务,尽可能使每个工作站执行相同数量的任务,其最终标准是装配线周期最短。不适当的平衡装配线将会产生瓶颈——有较少任务的工作站将被迫等待其前面分配了较多任务的工作站。问题会因为众多任务间存在优先关系而变得更复杂, 任务的分配必须服从这种优先关系。
任务时间表如下:

 假如有 11 件任务(A—K)分配到 4 个工作站(1—4),任务的优先次序如下图

约束条件需要保证每件任务都被分配至一个工作站进行加工,同时需要满足相应的优先级关系。 

编写LINGO程序如下:

model:
!装配线平衡模型;
sets:
!任务集合,有一个完成属性;
task/A B C D E F G H I J K/:t;
!任务完成得优先级关系;
priority(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/;
!任务派送情况集合;
assignment(task,station):X;
!其中对于X(i,k)=1则表示第i个任务分配给第k个工作站;
endsets
data:
T=45 11 9 50 15 12 12 12 12 8 9;
enddata
!下面为问题得约束条件;
!每个作业必须指派一个工作站;
@for(task(i):@sum(station(k):x(i,k))=1);
!优先级关系,对于priority(i,j)而言,后面对应的工作站必须大于前面对应的工作站;
@for(priority(i,j):@sum(station(k):x(j,k)-x(i,k))>=0);
!对于每个工作站的工作时间必须要小于工作周期;
@for(station(k):@sum(assignment(i,k):x(i,k)*t(i))<=systime);
!下面是目标函数;
min=systime;
!指定x(i,k)为0-1变量;
@for(assignment:@bin(x));
end

 

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值