打孔机生产效能提高的数学研究毕业论文.doc

上传人:豆**** 文档编号:29915605 上传时间:2022-08-02 格式:DOC 页数:30 大小:165.50KB
返回 下载 相关 举报
打孔机生产效能提高的数学研究毕业论文.doc_第1页
第1页 / 共30页
打孔机生产效能提高的数学研究毕业论文.doc_第2页
第2页 / 共30页
点击查看更多>>
资源描述

《打孔机生产效能提高的数学研究毕业论文.doc》由会员分享,可在线阅读,更多相关《打孔机生产效能提高的数学研究毕业论文.doc(30页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 打孔机生产效能的提高打孔机生产效能提高的数学研究摘 要针对“打孔机生产效能的提高”问题,我们将给问题划分为:单钻头作业和双钻头作业两种情况。在针对以上两种情形做出以下操作:一、对单钻头作业中的刀具转换方式问题,将刀具的转换方式类比成数学中的符号排列组合问题,由Visual Basic软件生成所有排列的组合形式,再找出变换次数最少的那一组;对单钻头在打孔过程中的钻头行径问题,利用计算机JAVA程序计算出多点间距离之和,由运行计算机程序计算出每类点的最短行径数,这样结合上面的最优刀具转换方式就可以使单钻头打孔效能提高。二、对双钻头可利用单钻头作业的工作原理,将整张电路板分成某两个区域,是两个钻头

2、各自在这两个区域内类似上述中的单刀作业原理独立作业即可。关 键 词:单刀操作;双刀操作;绝对路径;转义字符;排列与组合 PUNCHING MACHINE PRODUCTION CFFICIENCY TO IMPROVE MATH STUDYABSTRACTAiming at the problem of the punching machine production efficiency improvement , we will give problem is divided into: single bit assignments and double bit assignment two

3、 cases. On the above two kinds of situations to make the following operation:Tool conversion problem single bit in homework, transform tool way analogy permutation and combination of symbols into a mathematical problem, by the combined form of Visual Basic software to generate all arrangement and to

4、 find the minimum transformation number of the group; Of single bit in the process of drilling bit behavior problems, using the computer JAVA programs to calculate the sum of the distance between the more points, the number of shortest ACTS in each point is calculate by running a computer program ,

5、such optimal tool transformation combined with the above way can make single bit drilling efficiency improved.For the working principle of the double drill can use a single bit assignments will be the whole circuit is divided into two regions, two drill respectively in the two areas is similar to th

6、e single pole assignment principle of independent operation.Key words: Single pole operation; Double pole operation; Absolute path; Escape character; Arrangement and Combination目录1前 言-12 问题分析-32.1单钻头打孔分析 -32.2双钻头打孔分析 -33模型假设-44符号说明-55模型建立-66模型求解-127模型验证-138模型评价与改进-149参考文献-1510致谢-16附件-171 前 言目前激光打孔主要

7、应用在航空航天、汽车制造、电子仪表、化工等行业。激光打孔的迅速发展,主要体现在打孔用YAG激光器的平均输出功率已由5年前的400w提高到了800w至1000w。国内目前比较成熟的激光打孔的应用是在人造金刚石和天然金刚石拉丝模的生产及钟表和仪表的宝石轴承、飞机叶片、多层印刷线路板等行业的生产中。目前使用的激光器多以YAG激光器、CO2激光器为主,也有一些准分子激光器、同位素激光器和半导体泵浦激光器。所以,如果能将打孔机的效能提高,这样不仅能提升工作效率、缩短工作时间,同时也可以降低生产成本、最大化的获取利润。那么如何提高打孔机效能就备受人们的关注。以下是对普通打孔机的实际信息调查:打孔机的生产效

8、能主要取决于以下几方面:(1)单个过孔的钻孔作业时间,这是由生产工艺决定,为了简化问题,这里假定对于同一孔型钻孔作业时间都是相同的;(2)打孔机在加工作业时,钻头的行进时间;(3)针对不同孔型加工作业时,刀具的转换时间。目前,实际采用的打孔机普遍是单钻头作业,即一个钻头进行打孔。现有某种钻头,上面装有8种刀具a,b,c, , h,依次排列呈圆环状,如图1所示。bcdefgha图1 某种钻头上8种刀具的分布情况而且8种刀具的顺序固定,不能调换。在加工作业时,一种刀具使用完毕后,可以转换使用另一种刀具。相邻两刀具的转换时间是18 s,例如,由刀具a转换到刀具b所用的时间是18s,其他情况以此类推。

9、作业时,可以采用顺时针旋转的方式转换刀具,例如,从刀具a转换到刀具b;也可以采用逆时针的方式转换刀具,例如,从刀具a转换到刀具h。将任一刀具转换至其它刀具处,所需时间是相应转换时间的累加,例如,从刀具a转换到刀具c,所需的时间是36s(采用顺时针方式)。为了简化问题,假定钻头的行进速度是相同的,为180 mm/s,行进成本为0.06元/mm,刀具转换的时间成本为7元/min。刀具在行进过程中可以同时进行刀具转换,但相应费用不减。不同的刀具加工不同的孔型,有的孔型只需一种刀具来完成,如孔型A只用到刀具a。有的孔型需要多种刀具及规定的加工次序来完成,如孔型C需要刀具a和刀具c,且加工次序为a,c。

10、表1列出了10种孔型所需加工刀具及加工次序(标*者表示该孔型对刀具加工次序没有限制)。表1 10种孔型所需加工刀具及加工次序孔型ABCDEFGHIJ所需刀具aba, cd, e*c, fg, h*d, g, fhe, cf, c一块线路板上的过孔全部加工完成后,再制作另一线路板。但在同一线路板上的过孔不要求加工完毕一个孔,再加工另一个孔,即对于须用两种或两种以上刀具加工的过孔,只要保证所需刀具加工次序正确即可。2 问题分析由于打孔机的生产效能主要受于以下几方面的影响:(1)单个过孔的钻孔作业时间,这是由生产工艺决定,为了简化问题,这里假定对于同一孔型钻孔作业时间都是相同的;(2)打孔机在加工作

11、业时,钻头的行径时间;(3)针对不同孔型加工作业时,刀具的转换时间。目前,实际采用的打孔机普遍是单钻头作业,即一个钻头进行打孔。1.1 问题一:1.1.1 怎样转换8种刀型才能使对于10种孔型的过孔操作用旋转次数最少?1.1.2 对于线路板上的所有孔型钻头如何选择路线使得行径最短?1.2 问题二:在问题一的基础上添加一条:如何才能够有效的将所有的点区分成上下或左右两部分?1.2.1 由于一张电路板上的孔型不同且所需的刀具也有差异从而导致钻头在工作中要即时的改变刀具,而刀具在转换的过程中也伴随着成本的产生,所以刀具的转换方式将决定成本高低,即对生产同种电路板中刀具旋转的次数越少则成本越低;同时钻

12、头的行进路线也会产生相应的费用,所以合适的路线也会影响成本的高低。因为对生产同种孔型作业时间相同且是定值,所以对整张电路板上的所有孔型的作业时间不会因刀具的转换方式及钻头的行进路线而改变,即完成整张电路板上所有孔的总过孔时间是一定值,只是取决于整张电路板上的总孔数量的多少。1.2.2 由问题一已经可以得出单刀作业的相应结论,对双刀作业可以仿造单刀作业的工作原理,将电路板分成左右或上下两个区域(此处不妨设左右)两个钻头在相应的区域内作业如同问题一中的单刀作业一样,所以我们只需在电路板上建立适当的平面坐标系(即:以下底边为x轴,下底边的中垂线为y轴建立平面坐标系)给出电路板上所有孔的中心坐标。3

13、模型假设(1) 对同种孔型的过孔时间相同(2) 转换某种刀型后将某种孔型的所有孔全部操作完之后在行进到下一类孔型进行过孔操作,将该类孔型中的所有孔全部操作完成后在行进到下一类孔型如此循环下去,直到所有孔型都不在需要此种刀型为止,然后按照拟定好的刀具旋转方式旋转下一个刀型如上一个刀型一样操作简单说即:单刀依次操作(3) 刀具在行进过程中可以同时进行刀具转换(4) 上一个刀型过完最后一个孔,转换刀型用时与钻头行进到下一刀型的第一个孔用时相同(5) 钻头的行进速度一定4 符号说明为了能够使问题表述清楚,这里引入一些数学符号::生产一张电路板的总耗时 (=1、2、310):每类孔型中的孔数量:刀具每次

14、转换的时间成本n:生产一张电路板中刀具旋转的总次数:钻头的单位行径的行进成本s:生产一张电路板中钻头的总行进:相邻刀具转换时间。:钻头的行进速度 (i=1、2、3.10):刀具过完十类孔型的行径分别为 (i=1、2、310)刀具过完十类孔型所用的时间分别为:生产一张电路板的总成本为5 模型建立对于问题一:根据提供的刀型和孔型,可以将其编制成一张109的表格如下:A-J表示孔型;a-h表示刀型;表格中凡有“”标记的表示该孔型需要该刀型;有序号“、”标记的表示使用的刀具有使用顺序; 对照表格建立集合群,如A孔型需要使用a刀头而G孔型需要d、g、f三种刀头,且还有的孔型使用的刀头次序不能变如:D、F

15、孔型。这样在设定刀具的旋转次序上带来难题,为了解决这个问题,我采用集合论的思想将一个孔型设为一个集合(共10个集合)而每个孔型所需要的刀具设为对应集合的元素,这样一个集合群就构建好了。接下来只要寻找到一种刀具的旋转次序能够将该集合群中的每一个元素都完全覆盖一次且这种旋次序数最小则问题一解决。ABCDEFGHIJabcdefgh表2 钻头刀具集合表根据上述的原理与分析,我们利用计算机Visual Basic编程设计出程序,来完成这一问题。程序的设计思路:以元素作为变量(即:8次);每个集合作为因变量;所有集合的所有元素数作为限制条件。如变量为a时可覆盖A、C中的a元素,但剩余元素没有被覆盖,则变

16、量转为剩余元素中的一个(不妨设为b),当变量为b时又可以覆盖B中b元素,可以看出集合群中依旧有元素没有别覆盖,则变量转为剩余元素中的一个(不妨设为c),当变量为c时可覆盖C、E、I、J中的c元素,如上方式依次进行下去直到所有集合中所有元素都被覆盖停止;并由程序计算出该种变量的变换次数(即:钻头的旋转次数),由此可以将能够完全覆盖集合群中的所有元素的变量变换次数,再由程序从中找出变换次数最小的一组变换方式即为最优钻头旋转方式。而对于最优作业线路,可根据有关电路板材料给定的孔型的中心坐标数据,利用Visual Basic拟合刀具转换方案,而最优转换方案与最优作业线路结合,必将最大程度提高单钻头的过

17、孔效率。当拟合完毕后,惊奇地发现,数据非常接近,而且比较符合实际。接下来,关于模型求解问题,顺理成章。为了使问题简单化,可以假设当选择某种刀型后,将整张电路板上所有当前需要用该种刀型的孔全部操作完后再转换刀型进行下一轮的如上操作;利用上面的表格可以看出旋转刀型的方式有多种的,如:第一次选择a刀型可以将所有的A孔型及C孔型加工完成,而下一次选择刀型可以是剩余刀型中的某一种,不妨为b刀型再如上将所有当前需用该刀型的孔即B孔加工完成,以下操作如上方法进行下去,直到所有孔完全加工完成停止。所以可以有上述方式设计计算机程序,计算出所有满足上述方法的刀具转换方式,并选出旋转次数最少的那种转换方式。程序见(

18、附录1);确定了刀具的转换方式,对于每过一个孔对于属于该孔型的所有点都打完,通过附录2的程序对这里的每一类孔型的所有点的行径路线中取最短的一条。解释如下:由电路板资料可知:A孔到J孔孔型的中心坐标,为了使求解便利,可以把每种孔型的坐标单独放入一个文本中,比如A孔的坐标存入HoleA.txt,依次下去,得到HoleAHoleJ.txt文件,其分别代表每种孔型的中心坐标。想要求出最短路径,先对坐标进行分析-原理如下:设计程序从文件中读取所有坐标,鉴于A孔坐标太多不利于及时测试,选取坐标较少的孔型如HoleJ.txt进行分析,程序原理:把得到的所有X,Y坐标封装到一个Point类中,把所有得到的类即

19、每种坐标的信息放在一个集合List里,则集合List中有了HoleJ的所有的坐标,使用全排列算法得到集合中所有点的一个全排列,对每一种排列用Point类中的计算长度的方法得出一个距离并把这个距离装到一个用于存放距离的集合中,至此得到了对于HoleJ中所有点的全排列并算出了对应的每一种排列的距离,然后设置一个方法把得到的用于存放所有关于点的全排列的距离的集合遍历然后进行比较排序得出最小的那个距离,即为所要求的对于该孔型J坐标点的最短路径。同样的可以用此方法得到所有孔型坐标的最短路径。则对于每种孔型的最短路径问题得到解决。首先介绍如何使用Java操作文本文件,方法如下:最初java是不支持对文本文

20、件的处理的,为了弥补这个缺憾而引入了Reader和Writer两个类,这两个类都是抽象类,Writer中 write(char ch,int off,intlength),flush()和close()方法为抽象方法,Reader中read(char ch,int off,int length)和close()方法是抽象方法。子类应该分别实现他们。当我们读写文本文件的时候,采用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader。其中最重要的类是InputStreamReader,它是字节转换为字符的桥梁。你可以在构造器重指定编码

21、的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如GBK等。当使用FileReader读取文件的时候。 FileReader fr = new FileReader(ming.txt); int ch = 0; while(ch = fr.read()!=-1 ) System.out.print(char)ch); 其中read()方法返回的是读取得下个字符。当然你也可以使用read(char ch,int off,int length)这和处理二进制文件的时候类似,不多说了。如果使用InputStreamReader来读取文件的时候while(ch = isr.read()!=-

22、1)System.out.print(char)ch);这和FileReader并没有什么区别,事实上在FileReader中的方法都是从InputStreamReader中继承过来的。read()方法是比较好费时间的,如果为了提高效率我们可以使用BufferedReader对Reader进行包装,这样可以提高读取得速度,我们可以一行一行的读取文本,使用readLine()方法。BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(ming.txt);String data = null

