工件加工排序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学建模竞赛试题:
C题:工件加工排序
计划排序问题中的车间作业问题,研究n个工件在m台机器上有序的加工问题,每个工件都有完工的日期(DD,Due date), 加工的时间(PT,Processing time)和工件的价值(VAL,Value if job is selected). 现研究一个工厂生产工序的计划和安排,需要计划与合理安排各个工件在这些机器上加工的先后次序,即拟订加工工序,通过各个工件在各种机器上加工次序的合理安排,使得完成这批工件加工任务所需的总时间最省(注:总时间即为各个零件的加工时间和加工其他零件时它们等待时间之和)或要求整个选择加工的工件价值最大。
有一个工厂现在有12种工件(编号为工件1,工件2,…,工件12)需要在车床,钻床,铣床几种不同的设备上加工。考虑下面的工件加工的排序问题:
(一)这12种工件都要求在车床上加工,车床一次只能加工一种工件,这12种工件加工
所需时间,每个工件的完工时间和每个工件的价值如表(1)所示:
表(1)
1)不考虑工件的完工时间和工件的价值,为该工厂安排工件加工的次序,使得完成这批
工件加工任务所需的总时间最省。建立数学模型并给出相应的算法。
2)由于工件必须在它们要求的时间内完工,按照表(1)的数据,为该工厂安排选择加
工工件的种类及加工的次序,使得整个选择加工的工件价值最大。建立数学模型并给出相应的算法。
(二)如果这12种工件都要求先在车床上加工,然后再在钻床上加工(即工件在钻床加工
之前必须先在车床上加工过),每种机器一次只能加工一种工件,这12种工件加工所需时间如表(2)所示:
表(2)
为该工厂安排工件加工的次序,使得完成这批工件加工任务所需的总时间最省。建立数学模型并给出相应的算法。
(三)如果这12种工件都要求先在车床上加工,然后再在钻床上加工,最后再在铣床上加
工,每种机器一次只能加工一种工件,这12种工件加工所需时间如表(三)所示:
表(3)
为该工厂安排工件加工的次序,使得完成这批工件加工任务所需的总时间最省。建立数学模型并给出相应的算法。
(四)对于上述问题你做出的数学模型和相应的算法给出评价。并将模型推广到n个工件
在m台机器上加工的一般的工件排序问题,给出你的想法和解决问题的思路。
解题正文:
C 题:工件加工排序
(建模小组成员: AP0308306 陈运标 AP0308307邓风仪 AP0206311 黄深泉)
摘要
本题根据已知数据,结合问题中的具体要求,我们引入0/1变量建立工件排序的数学规划模型。借助Lingo 软件进行求解运算,得出其中的最优排序方案。使得完成这批工件加工任务所需要的总时间最省。在这里,我们通过对各个工件(排序后)完成某项特定工序所需总时间进行求和得到整个加工任务所需要的总时间。而各工件的总时间包括其机床加工时间和加工其他零件时的等待时间。
模型的假设:在后面的模型中,我们都假定了忽略工件在转换工序时的运输时间。即
将整个工件加工过程简化为一个连续的过程,只考虑机床在加工工件时其他工件的等待时间。
模型的建立:我们的思路是引入0/1变量对工件进行动态排序,根据问题要求得出排
序后的目标函数(即数学模型)。根据题目的约束条件,利用Lingo 软件算出模型的最优解,从而获得工件的最优排序。
问题(一)题目要求:12种工件都要求在车床上加工,车床一次只能加工一种工件。设 i
工件车床加工时间为A i ,规定完工时间为B i ,工件价值为C i
1) 不考虑工件的完工时间和工件的价值,安排工件加工的次序,使得完成这批工件加工任
务所需的总时间最省。
分析:引入0/1变量,利用目标函数最优化工件排序。
设i T 为i 工件实际完工时间,所以完成这批工件的总时间为T=
12
1
i
i T
=∑,而
i T =A 1-i +A i =A 2-i +A 1-i +A i =A 1+A 2+………+i A =1
i
j j A =∑
因此: 建立问题(1)的目标函数即数学模型为Min =
1211
i
j
i j A
==∑∑
定义x 1,x 2……x 144为0/1变量,1a ,2a ,…12a 为原始工件序列下i 工件的车床加工时间;所以
A
1=x
1
a
1
+x
2
a
2
+……..+x
12
a
12
A
2=x
13
a
1
+x
14
a
2
+……..+x
24
a
12
. .
A
12=x
133
a
1
+x
134
a
2
+……..+x
144
a
12
x 1+x
2
+…….+x
12
=1
x 13+x
14
+…….+x
24
=1
. . .
x 133+x
134
+…….+x
144
=1
x 1+x
13
+x
25
+……+x
121
+x
133
=1
x 2+x
14
+x
26
+……+x
122
+x
134
=1
. . .
x 12+x
24
+x
36
+……+x
132
+x
144
=1
Lingo程序:(附wenti(1).lg4文件)
model:
!不考虑完工时间和工件价值的排序问题;
sets:
gongjian/g1..g12/:shijian; !属性为原始排序下各个工件的机床加工时间;
shunxu/s1..s12/:time,fin_time; !属性为重新排序后各工件的机床加工时间和完成车工序的时间;
links(shunxu,gongjian): note;
endsets
!目标函数:求各个工件的加工总时间和最小;
min=@sum(shunxu(I):fin_time(I));
!重新排序后各工件的机床加工时间;
@for(shunxu(J):
time(J)=@sum(gongjian(I):shijian(I)*note(I,J));
);
!排序后各个工件的加工总时间;
@for(shunxu(I):