提高打孔机生产效能.docx
《提高打孔机生产效能.docx》由会员分享,可在线阅读,更多相关《提高打孔机生产效能.docx(26页珍藏版)》请在冰豆网上搜索。
提高打孔机生产效能
提高打孔机生产效能
摘要
提高生产效能是各个企业面临的一个很实际的问题,因为这关系到企业的生存和发展。
过孔是印刷线路板(也称为印刷电路板)的重要组成部分之一,过孔的加工费用通常占制板费用的30%到40%,因此提高过孔的生产效能在一定程度上影响到作业成本和作业时间,提高钻孔加工效能已成为该行业中急需解决的重要问题。
提高孔加工的效率,就务必要找到最优的打孔路径。
因此,要结合实际问题,应用理论知识进行打孔路径的优化,以实现加工的高效率和低成本。
当把所有的孔看做质点后,孔之间的连线看做边,则过孔加工就可以看作是典型的TSP问题。
即遍历所有的孔后,路径最短。
为了计算上的方便,该模型先利用枚举法求出刀具的所有转换方案,并确定出最佳刀具转换方案(转换次数最少即最佳),然后确定出10种孔型的先后加工次序,再对每个孔型建立模型,得到每个模型的最优路径,最后求得最短距离、行进时间和作业成本。
求解TSP问题的方法有很多种,如遗传算法、模拟退火算法等,本文采用的求解方法是蚁群算法,因为对该模型的数据,蚁群算法能得到更优的结果。
通过matlab实现蚁群算法,得出最终的最短距离Shortest-Length为1.6129e+006(mm),行进时间T-move为8.9606e+003(s),作业成本C为96795(元)。
关键字:
生产效能,TSP问题,蚁群算法,最短距离
一、问题重述
过孔是印刷线路板(也称为印刷电路板)的重要组成部分之一,过孔的加工费用通常占制板费用的30%到40%,打孔机主要用于在制造印刷线路板流程中的打孔作业。
本问题旨在提高某类打孔机的生产效能。
打孔机的生产效能主要取决于以下几方面:
(1)单个过孔的钻孔作业时间,这是由生产工艺决定,为了简化问题,这里假定对于同一孔型钻孔作业时间都是相同的;
(2)打孔机在加工作业时,钻头的行进时间;(3)针对不同孔型加工作业时,刀具的转换时间。
目前,实际采用的打孔机普遍是单钻头作业,即一个钻头进行打孔。
现有某种钻头,上面装有8种刀具a,b,c,…,h,依次排列呈圆环状,如图1所示。
图1某种钻头上8种刀具的分布情况
而且8种刀具的顺序固定,不能调换。
在加工作业时,一种刀具使用完毕后,可以转换使用另一种刀具。
相邻两刀具的转换时间是18s,例如,由刀具a转换到刀具b所用的时间是18s,其他情况以此类推。
作业时,可以采用顺时针旋转的方式转换刀具,例如,从刀具a转换到刀具b;也可以采用逆时针的方式转换刀具,例如,从刀具a转换到刀具h。
将任一刀具转换至其它刀具处,所需时间是相应转换时间的累加,例如,从刀具a转换到刀具c,所需的时间是36s(采用顺时针方式)。
为了简化问题,假定钻头的行进速度是相同的,为180mm/s,行进成本为0.06元/mm,刀具转换的时间成本为7元/min。
钻头在行进过程中可以同时进行刀具转换,但相应费用不减。
不同的刀具加工不同的孔型,有的孔型只需一种刀具来完成,如孔型A只用到刀具a。
有的孔型需要多种刀具及规定的加工次序来完成,如孔型C需要刀具a和刀具c,且加工次序为a,c。
表1列出了10种孔型所需加工刀具及加工次序(标*者表示该孔型对刀具加工次序没有限制)。
表110种孔型所需加工刀具及加工次序
孔型
A
B
C
D
E
F
G
H
I
J
所需刀具
a
b
a,c
d,e*
c,f
g,h*
d,g,f
h
e,c
f,c
一块线路板上的过孔全部加工完成后,再制作另一块线路板。
但在同一块线路板上的过孔不要求加工完毕一个孔,再加工另一个孔,即对于须用两种或两种以上刀具加工的过孔,只要保证所需刀具加工次序正确即可。
请通过建立相应的数学模型,完成以下问题:
B题附件提供了某块印刷线路板过孔中心坐标的数据,单位是1/100密尔(mil)(密尔也称为毫英寸,1inch=1000mil),请给出单钻头作业的最优作业线路(包括刀具转换方案)、行进时间和作业成本。
二、问题分析
本次建模的目的是提高打孔机的生产效能,影响打孔机生产效能的因素主要有三个:
1、单个过孔的作业时间;2、打孔机加工作业时,钻头的行进时间;3、对不同孔型加工作业时,刀具的转换时间。
因此,要提高打孔机的生产效能,可以通过减少单个过孔的作业时间、钻头的行进时间及刀具的转换时间。
现已假定同一孔型钻孔作业时间都是相同的且钻头的行进速度也是相同的且匀速。
所以要求打孔机的生产效能等价于求钻头遍历所用孔的最短路径且满足刀具的转换次数最少。
可以先通过枚举法求出刀具的所有转换方案,从而确定出最佳的刀具转换方案,然后根据刀具的转换次序依次对相应的孔型进行打孔,在打孔的过程中确定最优的打孔路径。
当把所有的孔都看做是质点后,确定最优的打孔路径就是典型的旅行商问题,即TSP问题。
TSP问题常用模拟进化算法来解决,如蚁群算法、模拟退火算法、遗传算法等。
行进时间等于作业最短路径距离除以钻头行进速度。
作业成本可以根据行进时间和相应的时间成本求得。
三、模型假设
1.假设对于同一孔型钻孔作业时间都是相同的
2.假设钻头的行进速度是相同的且钻头移动是匀速的
3.忽略各个孔型的大小,将孔型视为质点
4.将钻头视为质点
四、符号说明
Shortest-Length:
最短路径距离T-move:
钻头行进时间
T-trans:
刀具转换时间t:
相邻刀具转换时间
V:
钻头行进速度P-move:
钻头行进1mm成本
P-trans:
刀具每分钟转换时间成本M:
行进总距离
C-move:
行进成本C-trans:
刀具转换成本
C:
作业成本
五、模型建立
5.1最优作业线路模型
该问题可以直接将所有的数据直接利用蚁群算法,求得最短路径距离。
但是这样算,需要运行很长的时间才能得出结果。
因此,本文采用先确定刀具的最佳转换方案,通过转头的转换次序,对相应的孔型进行打孔。
这样就可以大大缩短程序的运行时间。
设集合V={v1,v2,v3,……,vn}表示所用孔的集合,d(vi,vj)表示集合中任意2个孔vi,vj的距离,则行进总距离
因此该问题对应的模型为:
目标函数:
约束条件:
1、加工路径从一个孔出发,遍历每一个孔,最后回到起点;
2、刀具转换次数最少,即最佳刀具转化方案。
5.2行进时间模型
钻头的行进时间与钻头的行进距离和钻头的行进速度有关,因此行进时间模型为:
T-move=Shortest-Length/V
5.3作业成本模型
作业成本由行进成本和刀具转换成本组成。
行进成本可由钻头行进1mm的成本和转头的行进距离求得,而刀具转换成本可由刀具每分钟转换时间成本和刀具总的转换时间求得。
因此作业成本模型为
C=C-move+C-trans其中
C-move=P-move*Shortest-Length
C-trans=T-trans*P-trans
5.4蚁群算法简介
蚁群算法是受真实的蚂蚁的群体合作行为而提出的一种随机搜索算法,与其他进化算法相似,通过对候选解成的群体进化来寻求最优解。
算法由许多蚂蚁共同完成,每只蚂蚁在候选解的空间中独立搜索解,并在所寻得的解上留下一定的信息素.解的性能越好,蚂蚁留在其上的信息素就越多,信息素越多的解被选择的可能性也越大.在算法的最初阶段所有解上的信息素是相同的,随着算法的推进,较优解上的信息素将逐渐增多,算法渐渐趋于收敛.作为一种随机优化方法,蚁群算法不需要任何先验知识,最初只是随机地选择搜索路径,随着对空间的了解,搜索更加具有规律性,并逐渐得到全局最优解。
5.4.1算法的常见符号:
(1)
:
t时刻位于点
的蚂蚁个数;
(2)
:
蚁群中的全部蚂蚁个数,
(3)
:
边
上的信息素强度;
(4)
:
边
上的能见度;
(5)
:
点
和点
之间的距离;
(6)
:
蚂蚁
由点
向点
转移的概率。
5.4.2每只蚂蚁具有的特征
(1)蚂蚁根据点之间的距离和连接边上信息素的数量为变量的概率函数选择下一个将要访问的点;
(2)规定蚂蚁在完成一次循环以前,不允许转到已到过的点;
(3)蚂蚁在完成一次循环时,在每一条访问的边
上释放信息素。
5.4.3算法流程
(1)初始化蚁群:
初始化蚁群参数,设置蚂蚁数量,初始化信息素,设
(
为常数);
(2)蚂蚁移动:
蚂蚁依据前面蚂蚁所留下的信息素和自己的判断选择路径,完成一次循环;
(3)释放信息素:
对蚂蚁所经过的路径按一定的比例释放信息素;
(4)评价蚁群:
根据目标函数对每只蚂蚁的适应度做出评价;
(5)若满足终止条件,即最短路径,输出最优解。
否则,算法继续进行;
(6)信息素的挥发:
信息素会随着时间延续不断消散。
在算法中用到的规则
(1)状态转移规则
:
蚂蚁
下一步允许选择的点;
:
信息启发式因子,表示轨迹的相对重要性;
:
期望启发式因子,表示能见度的相对重要性。
(2)全局调整规则
经过
个时刻,蚂蚁完成一次循环,各路径上信息素根据下式调整:
:
第
只蚂蚁在本次循环中留在路径
上的信息素量;
:
信息素轨迹的衰减系数,通常设置
。
5.5TSP问题简介
又译为旅行推销员问题、货郎担问题,简称为TSP问题,是最基本的路线问题,该问题是在寻求单一旅行者由起点出发,通过所有给定的需求点之后,最后再回到原点的最小路径成本。
最早的旅行商问题的数学规划是由Dantzig(1959)等人提出。
旅行商问题就是求解巡回线路的耗费的最小值。
数学模型描述如下:
六、模型求解
6.1刀具的最佳转换方案
作业时,钻头的转换可以是顺时针旋转,也可以是逆时针旋转。
根据这2钟方向,可以枚举出钻头的所有转换方案,具体方案见表6-1
表6-1
序号
刀具转换方案
转换次数
顺时针
1
a->b->c->d->e->f->g->h->g->f->e->d->c
12
2
b->c->d->e->f->g->h->a->b->c->d->e->f
12
3
c->d->e->f->g->h->a->b->c->d->e->f
11
4
d->e->f->g->h->a->b->c->d->e->f
10
5
e->f->g->h->a->b->c->d->e->f->g->f
11
6
f->g->h->a->b->c->d->e->f->g->h->e->d->c
13
7
g->h->a->b->c->d->e->f->g->f->e->d->c
12
8
h->a->b->c->d->e->f->g->h->f->e->d->c
12
逆时针
9
a->h->g->f->e->d->c->b->a->h->g->f
11
10
b->a->h->g->f->e->d->c->b->a->h->g->f
12
11
c->b->a->h->g->f->e->d->c->b->a->h->g->f
13
12
d->c->b>-a>-h>-g>-f>-e>-d>-c>->b->a->h->g->f
14
13
e->d->c->b->a->h->g->f->e->d->c
10
14
f->e->d->c->b->a->h->g->f->e->d->c
11
15
g->f->e->d->c->b->a->h->g->f->e->d->c
12
16
h->g->f->e->d->c->b->a->h->g->f->e->d->c
13
从上表可以发现,最佳的刀具转换方案,也就是转换次数最小的方案,有2个,分别是方案4:
d->e->f->g->h->a->b->c->d->e->f和方案13:
e->d->c->b->a->h->g->f->e->d->c。
随便选择一种转换方案,得到的最短距离结果都是一样的。
本文选择方案4的转换方案作为最佳刀具转换方案。
根据方案4,可以求得每种刀具所能打的孔型的最佳路径。
针对方案4,每次转化钻头所需打的孔型见表6-2:
:
表6-2
步骤
刀具
每一步对应刀具所能打的孔型
1
d
D、G
2
e
D、I
3
f
J
4
g
F、G
5
h
F、H
6
a
A、C
7
b
B
8
c
C、E、I、J
9
f
E、G
6.2模型运行结果
对于单钻头的假设,采用蚁群算法由MATLAB软件进行数据处理,根据最佳刀具转换方案(d->e->f->g->h->a->b->c->d->e->f)得出各个刀具所加工孔型的初始散点图、最优路径图形、平均距离和最短距离。
6.2.1DG孔
d刀具加工D、G孔的初始散点图(图6-1)、最优路径图及平均距离和最短距离图(图6-2)
图6-1DG孔的初始散点图
图6-2蚁群算法结果-DG孔
针对DG孔得到的Shortest-Length=6.1134e+006(mil)
6.2.2DI孔
e刀具加工D、G孔的初始散点图(图6-3)、最优路径图及平均距离和最短距离图(图6-4)
图6-3DI孔的初始散点图
图6-4蚁群算法结果-DI孔
针对DI孔得到Shortest-Length=6.0787e+006(mil)
6.2.3J孔
f刀具加工J孔的初始散点图(图6-5)、最优路径图及平均距离和最短距离图(图6-6)
图6-5J孔的初始散点图
图6-6蚁群算法结果—J孔
针对J孔得到Shortest-Length=4.6450e+006(mil)
6.2.4FG孔
g刀具加工F\G孔的初始散点图(图6-7)、最优路径图及平均距离和最短距离图(图6-8)
图6-7FG孔的初始散点图
图6-8蚁群算法结果-FG孔
针对FG孔Shortest-Length=3.2384e+006(mil)
6.2.5FH孔
h刀具加工F、H孔的初始散点图(图6-9)、最优路径图及平均距离和最短距离图(图6-10)
图6-9FH孔初始散点图
图6-10蚁群算法结果-FH孔
针对FH孔得到Shortest-Length=3.0738e+006(mil)
6.2.6AC孔
a刀具加工A、C孔的初始散点图(图6-11)、最优路径图及平均距离和最短距离图(图6-12)
图6-11AC孔的初始散点图
图6-12蚁群算法结果-AC孔
针对AC孔得到Shortest-Length=1.2721e+007(mil)
6.2.8B孔
b刀具加工B孔的初始散点图(图6-13)、最优路径图及平均距离和最短距离图(图6-14)
图6-13B孔初始散点图
图6-14蚁群算法结果-B孔
针对B孔得到Shortest-Length=1.1571e+007(mil)
6.2.9CEIJ孔
c刀具加工C、E、I、J孔的初始散点图(图6-15)、最优路径图及平均距离和最短距离图(图6-16)
图6-15CEIJ孔初始散点图
图6-16蚁群算法结果-CEIJ孔
针对CEIJ孔得到Shortest-Length=1.1318e+007(mil)
6.2.10EG孔
f刀具加工E、G孔的初始散点图(图6-17)、最优路径图及平均距离和最短距离图(图6-18)
图6-17EG孔初始散点图
图6-18蚁群算法结果-EG孔
针对EG孔得到Shortest-Length=4.7412e+006(mil)
6.2.11模型最终结果
所有孔的初始散点图(图6-19)、及最终的最优路径图及平均距离和最短距离图(图6-20)
图6-19所有孔的初始散点图
图6-20蚁群算法-最终优化结果
由前面的分析,最终的最优路径距离为各刀依次加工对应孔型最优路径长之和。
因此
Shortest-Length=6.35005e+007(mil),又1mil=0.0254mm
所以
Shortest-Length=1.6129e+006(mm)
钻头的行进速度V=180mm/s,且所有钻头行进速度相同,则行进时间
T-move=Shortest-Length/V
代入数据得
T-move=1.6129e+006/180=8.9606e+003(s)
总的刀具转换时间可由公式T-trans=10*t得到。
代入数据得
T-trans=10*18=180(s)
因为,行进成本=钻头每行进1mm的成本*行进距离,即
C-move=P-move*Shortest-Length
代入数据得
C-move=0.06*1.6129e+006=96774(元)
刀具转换成本=总的刀具转换时间*刀具每分钟转换时间成本,即
C-trans=T-trans*P-trans
代入数据得
C-trans=180*7/60=21(元)
作业成本C=行进成本C-move+刀具转换成本C-trans即:
C=C-move+C-trans
代入数据得
C=96774+21=96795(元)
七、模型评价
此模型采取了单刀具对应孔型完成再进入下一刀具的方式,即任一种刀具,先完成其所能钻取的孔型后,再进入下一孔型的钻取,而每种刀具的工作路线都是通过蚁群算法方式得出的最优解。
如此操作,既减少了刀具不断转换带来的时间损耗,提高了作业效率,又可以尽可能降低作业的成本。
该模型采用蚁群算法求解,该算法不容易陷入局部最优,因此得到结果准确性高。
通过实验,本题利用蚁群算法得到的结果比利用模拟退火算法得到的结果更优。
模型的主要缺点是利用蚁群算法得到结果的运行时间却远远比模拟退火算法长。
因此,该模型可以在算法上进行改进,综合考虑算法的时间复杂度和结果的优化度。
八、参考文献
[1]肖人彬,陶振武.孔群加工路径规划问题的进化求解[J].计算机集成制造系统,2005,11(5):
682—689
[2]李士勇,陈永强,蚁群算法及其应用,哈尔滨:
哈尔滨工业大学出版社,2004
[3].周正武,丁同梅,王晓峰,田毅红。
孔群加工路径优化方法的研究[J].机械研究与应用,2006(10):
15-16
[4]杨淑莹,模式识别与智能计算——Matlab技术实现[M],电子工业出版社,2008,319-330
附录
主函数:
m=10;Alpha=1;Beta=5;Rho=0.1;NC_max=200;Q=100;%为使程序运行速度更快,取蚂蚁数为10
c=[x,y];
n=size(c,1);%n表示问题的规模(电路板上孔的个数)
D=zeros(n,n);%D表示完全图的赋权邻接矩阵
fori=1:
n
forj=1:
n
ifi~=j
D(i,j)=((c(i,1)-c(j,1))^2+(c(i,2)-c(j,2))^2)^0.5;
else
D(i,j)=eps;%i=j时不计算,应该为0,但后面的启发因子要取倒数,用eps(浮点相对精度)表示
end
D(j,i)=D(i,j);%对称矩阵
end
end
Eta=1./D;%Eta为启发因子,这里设为距离的倒数
Tau=ones(n,n);%Tau为信息素矩阵
Tabu=zeros(m,n);%存储并记录路径的生成
NC=1;%迭代计数器,记录迭代次数
R_best=zeros(NC_max,n);%各代最佳路线
L_best=inf.*ones(NC_max,1);%各代最佳路线的长度
L_ave=zeros(NC_max,1);%各代路线的平均长度
whileNC<=NC_max%停止条件之一:
达到最大迭代次数,停止
%%蚁群算法MATLAB程序第二步:
将m只蚂蚁放到n个孔上
Randpos=[];%随即存取
fori=1:
(ceil(m/n))
Randpos=[Randpos,randperm(n)];
end
Tabu(:
1)=(Randpos(1,1:
m))';
%%蚁群算法MATLAB程序第三步:
m只蚂蚁按概率函数选择下一个孔,完成各自的周游
forj=2:
n%所在孔不计算
fori=1:
m
visited=Tabu(i,1:
(j-1));%记录已打过的孔,避免重复访问
J=zeros(1,(n-j+1));%待打的孔
P=J;%待打孔的选择概率分布
Jc=1;
fork=1:
n
iflength(find(visited==k))==0%开始时置0
J(Jc)=k;
Jc=Jc+1;%打过的孔个数自加1
end
end
%%下面计算蚁群算法MATLAB程序待打孔的概率分布
fork=1:
length(J)
P(k)=(Tau(visited(end),J(k))^Alpha)*(Eta(visited(end),J(k))^Beta);
end
P=P/(sum(P));
%%按概率原则选取下一个孔
Pcum=cumsum(P);%cumsum,元素累加即求和
Select=find(Pcum>=rand);%若计算的概率大于原来的就选择这条路线
to_visit=J(Select
(1));
Tabu(i,j)=to_visit;
end
end
ifNC>=2
Tabu(1,:
)=R_best(NC-1,:
);
end
%%蚁群算法MATLAB程序第四步:
记录本次迭代最佳路线
L=zeros(m,1);%开始距离为0,m*1的列向量
fori=1:
m
R=Tabu(i,:
);
forj=1:
(n-1)
L(i)=L(i)+D(R(j),R(j+1));%原距离加上第j个孔到第j+1个孔的距离
end
L(i)=L(i)+D(R
(1),R(n));%一轮下来后走过的距离
end
L_best(NC)=min(L);%最佳距离取最小
pos=find(L==L_best(NC));
R_best(NC,:
)=Tabu(pos
(1),:
);%此轮迭代后的最佳路线
L_ave(NC)=mean(L);%此轮迭代后的平均距离
NC=NC+1%迭代继续
%%蚁群算法MATLAB程序第五步:
更新信息素
Delta_Tau=zeros(n,n);%开始时信息素为n*n的0矩阵
fori=1:
m
forj=1:
(n-1)
Delta_Tau(Tabu(i,j),Tabu(i,j+1))=Delta_Tau(Tabu(i,j),Tabu(i,j+1))+Q/L(i);%此次循环在路径(i,j)上的信息素增量
end
Delta_Tau(Tabu(i,n),Tabu(i,1))=Delta_Tau(Tabu(i,n),Tabu(i,1))+Q/L(i);%此次循环在整个路径上的信息素增量
end
Tau=(1-Rho).*Tau+Delta_Tau;%考虑信息素挥发,更新后的信息素
%%蚁群算法MATLAB程序第六步:
禁忌表清零
Tabu=zeros(m,n);%直到最大迭代次数
end
%%蚁群算法MATLAB程序第七步:
输出结果
Pos=find(L_bes