23、;while(data = br.readLine()!=null)System.out.println(data);当你明白了如何用Reader来读取文本文件的时候那么用Writer写文件同样非常简单。有一点需要注意,当你写文件的时候,为了提高效率,写入的数据会先放入缓冲区,然后写入文件。因此有时候你需要主动调用flush()方法。与上面对应的写文件的方法为: FileWriter fw = new FileWriter(hello.txt); String s = hello world; fw.write(s,0,s.length(); fw.flush(); OutputStreamW

24、riter osw = new OutputStreamWriter(new FileOutputStream(hello2.txt); osw.write(s,0,s.length(); osw.flush(); PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(hello3.txt),true); pw.println(s); 不要忘记用完后关闭流!下面是个小例子,帮助新手理解。其实有的时候java的IO系统是需要我们多记记的,不然哪天就生疏了。 import java.io.*; pu

25、blic class TestFile2 public static void main(String args) throws IOException FileReader fr = new FileReader(ming.txt); char buffer = new char1024; int ch = 0; while(ch = fr.read()!=-1 ) System.out.print(char)ch); InputStreamReader isr = new InputStreamReader(new FileInputStream(ming.txt); while(ch =

26、 isr.read()!=-1) System.out.print(char)ch); BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(ming.txt); String data = null; while(data = br.readLine()!=null) System.out.println(data); FileWriter fw = new FileWriter(hello.txt); String s = hello world; fw.write(s,0,s.le

27、ngth(); fw.flush(); OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream(hello2.txt); osw.write(s,0,s.length(); osw.flush(); PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(hello3.txt),true); pw.println(s); fr.close(); isr.close(); br.close(); fw.close();

28、 osw.close(); pw.close(); 附录2中有上文中的具体程序及方法的解释:得到所有点的程序getLists()全排列算法见perm(),计算每一种排列的距离方法为getLen(),得到最短距离的方法为getMinlen()。在运行时对要读取的那种孔型的文件路径修改即可。如要读A孔的坐标应把路径从C:lmjProblemsrcFileholeJ.txt 改为 (注意:要用 这里一个是转义字符)“HoleA的绝对路径holeA.txt”对于问题二:为提高打孔机效能,现在设计一种双钻头的打孔机(每个钻头的形状与单钻头相同),两钻头可以同时作业,且作业是独立的,即可以两个钻头同时进行

29、打孔,也可以一个钻头打孔,另一个钻头行进或转换刀具。可以类比问题一,将一张电路板平均的分为左右或上下两部分,两个钻头各自在相应的区域内工作。利用算法如下:首先定义三个点集合S、L、RS是指某类孔型的所有中心坐标的二维集合,L是指在建立的坐标系的y轴的左方的所有点集合(初始为空),R是指在建立的坐标系的y轴的右方的所有点集合(初始为空);然后将S中的点依次对的正负进行判断,如果则将该点添加到L集合中,否则添加到R集合中。利用附录3所给程序将AJ孔型中所有点分成左右两部分即可。然后两个钻头单个对两个区域各自进行单刀操作,路线与刀具的转换方式如问题一相同即可。利用附录1和附录2所编制的计算机程序可以

30、计算出:生产一张电路板中刀具旋转的最少总次数n=11(即:旋转方式为cdefghabc)最短总行径: 旋转刀具时间: =n*行进时间: =s/v操作完整张电路板的过孔时间: = 总耗时:t= 行进成本为 s*旋转钻头所产生的成本为 t(1)* 总成本为 = s*+ t(1)* 由本题题意可知只需给出的最小值即可。6 模型求解利用附录一中的程序计算出的结果:n=11利用附录二中的程序计算出最短路径s由题中信息得:=7元/min; =0.06元/mm; =18s; v=180mm/s;所以得出钻头旋转所用时间为:t(1)=11* 打孔机操作一张电路板的总成本为:=11*7*18/60+0.06*s

31、 7 模型验证对上述模型给予验证,不失一般性,不妨分别取每类孔型的前6个中心坐标。单刀作业:将这些坐标输入到JAVA编程软件中并运行附录2的程序,可计算出每类点间的最短行径分别为:(元)双钻头作业:将这些坐标输入到JAVA编程软件中并运行附录3的程序,可将这些点分成两个区域。然后类似上面的做法可算出两个钻头的作业成本分别为:(元)由结果可以看出双钻头工作效率要比单钻头的工作效率有了明显的提高。8 模型的评价与改进对本题所建立的数学模型中所利用线性求解方法,大大的降低了本题难度,具有较强的科学性及逻辑性,层次清楚,便于理解。不足之处在于附录1中所编制的Visual Basic程序只是考虑到部分实

32、际钻头工作情况,所以导致有些刀具转换方式有所遗漏;附录3,因为现有的知识有限所以导致编制的java程序较为繁琐,运行较为艰难(即:要求电脑配置较高情况下,可顺利求解)所以该模型较适合基础实施较高的企业。9 参考文献1杨明. Visual Basic高级语言程序设计基础. 北京:中国铁道出版社,2008: 2602陈东彦. 数学建模. 北京: 科学出版社,20073Bruce Eckel. java编程思想. 机械工程出版社,20074王晓东. 计算机算法设计与分析,北京:电子工业出版社(第3版),20075任玉杰. 数值分析MATLAB实现,北京:高等教育出版社,20076冯速. 组合数学,北

33、京:机械工业出版社(第5版),20127翟宗荫. 排列和组合,上海:上海教育出版社,1964:888王连笑. 组合数浅谈, 哈尔滨:哈尔滨工业大学出版社,2012:115致谢大学四年学习时光已经接近尾声,在此我想对我的母校,我的父母、亲人们,我的老师和同学们表达我由衷的谢意。这次毕业论文设计我得到了很多老师和同学的帮助,其中我的论文指导老师对我的关心和支持尤为重要。每次遇到难题,我最先做的就是向老师寻求帮助,而老师每次不管忙或闲,总会抽空来找我面谈,然后一起商量解决的办法。老师平日里工作繁多,但我做毕业设计的每个阶段,从选题到查阅资料,论文提纲的确定,中期论文的修改,后期论文格式调整等各个环节

34、中都给予了我悉心的指导。在此谨向刘老师致以诚挚的谢意和崇高的敬意。同时,本篇毕业论文的写作也得到了一些同学的热情帮助。感谢在整个毕业设计期间和我密切合作的同学,和曾经在各个方面给予过我帮助的伙伴们,在此,我再一次真诚地向帮助过我的老师和同学表示感谢!附录附录1sub form_click()string A=a; string B=b; string C=a; string D=d; string; E=cf;string F=gh; string G=dfg; string H=h; string; I=ec;string J=fcX=inputbox(请依次输入a-g中的一个字母)Dofo

35、r i=X to h for j=A to J for x=1 to Len(j) if i=lift(j,x) then string j= end if Next x Next j s=s+1 Next iS(s)=S(s)+1Loop until string A= And string B= And string C= And string D= And string E= And string F= And string G= And string H= And string I= And string J= print 输出旋转次数 S(S)附录2package solution;

36、import java.io.BufferedReader;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import java.util.regex.Matcher;import java.util.regex.Pattern;public class Divide private static String sa = null;private static d

37、ouble xx;private static double yy;public static List listA = new ArrayList();public static List listB = new ArrayList();private static List lists = new ArrayList();public static String getX(String sa) String result = null;String regex=XX,*Y;Pattern p = Ppile(regex); Matcher m = p.matcher(sa);while(m

38、.find()result = m.group().substring(1, m.group().length()-1);return result;public static String getY(String sa)String result = null;String regex=YY,*;Pattern p = Ppile(regex); Matcher m = p.matcher(sa);while(m.find()result= m.group().substring(1, m.group().length();return result;public static void g

39、etLists() throws Exception, IOExceptionBufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(C:lmjProblemsrcFileholeJ.txt); String data = null; while(data = br.readLine()!=null) sa =data; xx = Double.parseDouble(getX(sa); yy = Double.parseDouble(getY(sa); lists.add(new Point(xx,yy); /System.out.println(x = +x + y = +y); br.close();public static void divide(List lists)Point p ;for(int i=0;i0) listA.add(p);else listB.add(p);public static vo

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 小学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com