工业工程生产管理模块专业课程设计说明书
(1)每台机床每次只能加工一个工件; (2)一个零件只能被一台机床加工一次; (3)优先的零件在所有机床或工序上都优先;
(4)时间约束条件,即优化目标是使整个加工过程的时间最小。 1.2
普通生产作业
1.2.1 普通作业的概念
普通作业制造系统是最基本的制造系统。区别于流水作业制造系统,在普通作业制造系统中,不同零件的加工工艺顺序不同。每种零件根据自身工艺的要求,按照一定顺序通过加工设备。从理论上说,流水作业系统只是普通作业系统的一种特例。普通的零件加工作业计划问题是生产作业计划安排和调度中一个最基本也是最困难的工作,现实证明,这类问题属于NP难题,不存在有效地解析解。 1.2.2 普通生产作业过程的特点
给定n个工件,每个工件以不同的顺序和不同的加工时间通过m台机器加工,无法求出最直接的最优解,只能得出近似最优解,寻求的是最优加工顺序,使得零件加工总时间最短。其一般特点为:
普通生产作业制造柔性较高,对产品变换适应性强,能够进行多品种小批量产品的生产。由于各个零件的各个加工工序时间不同,在各台机器上的加工顺序不同,因此无法进行大批量规模化生产。但不能发挥规模经济效应,生产率较低,生产成本高,各车间之间的物料流复杂凌乱,在制品积压较多,设备的无效等待时间较长。
多采用通用机床、装备和工具,作业人员的技艺水平要求高。 1.2.3 普通生产作业过程的影响因素
由于普通生产作业对工件的加工顺序没有严格的要求,因此只要控制好加工时间在预定交货的时间内即可。
1.2.4 普通生产作业计划方法及其实施
(1)依靠经验法:对于简单的、只包含少许几个加工工序的工件,加工作业计划可以由一些有经验的计划调度人员来完成。这种人工零件加工计划一般只是凭借经验定性地制定作业计划,有时也运用若干分配准则,但始终难以使作业计划达到最优。
(2)构建数学模型、应用算法、借助程序法:对于复杂的、包含较多加工工序的工件,仅仅依靠经验无法高效地完成作业计划。此时必须借助合适的数学模型来
5
工业工程生产管理模块专业课程设计说明书
进行优化求解,以获得比较合理的作业计划。求解过程涉及到程序的算法,主要有蚁群算法、遗传算法、启发式算法等等。 1.2.5 普通生产作业计划的约束条件
(1)加工顺序约束,即每种零件仅当一道工序加工完成后,下一道工序才能开始,且一台设备不能同时加工多于一种的零件,故等待时间长,需要对各零件价格加工工序进行优化,才能找到近似最优解;
(2)资源约束,即一台设备不能同时加工多余一种的零件;
(3)工序不可中断约束,即每一个零件一旦开始在一台设备上加工,则本道工序不能被中断,必须待该零件的这道工序加工结束后,该设备才能加工其它零件。
2 流水作业计划
2.1 初始给定条件及优化目标
有10个零件J1—J10计划在机器M1—M8上加工,加工方式为流水作业,即各零件的工艺路线顺序相同。各零件在机器上加工的时间如表一所示: 表1
零件 M1 J1 J2 J3 J4 J5 J6 J7 J8 J9 J10 56 36 65 58 25 61 70 35 18 51 M2 30 68 20 39 72 40 58 50 36 73 M3 63 83 46 23 50 63 23 26 63 0 机器加工时间 M4 73 50 19 88 16 13 70 40 78 16 M5 25 65 91 28 43 51 45 69 32 0 M6 20 99 50 30 15 20 29 10 50 15 M7 30 54 64 20 51 60 94 64 30 61 M8 78 33 16 61 36 71 33 90 66 38 优化目标:总加工时间最短,即从第一个零件开始加工起,到最后一个零件结束加工位置的这一段时间最短。
2.2 流水作业计划程序设计思路及流程图
程序设计思路:
(1)首先穷举各作业计划方案,对工件进行全排列,通过左移函数并递归调用
6
工业工程生产管理模块专业课程设计说明书
实现。
(2)当输出一个作业计划方案后随即算出该方案所需的总时间。计算出每个工件完成的结束时间,最大的即为该计划所需的总时间。
(3)记录每一组作业计划方案所需的时间,最后求平均值,得平均作业时间。 流水作业流程图(Flow-Shop):
程序见附录一,参数说明:
在流水作业中,JM[10][8]表示工件在满足加工顺序的情况下对应的加工时间,pj为流水随机方案平均加工时间,sum为总时间,当n小于1000000时,用穷举法举出作业计划编码。采用排列递归的方法,列出穷举函数: void swap(int *a, int *b)
int m; m = *a; *a = *b; *b = m; } void perm(int list[], int k, int m)
{ int i,j,s;
if(n>=1000000) return; if(k >= m)
{ for(s=0; s<=m; s++) {fprintf(f,\ t[s]=list[s];
printf(\ }
……
if(sumJ[i][j-1]>sumJ[i-1][j])
{sumJ[i][j]=sumJ[i][j-1]+JM2[i][j];} else
7
工业工程生产管理模块专业课程设计说明书
{ sumJ[i][j]=sumJ[i-1][j]+JM2[i][j];} }} ……
流水作业中,因为方案总数容易穷尽,所以用选择排序方法,从小到大排列出
所有的可能方案,本例中用递归的方法对t[s]进行赋值,如果有两个数字相等就重新赋值,最后得到10个不同的数字,得到list [10],这样便得到一组1到10的排列方案。
2.3运行流水作业穷举程序
输出结果the total number is 1000000
the average data is 1018.162807
所以可知,平均时间可取在1018附近。 选出一组8 4 10 7 3 6 9 5 2 1, T=1018 据此,画出甘特图1(附录二)。
我们发现,甘特图1的结构很松散,说明机器的空闲时间很长,这种方案的问题在于,经常会出现如下情况:一台机器已经加工完一个零件,准备加工下一个零件,可是下一个零件还在上一道工序未加工完。
2.4流水作业的优化
取K=10,H=0.05,运行程序,得: *** T= 884.0000000
9 5 8 6 7 1 2 4 10 3 *** T= 909.0000000
9 6 5 8 7 1 2 4 10 3 *** T= 915.0000000
9 5 7 10 1 8 6 4 2 3 *** T= 903.0000000
9 5 4 8 7 6 2 1 10 3 *** T= 911.0000000
8 9 7 1 6 2 10 4 5 3 *** T= 915.0000000
8 9 4 10 7 6 2 1 5 3 *** T= 907.0000000
9 6 8 7 1 2 4 5 10 3 *** T= 909.0000000
9 8 7 6 2 1 3 4 10 5 *** T= 920.0000000
8