打孔機(jī)生產(chǎn)效能提高的數(shù)學(xué)研究畢業(yè)論文_第1頁(yè)
已閱讀1頁(yè),還剩30頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  打孔機(jī)生產(chǎn)效能提高的數(shù)學(xué)研究</p><p><b>  摘 要</b></p><p>  針對(duì)“打孔機(jī)生產(chǎn)效能的提高”問(wèn)題,我們將給問(wèn)題劃分為:?jiǎn)毋@頭作業(yè)和雙鉆頭作業(yè)兩種情況。在針對(duì)以上兩種情形做出以下操作:</p><p>  一、對(duì)單鉆頭作業(yè)中的刀具轉(zhuǎn)換方式問(wèn)題,將刀具的轉(zhuǎn)換方式類比成數(shù)學(xué)中的符號(hào)排列組合問(wèn)題,由

2、Visual Basic軟件生成所有排列的組合形式,再找出變換次數(shù)最少的那一組;對(duì)單鉆頭在打孔過(guò)程中的鉆頭行徑問(wèn)題,利用計(jì)算機(jī)JAVA程序計(jì)算出多點(diǎn)間距離之和,由運(yùn)行計(jì)算機(jī)程序計(jì)算出每類點(diǎn)的最短行徑數(shù),這樣結(jié)合上面的最優(yōu)刀具轉(zhuǎn)換方式就可以使單鉆頭打孔效能提高。</p><p>  二、對(duì)雙鉆頭可利用單鉆頭作業(yè)的工作原理,將整張電路板分成某兩個(gè)區(qū)域,是兩個(gè)鉆頭各自在這兩個(gè)區(qū)域內(nèi)類似上述中的單刀作業(yè)原理獨(dú)立作業(yè)即可。

3、</p><p>  關(guān) 鍵 詞:?jiǎn)蔚恫僮鳎浑p刀操作;絕對(duì)路徑;轉(zhuǎn)義字符;排列與組合 </p><p>  PUNCHING MACHINE PRODUCTION CFFICIENCY TO IMPROVE MATH STUDY</p><p><b>  ABSTRACT</b></p><p>  Aiming at

4、 the problem of the punching machine production efficiency improvement , we will give problem is divided into: single bit assignments and double bit assignment two cases. On the above two kinds of situations to make the

5、following operation:</p><p>  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 Bas

6、ic software to generate all arrangement and to 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

7、 the distance between the more points, the number of shortest ACTS in each point is calculate by runnin</p><p>  For the working principle of the double drill can use a single bit assignments will be the who

8、le circuit is divided into two regions, two drill respectively in the two areas is similar to the single pole assignment principle of independent operation.</p><p>  Key words: Single pole operation; Double

9、pole operation; Absolute path; Escape character; Arrangement and Combination</p><p><b>  目錄</b></p><p>  1前 言----------------------------------------------------------------------

10、----------------1</p><p>  2 問(wèn)題分析-------------------------------------------------------------------------------------------3</p><p>  2.1單鉆頭打孔分析 ------------------------------------------------

11、--------------------------3</p><p>  2.2雙鉆頭打孔分析 ----------------------------------------------------------------------------3</p><p>  3模型假設(shè)------------------------------------------------------

12、--------------------------------------4</p><p>  4符號(hào)說(shuō)明--------------------------------------------------------------------------------------------5</p><p>  5模型建立--------------------------------

13、----------------------------------------------------6</p><p>  6模型求解-------------------------------------------------------------------------------------------12</p><p>  7模型驗(yàn)證------------------

14、-------------------------------------------------------------------------13</p><p>  8模型評(píng)價(jià)與改進(jìn)----------------------------------------------------------------------------------14</p><p>  9參考文獻(xiàn)--

15、---------------------------------------------------------------------------------------15</p><p>  10致謝-----------------------------------------------------------------------------------------------16</p&

16、gt;<p>  附件-----------------------------------------------------------------------------------------------17</p><p><b>  1 前 言</b></p><p>  目前激光打孔主要應(yīng)用在航空航天、汽車(chē)制造、電子儀表、化工等行業(yè)。激光

17、打孔的迅速發(fā)展,主要體現(xiàn)在打孔用YAG激光器的平均輸出功率已由5年前的400w提高到了800w至1000w。國(guó)內(nèi)目前比較成熟的激光打孔的應(yīng)用是在人造金剛石和天然金剛石拉絲模的生產(chǎn)及鐘表和儀表的寶石軸承、飛機(jī)葉片、多層印刷線路板等行業(yè)的生產(chǎn)中。</p><p>  目前使用的激光器多以YAG激光器、CO2激光器為主,也有一些準(zhǔn)分子激光器、同位素激光器和半導(dǎo)體泵浦激光器。所以,如果能將打孔機(jī)的效能提高,這樣不僅能提升

18、工作效率、縮短工作時(shí)間,同時(shí)也可以降低生產(chǎn)成本、最大化的獲取利潤(rùn)。那么如何提高打孔機(jī)效能就備受人們的關(guān)注。</p><p>  以下是對(duì)普通打孔機(jī)的實(shí)際信息調(diào)查:</p><p>  打孔機(jī)的生產(chǎn)效能主要取決于以下幾方面:(1)單個(gè)過(guò)孔的鉆孔作業(yè)時(shí)間,這是由生產(chǎn)工藝決定,為了簡(jiǎn)化問(wèn)題,這里假定對(duì)于同一孔型鉆孔作業(yè)時(shí)間都是相同的;(2)打孔機(jī)在加工作業(yè)時(shí),鉆頭的行進(jìn)時(shí)間;(3)針對(duì)不同孔型加

19、工作業(yè)時(shí),刀具的轉(zhuǎn)換時(shí)間。目前,實(shí)際采用的打孔機(jī)普遍是單鉆頭作業(yè),即一個(gè)鉆頭進(jìn)行打孔。</p><p>  現(xiàn)有某種鉆頭,上面裝有8種刀具a,b,c,… , h,依次排列呈圓環(huán)狀,如圖1所示。</p><p>  圖1 某種鉆頭上8種刀具的分布情況</p><p>  而且8種刀具的順序固定,不能調(diào)換。在加工作業(yè)時(shí),一種刀具使用完畢后,可以轉(zhuǎn)換使用另一種刀具。相鄰兩

20、刀具的轉(zhuǎn)換時(shí)間是18 s,例如,由刀具a轉(zhuǎn)換到刀具b所用的時(shí)間是18s,其他情況以此類推。作業(yè)時(shí),可以采用順時(shí)針旋轉(zhuǎn)的方式轉(zhuǎn)換刀具,例如,從刀具a轉(zhuǎn)換到刀具b;也可以采用逆時(shí)針的方式轉(zhuǎn)換刀具,例如,從刀具a轉(zhuǎn)換到刀具h(yuǎn)。將任一刀具轉(zhuǎn)換至其它刀具處,所需時(shí)間是相應(yīng)轉(zhuǎn)換時(shí)間的累加,例如,從刀具a轉(zhuǎn)換到刀具c,所需的時(shí)間是36s(采用順時(shí)針?lè)绞剑?。為了?jiǎn)化問(wèn)題,假定鉆頭的行進(jìn)速度是相同的,為180 mm/s,行進(jìn)成本為0.06元/mm,刀具轉(zhuǎn)

21、換的時(shí)間成本為7元/min。刀具在行進(jìn)過(guò)程中可以同時(shí)進(jìn)行刀具轉(zhuǎn)換,但相應(yīng)費(fèi)用不減。</p><p>  不同的刀具加工不同的孔型,有的孔型只需一種刀具來(lái)完成,如孔型A只用到刀具a。有的孔型需要多種刀具及規(guī)定的加工次序來(lái)完成,如孔型C需要刀具a和刀具c,且加工次序?yàn)閍,c。表1列出了10種孔型所需加工刀具及加工次序(標(biāo)*者表示該孔型對(duì)刀具加工次序沒(méi)有限制)。</p><p>  表1 10種

22、孔型所需加工刀具及加工次序</p><p>  一塊線路板上的過(guò)孔全部加工完成后,再制作另一線路板。但在同一線路板上的過(guò)孔不要求加工完畢一個(gè)孔,再加工另一個(gè)孔,即對(duì)于須用兩種或兩種以上刀具加工的過(guò)孔,只要保證所需刀具加工次序正確即可。</p><p><b>  2 問(wèn)題分析</b></p><p>  由于打孔機(jī)的生產(chǎn)效能主要受于以下幾方面的

23、影響:</p><p> ?。?)單個(gè)過(guò)孔的鉆孔作業(yè)時(shí)間,這是由生產(chǎn)工藝決定,為了簡(jiǎn)化問(wèn)題,這里假定對(duì)于同一孔型鉆孔作業(yè)時(shí)間都是相同的;</p><p> ?。?)打孔機(jī)在加工作業(yè)時(shí),鉆頭的行徑時(shí)間;</p><p>  (3)針對(duì)不同孔型加工作業(yè)時(shí),刀具的轉(zhuǎn)換時(shí)間。目前,實(shí)際采用的打孔機(jī)普遍是單鉆頭作業(yè),即一個(gè)鉆頭進(jìn)行打孔。</p><p>

24、;<b>  1.1 問(wèn)題一:</b></p><p>  1.1.1 怎樣轉(zhuǎn)換8種刀型才能使對(duì)于10種孔型的過(guò)孔操作用旋轉(zhuǎn)次數(shù)最少?</p><p>  1.1.2 對(duì)于線路板上的所有孔型鉆頭如何選擇路線使得行徑最短?</p><p><b>  1.2 問(wèn)題二:</b></p><p>  在問(wèn)

25、題一的基礎(chǔ)上添加一條:如何才能夠有效的將所有的點(diǎn)區(qū)分成上下或左右兩部分?</p><p>  1.2.1 由于一張電路板上的孔型不同且所需的刀具也有差異從而導(dǎo)致鉆頭在工作中要即時(shí)的改變刀具,而刀具在轉(zhuǎn)換的過(guò)程中也伴隨著成本的產(chǎn)生,所以刀具的轉(zhuǎn)換方式將決定成本高低,即對(duì)生產(chǎn)同種電路板中刀具旋轉(zhuǎn)的次數(shù)越少則成本越低;同時(shí)鉆頭的行進(jìn)路線也會(huì)產(chǎn)生相應(yīng)的費(fèi)用,所以合適的路線也會(huì)影響成本的高低。因?yàn)閷?duì)生產(chǎn)同種孔型作業(yè)時(shí)間相同

26、且是定值,所以對(duì)整張電路板上的所有孔型的作業(yè)時(shí)間不會(huì)因刀具的轉(zhuǎn)換方式及鉆頭的行進(jìn)路線而改變,即完成整張電路板上所有孔的總過(guò)孔時(shí)間是一定值,只是取決于整張電路板上的總孔數(shù)量的多少。</p><p>  1.2.2 由問(wèn)題一已經(jīng)可以得出單刀作業(yè)的相應(yīng)結(jié)論,對(duì)雙刀作業(yè)可以仿造單刀作業(yè)的工作原理,將電路板分成左右或上下兩個(gè)區(qū)域(此處不妨設(shè)左右)兩個(gè)鉆頭在相應(yīng)的區(qū)域內(nèi)作業(yè)如同問(wèn)題一中的單刀作業(yè)一樣,所以我們只需在電路板上建

27、立適當(dāng)?shù)钠矫孀鴺?biāo)系(即:以下底邊為x軸,下底邊的中垂線為y軸建立平面坐標(biāo)系)給出電路板上所有孔的中心坐標(biāo)。</p><p><b>  3 模型假設(shè)</b></p><p>  (1) 對(duì)同種孔型的過(guò)孔時(shí)間相同</p><p>  (2) 轉(zhuǎn)換某種刀型后將某種孔型的所有孔全部操作完之后在行進(jìn)到下一類孔型進(jìn)行過(guò)孔操作,將該類孔型中的所有孔全部操作

28、完成后在行進(jìn)到下一類孔型如此循環(huán)下去,直到所有孔型都不在需要此種刀型為止,然后按照擬定好的刀具旋轉(zhuǎn)方式旋轉(zhuǎn)下一個(gè)刀型如上一個(gè)刀型一樣操作——簡(jiǎn)單說(shuō)即:?jiǎn)蔚兑来尾僮?lt;/p><p>  (3) 刀具在行進(jìn)過(guò)程中可以同時(shí)進(jìn)行刀具轉(zhuǎn)換</p><p>  (4) 上一個(gè)刀型過(guò)完最后一個(gè)孔,轉(zhuǎn)換刀型用時(shí)與鉆頭行進(jìn)到下一刀型的第一個(gè)孔用時(shí)相同</p><p>  (5) 鉆頭

29、的行進(jìn)速度一定</p><p><b>  4 符號(hào)說(shuō)明</b></p><p>  為了能夠使問(wèn)題表述清楚,這里引入一些數(shù)學(xué)符號(hào):</p><p>  :生產(chǎn)一張電路板的總耗時(shí)</p><p> ?。?1、2、3……10):每類孔型中的孔數(shù)量</p><p>  α:刀具每次轉(zhuǎn)換的時(shí)間成本<

30、;/p><p>  n:生產(chǎn)一張電路板中刀具旋轉(zhuǎn)的總次數(shù)</p><p>  β:鉆頭的單位行徑的行進(jìn)成本</p><p>  s:生產(chǎn)一張電路板中鉆頭的總行進(jìn)</p><p>  τ:相鄰刀具轉(zhuǎn)換時(shí)間。</p><p><b>  ν:鉆頭的行進(jìn)速度</b></p><p>

31、  (i=1、2、3……..10):刀具過(guò)完十類孔型的行徑分別為</p><p>  (i=1、2、3………10)刀具過(guò)完十類孔型所用的時(shí)間分別為</p><p>  Ψ:生產(chǎn)一張電路板的總成本為</p><p><b>  5 模型建立</b></p><p>  對(duì)于問(wèn)題一:根據(jù)提供的刀型和孔型,可以將其編制成一張1

32、0×9的表格如下:</p><p>  [A--J表示孔型;a--h表示刀型;表格中凡有“√”標(biāo)記的表示該孔型需要該刀型;</p><p>  有序號(hào)“①、②、③”標(biāo)記的表示使用的刀具有使用順序;]</p><p>  對(duì)照表格建立集合群,如A孔型需要使用a刀頭而G孔型需要d、g、f三種刀頭,且還有的孔型使用的刀頭次序不能變?nèi)纾篋、F孔型。這樣在設(shè)定刀具的

33、旋轉(zhuǎn)次序上帶來(lái)難題,為了解決這個(gè)問(wèn)題,我采用集合論的思想將一個(gè)孔型設(shè)為一個(gè)集合(共10個(gè)集合)而每個(gè)孔型所需要的刀具設(shè)為對(duì)應(yīng)集合的元素,這樣一個(gè)集合群就構(gòu)建好了。</p><p>  接下來(lái)只要尋找到一種刀具的旋轉(zhuǎn)次序能夠?qū)⒃摷先褐械拿恳粋€(gè)元素都完全覆蓋一次且這種旋次序數(shù)最小則問(wèn)題一解決。</p><p>  表2 鉆頭刀具集合表</p><p>  根據(jù)上述的原

34、理與分析,我們利用計(jì)算機(jī)Visual Basic編程設(shè)計(jì)出程序,來(lái)完成這一問(wèn)題。</p><p>  程序的設(shè)計(jì)思路:以元素作為變量(即:8次);每個(gè)集合作為因變量;所有集合的所有元素?cái)?shù)作為限制條件。如變量為a時(shí)可覆蓋A、C中的a元素,但剩余元素沒(méi)有被覆蓋,則變量轉(zhuǎn)為剩余元素中的一個(gè)(不妨設(shè)為b),當(dāng)變量為b時(shí)又可以覆蓋B中b元素,可以看出集合群中依舊有元素沒(méi)有別覆蓋,則變量轉(zhuǎn)為剩余元素中的一個(gè)(不妨設(shè)為c),當(dāng)

35、變量為c時(shí)可覆蓋C、E、I、J中的c元素,如上方式依次進(jìn)行下去直到所有集合中所有元素都被覆蓋停止;并由程序計(jì)算出該種變量的變換次數(shù)(即:鉆頭的旋轉(zhuǎn)次數(shù)),由此可以將能夠完全覆蓋集合群中的所有元素的變量變換次數(shù),再由程序從中找出變換次數(shù)最小的一組變換方式即為最優(yōu)鉆頭旋轉(zhuǎn)方式。</p><p>  而對(duì)于最優(yōu)作業(yè)線路,可根據(jù)有關(guān)電路板材料給定的孔型的中心坐標(biāo)數(shù)據(jù),利用Visual Basic擬合刀具轉(zhuǎn)換方案,而最優(yōu)轉(zhuǎn)

36、換方案與最優(yōu)作業(yè)線路結(jié)合,必將最大程度提高單鉆頭的過(guò)孔效率。當(dāng)擬合完畢后,驚奇地發(fā)現(xiàn),數(shù)據(jù)非常接近,而且比較符合實(shí)際。接下來(lái),關(guān)于模型求解問(wèn)題,順理成章。</p><p>  為了使問(wèn)題簡(jiǎn)單化,可以假設(shè)當(dāng)選擇某種刀型后,將整張電路板上所有當(dāng)前需要用該種刀型的孔全部操作完后再轉(zhuǎn)換刀型進(jìn)行下一輪的如上操作;利用上面的表格可以看出旋轉(zhuǎn)刀型的方式有多種的,如:第一次選擇a刀型可以將所有的A孔型及C孔型加工完成,而下一次選

37、擇刀型可以是剩余刀型中的某一種,不妨為b刀型再如上將所有當(dāng)前需用該刀型的孔即B孔加工完成,以下操作如上方法進(jìn)行下去,直到所有孔完全加工完成停止。所以可以有上述方式設(shè)計(jì)計(jì)算機(jī)程序,計(jì)算出所有滿足上述方法的刀具轉(zhuǎn)換方式,并選出旋轉(zhuǎn)次數(shù)最少的那種轉(zhuǎn)換方式。程序見(jiàn)(附錄1);</p><p>  確定了刀具的轉(zhuǎn)換方式,對(duì)于每過(guò)一個(gè)孔對(duì)于屬于該孔型的所有點(diǎn)都打完,通過(guò)附錄2的程序?qū)@里的每一類孔型的所有點(diǎn)的行徑路線中取最短

38、的一條。</p><p>  解釋如下:由電路板資料可知:A孔到J孔孔型的中心坐標(biāo),為了使求解便利,可以把每種孔型的坐標(biāo)單獨(dú)放入一個(gè)文本中,比如A孔的坐標(biāo)存入HoleA.txt,依次下去,得到HoleA~HoleJ.txt文件,其分別代表每種孔型的中心坐標(biāo)。想要求出最短路徑,先對(duì)坐標(biāo)進(jìn)行分析-原理如下:設(shè)計(jì)程序從文件中讀取所有坐標(biāo),鑒于A孔坐標(biāo)太多不利于及時(shí)測(cè)試,選取坐標(biāo)較少的孔型如HoleJ.txt進(jìn)行分析,程

39、序原理:把得到的所有X,Y坐標(biāo)封裝到一個(gè)Point類中,把所有得到的類即每種坐標(biāo)的信息放在一個(gè)集合List里,則集合List中有了HoleJ的所有的坐標(biāo),使用全排列算法得到集合中所有點(diǎn)的一個(gè)全排列,對(duì)每一種排列用Point類中的計(jì)算長(zhǎng)度的方法得出一個(gè)距離并把這個(gè)距離裝到一個(gè)用于存放距離的集合中,至此得到了對(duì)于HoleJ中所有點(diǎn)的全排列并算出了對(duì)應(yīng)的每一種排列的距離,然后設(shè)置一個(gè)方法把得到的用于存放所有關(guān)于點(diǎn)的全排列的距離的集合遍歷然后進(jìn)

40、行比較排序得出最小的那個(gè)距離,即為所要求的對(duì)于該孔型J坐標(biāo)點(diǎn)的最短路徑。同樣的可以用此方法得到所有孔型坐標(biāo)的最短路徑。則對(duì)于每種孔型的最短路徑問(wèn)題得到解決。</p><p>  首先介紹如何使用Java操作文本文件,方法如下:</p><p>  最初java是不支持對(duì)文本文件的處理的,為了彌補(bǔ)這個(gè)缺憾而引入了Reader和Writer兩個(gè)類,這兩個(gè)類都是抽象類,Writer中 write

41、(char[] ch,int off,intlength),flush()和close()方法為抽象方法,Reader中read(char[] ch,int off,int length)和close()方法是抽象方法。子類應(yīng)該分別實(shí)現(xiàn)他們。</p><p>  當(dāng)我們讀寫(xiě)文本文件的時(shí)候,采用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader。其中

42、最重要的類是InputStreamReader,</p><p>  它是字節(jié)轉(zhuǎn)換為字符的橋梁。你可以在構(gòu)造器重指定編碼的方式,如果不指定的話將采用底層操作系統(tǒng)的默認(rèn)編碼方式,例如GBK等。當(dāng)使用FileReader讀取文件的時(shí)候。</p><p>  FileReader fr = new FileReader("ming.txt"); </p>&l

43、t;p>  int ch = 0; </p><p>  while((ch = fr.read())!=-1 ) </p><p>  {System.out.print((char)ch);} </p><p>  其中read()方法返回的是讀取得下個(gè)字符。當(dāng)然你也可以使用read(char[] ch,int off,int length)這和處理

44、二進(jìn)制文件的時(shí)候類似,不多說(shuō)了。如果使用InputStreamReader來(lái)讀取文件的時(shí)候while((ch = isr.read())!=-1){System.out.print((char)ch);}這和FileReader并沒(méi)有什么區(qū)別,事實(shí)上在FileReader中的方法都是從InputStreamReader中繼承過(guò)來(lái)的。read()方法是比較好費(fèi)時(shí)間的,如果為了提高效率我們可以使用BufferedReader對(duì)Reader進(jìn)

45、行包裝,這樣可以提高讀取得速度,我們可以一行一行的讀取文本,使用readLine()方法。</p><p>  BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));</p><p>  String data = null;</

46、p><p>  while((data = br.readLine())!=null)</p><p>  {System.out.println(data);}</p><p>  當(dāng)你明白了如何用Reader來(lái)讀取文本文件的時(shí)候那么用Writer寫(xiě)文件同樣非常簡(jiǎn)單。有一點(diǎn)需要注意,當(dāng)你寫(xiě)文件的時(shí)候,為了提高效率,寫(xiě)入的數(shù)據(jù)會(huì)先</p><p>

47、;  放入緩沖區(qū),然后寫(xiě)入文件。因此有時(shí)候你需要主動(dòng)調(diào)用flush()方法。與上面對(duì)應(yīng)的寫(xiě)文件的方法為:</p><p>  FileWriter fw = new FileWriter("hello.txt"); </p><p>  String s = "hello world"; </p><p>  fw.wri

48、te(s,0,s.length()); </p><p>  fw.flush(); </p><p>  OutputStreamWriter osw = new OutputStreamWriter(new FileOutputStream("hello2.txt")); </p><p>  osw.write(s,0,s.lengt

49、h()); </p><p>  osw.flush(); </p><p>  PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream("hello3.txt")),true); </p><p>  pw.println(s); <

50、/p><p>  不要忘記用完后關(guān)閉流!下面是個(gè)小例子,幫助新手理解。其實(shí)有的時(shí)候java的IO系統(tǒng)是需要我們多記記的,不然哪天就生疏了。</p><p>  import java.io.*; </p><p>  public class TestFile2 </p><p>  {public static void main(Stri

51、ng[] args) throws IOException </p><p>  {FileReader fr = new FileReader("ming.txt"); </p><p>  char[] buffer = new char[1024]; </p><p>  int ch = 0; </p><p&

52、gt;  while((ch = fr.read())!=-1 ) </p><p>  {System.out.print((char)ch); } </p><p>  InputStreamReader isr = new InputStreamReader(new FileInputStream("ming.txt")); </p><

53、;p>  while((ch = isr.read())!=-1) </p><p>  {System.out.print((char)ch);} </p><p>  BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("ming.txt")));

54、 </p><p>  String data = null; </p><p>  while((data = br.readLine())!=null) </p><p>  { System.out.println(data);} </p><p>  FileWriter fw = new FileWriter("h

55、ello.txt"); </p><p>  String s = "hello world"; </p><p>  fw.write(s,0,s.length()); </p><p>  fw.flush(); </p><p>  OutputStreamWriter osw = new Outp

56、utStreamWriter(new FileOutputStream("hello2.txt")); </p><p>  osw.write(s,0,s.length()); </p><p>  osw.flush(); </p><p>  PrintWriter pw = new PrintWriter(new OutputStr

57、eamWriter(new FileOutputStream("hello3.txt")),true); </p><p>  pw.println(s); </p><p>  fr.close(); </p><p>  isr.close(); </p><p>  br.close(); </p&g

58、t;<p>  fw.close(); </p><p>  osw.close(); </p><p>  pw.close(); }} </p><p>  附錄2中有上文中的具體程序及方法的解釋:得到所有點(diǎn)的程序getLists()全排列算法見(jiàn)perm(),計(jì)算每一種排列的距離方法為getLen(),得到最短距離的方法為getMinlen

59、()。</p><p>  在運(yùn)行時(shí)對(duì)要讀取的那種孔型的文件路徑修改即可。如要讀A孔的坐標(biāo)應(yīng)把路徑從C:\\lmj\\Problem\\src\\File\\holeJ.txt 改為 (注意:要用\\ 這里一個(gè)\是轉(zhuǎn)義字符)“HoleA的絕對(duì)路徑\\holeA.txt”</p><p>  對(duì)于問(wèn)題二:為提高打孔機(jī)效能,現(xiàn)在設(shè)計(jì)一種雙鉆頭的打孔機(jī)(每個(gè)鉆頭的形狀與單鉆頭相同),兩鉆頭可以同

60、時(shí)作業(yè),且作業(yè)是獨(dú)立的,即可以兩個(gè)鉆頭同時(shí)進(jìn)行打孔,也可以一個(gè)鉆頭打孔,另一個(gè)鉆頭行進(jìn)或轉(zhuǎn)換刀具??梢灶惐葐?wèn)題一,將一張電路板平均的分為左右或上下兩部分,兩個(gè)鉆頭各自在相應(yīng)的區(qū)域內(nèi)工作。</p><p>  利用算法如下:首先定義三個(gè)點(diǎn)集合S、L、R</p><p>  S是指某類孔型的所有中心坐標(biāo)的二維集合,L是指在建立的坐標(biāo)系的y軸的左方的所有點(diǎn)集合(初始為空),R是指在建立的坐標(biāo)系的

61、y軸的右方的所有點(diǎn)集合(初始為空);然后將S中的點(diǎn)依次對(duì)的正負(fù)進(jìn)行判斷,如果則將該點(diǎn)添加到L集合中,否則添加到R集合中。</p><p>  利用附錄3所給程序?qū)~J孔型中所有點(diǎn)分成左右兩部分即可。</p><p>  然后兩個(gè)鉆頭單個(gè)對(duì)兩個(gè)區(qū)域各自進(jìn)行單刀操作,路線與刀具的轉(zhuǎn)換方式如問(wèn)題一相同即可。</p><p>  利用附錄1和附錄2所編制的計(jì)算機(jī)程序可以計(jì)

62、算出:</p><p>  生產(chǎn)一張電路板中刀具旋轉(zhuǎn)的最少總次數(shù)n=11</p><p> ?。矗盒D(zhuǎn)方式為c→d→e→f→g→h→a→b→c)</p><p><b>  最短總行徑: </b></p><p>  旋轉(zhuǎn)刀具時(shí)間: =n*τ</p><p>  行進(jìn)時(shí)間: =s/v</p

63、><p>  操作完整張電路板的過(guò)孔時(shí)間: = </p><p><b>  總耗時(shí):t= </b></p><p>  行進(jìn)成本為 s*β</p><p>  旋轉(zhuǎn)鉆頭所產(chǎn)生的成本為 t(1)* α</p><p>  總成本為

64、 Ψ= s*β+ t(1)* α</p><p>  由本題題意可知只需給出Ψ的最小值即可。</p><p><b>  6 模型求解</b></p><p>  利用附錄一中的程序計(jì)算出的結(jié)果:n=11</p><p>  利用附錄二中的程序計(jì)算出最短路徑s</p

65、><p>  由題中信息得:α=7元/min; β=0.06元/mm; τ=18s; v=180mm/s;</p><p>  所以得出鉆頭旋轉(zhuǎn)所用時(shí)間為:t(1)=11*τ </p><p>  打孔機(jī)操作一張電路板的總成本為:Ψ=11*7*18/60+0.06*s </p><p><b>  7 模型驗(yàn)證<

66、;/b></p><p>  對(duì)上述模型給予驗(yàn)證,不失一般性,不妨分別取每類孔型的前6個(gè)中心坐標(biāo)。</p><p><b>  單刀作業(yè):</b></p><p>  將這些坐標(biāo)輸入到JAVA編程軟件中并運(yùn)行附錄2的程序,可計(jì)算出每類點(diǎn)間的最短行徑分別為:</p><p><b>  (元)</b&

67、gt;</p><p><b>  雙鉆頭作業(yè):</b></p><p>  將這些坐標(biāo)輸入到JAVA編程軟件中并運(yùn)行附錄3的程序,可將這些點(diǎn)分成兩個(gè)區(qū)域。然后類似上面的做法可算出兩個(gè)鉆頭的作業(yè)成本分別為:</p><p><b>  (元)</b></p><p>  由結(jié)果可以看出雙鉆頭工作效率

68、要比單鉆頭的工作效率有了明顯的提高。</p><p>  8 模型的評(píng)價(jià)與改進(jìn)</p><p>  對(duì)本題所建立的數(shù)學(xué)模型中所利用線性求解方法,大大的降低了本題難度,具有較強(qiáng)的科學(xué)性及邏輯性,層次清楚,便于理解。不足之處在于附錄1中所編制的Visual Basic程序只是考慮到部分實(shí)際鉆頭工作情況,所以導(dǎo)致有些刀具轉(zhuǎn)換方式有所遺漏;附錄3,因?yàn)楝F(xiàn)有的知識(shí)有限所以導(dǎo)致編制的java程序較為繁

69、瑣,運(yùn)行較為艱難(即:要求電腦配置較高情況下,可順利求解)所以該模型較適合基礎(chǔ)實(shí)施較高的企業(yè)。</p><p><b>  9 參考文獻(xiàn)</b></p><p>  [1]楊明. Visual Basic高級(jí)語(yǔ)言程序設(shè)計(jì)基礎(chǔ). 北京:中國(guó)鐵道出版社,2008: 260</p><p>  [2]陳東彥. 數(shù)學(xué)建模. 北京: 科學(xué)出版社,2007

70、</p><p>  [3]Bruce Eckel. java編程思想. 機(jī)械工程出版社,2007</p><p>  [4]王曉東. 計(jì)算機(jī)算法設(shè)計(jì)與分析,北京:電子工業(yè)出版社(第3版),2007</p><p>  [5]任玉杰. 數(shù)值分析MATLAB實(shí)現(xiàn),北京:高等教育出版社,2007</p><p>  [6]馮速. 組合數(shù)學(xué),北京:

71、機(jī)械工業(yè)出版社(第5版),2012</p><p>  [7]翟宗蔭. 排列和組合,上海:上海教育出版社,1964:88</p><p>  [8]王連笑. 組合數(shù)淺談, 哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2012:115</p><p><b>  致謝</b></p><p>  大學(xué)四年學(xué)習(xí)時(shí)光已經(jīng)接近尾聲,在此我想對(duì)

72、我的母校,我的父母、親人們,我的老師和同學(xué)們表達(dá)我由衷的謝意。</p><p>  這次畢業(yè)論文設(shè)計(jì)我得到了很多老師和同學(xué)的幫助,其中我的論文指導(dǎo)老師對(duì)我的關(guān)心和支持尤為重要。每次遇到難題,我最先做的就是向老師尋求幫助,而老師每次不管忙或閑,總會(huì)抽空來(lái)找我面談,然后一起商量解決的辦法。老師平日里工作繁多,但我做畢業(yè)設(shè)計(jì)的每個(gè)階段,從選題到查閱資料,論文提綱的確定,中期論文的修改,后期論文格式調(diào)整等各個(gè)環(huán)節(jié)中都給予

73、了我悉心的指導(dǎo)。在此謹(jǐn)向劉老師致以誠(chéng)摯的謝意和崇高的敬意。</p><p>  同時(shí),本篇畢業(yè)論文的寫(xiě)作也得到了一些同學(xué)的熱情幫助。感謝在整個(gè)畢業(yè)設(shè)計(jì)期間和我密切合作的同學(xué),和曾經(jīng)在各個(gè)方面給予過(guò)我?guī)椭幕锇閭?,在此,我再一次真誠(chéng)地向幫助過(guò)我的老師和同學(xué)表示感謝!</p><p><b>  附錄</b></p><p><b>  

74、附錄1</b></p><p>  sub form_click()</p><p>  string A="a"; string B="b"; string C="a"; string D="d"; string; E="cf";</p><p>  s

75、tring F="gh"; string G="dfg"; string H="h"; string; I="ec";string J="fc"</p><p>  X=inputbox("請(qǐng)依次輸入a-g中的一個(gè)字母")</p><p><b>  Do<

76、;/b></p><p>  for i=X to h</p><p>  for j=A to J</p><p>  for x=1 to Len(j)</p><p>  if i=lift(j,x) then</p><p>  string j=" "</p><

77、p><b>  end if</b></p><p><b>  Next x</b></p><p><b>  Next j</b></p><p><b>  s=s+1 </b></p><p><b>  Next i<

78、/b></p><p>  S(s)=S(s)+1</p><p>  Loop until string A=" " And string B=" " And string C=" " And string D=" " And string E=" " And string F=&q

79、uot; " And string G=" " And string H=" " And string I=" " And string J=" "</p><p>  print "輸出旋轉(zhuǎn)次數(shù)" S(S)</p><p><b>  附錄2</b><

80、/p><p>  package solution;</p><p>  import java.io.BufferedReader;</p><p>  import java.io.FileInputStream;</p><p>  import java.io.IOException;</p><p>  impo

81、rt java.io.InputStreamReader;</p><p>  import java.util.ArrayList;</p><p>  import java.util.List;</p><p>  import java.util.regex.Matcher;</p><p>  import java.util.re

82、gex.Pattern;</p><p>  public class Divide {</p><p>  private static String sa = null;</p><p>  private static double xx;</p><p>  private static double yy;</p>&

83、lt;p>  public static List<Point> listA = new ArrayList<Point>();</p><p>  public static List<Point> listB = new ArrayList<Point>();</p><p>  private static List<Poi

84、nt> lists = new ArrayList<Point>();</p><p>  public static String getX(String sa){</p><p>  String result = null;</p><p>  String regex="X[^X,]*Y";</p>&l

85、t;p>  Pattern p = Pattern.compile(regex); </p><p>  Matcher m = p.matcher(sa);</p><p>  while(m.find()){</p><p>  result = m.group().substring(1, m.group().length()-1);}</p>

86、;<p>  return result;}</p><p>  public static String getY(String sa){</p><p>  String result = null;</p><p>  String regex="Y[^Y,]*";</p><p>  Pattern

87、 p = Pattern.compile(regex); </p><p>  Matcher m = p.matcher(sa);</p><p>  while(m.find()){</p><p>  result= m.group().substring(1, m.group().length());}</p><p>  retur

88、n result;}</p><p>  public static void getLists() throws Exception, IOException{</p><p>  BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\lmj\\Problem\

89、\src\\File\\holeJ.txt")));</p><p>  String data = null;</p><p>  while((data = br.readLine())!=null)</p><p><b>  {</b></p><p><b>  sa =data;</

90、b></p><p>  xx = Double.parseDouble(getX(sa));</p><p>  yy = Double.parseDouble(getY(sa));</p><p>  lists.add(new Point(xx,yy));</p><p>  //System.out.println("

91、x = "+x + "y = " +y);}</p><p>  br.close();}</p><p>  public static void divide(List<Point> lists){</p><p><b>  Point p ;</b></p><p>  

92、for(int i=0;i<lists.size();i++){</p><p>  p = lists.get(i);</p><p>  if(p.x>0) listA.add(p);</p><p>  else listB.add(p);}}</p><p>  public static void main(String

93、[] args) throws IOException, Exception{</p><p>  getLists();</p><p>  divide(lists);</p><p>  System.out.println(lists);</p><p>  System.out.println(listA);</p>

94、<p>  System.out.println(listB);}}</p><p>  package solution;</p><p>  import java.io.BufferedReader;</p><p>  import java.io.FileInputStream;</p><p>  import java

95、.io.IOException;</p><p>  import java.io.InputStreamReader;</p><p>  import java.util.ArrayList;</p><p>  import java.util.List;</p><p>  import java.util.regex.Matcher

96、;</p><p>  import java.util.regex.Pattern;</p><p>  public class GetXY {</p><p>  private static String sa = null;</p><p>  private static double xx;</p><p&g

97、t;  private static double yy;</p><p>  //用于交換兩個(gè)值的引用</p><p>  private static Point p1;</p><p>  private static Point p2;</p><p>  private static List<Point> lists

98、= new ArrayList<Point>();</p><p>  private static List<Double> lens= new ArrayList<Double>();</p><p>  public static String getX(String sa){</p><p>  String resul

99、t = null;</p><p>  String regex="X[^X,]*Y";</p><p>  Pattern p = Pattern.compile(regex); </p><p>  Matcher m = p.matcher(sa);</p><p>  while(m.find()){</p&

100、gt;<p>  result = m.group().substring(1, m.group().length()-1);}</p><p>  return result;}</p><p>  public static String getY(String sa){</p><p>  String result = null;</p

101、><p>  String regex="Y[^Y,]*";</p><p>  Pattern p = Pattern.compile(regex); </p><p>  Matcher m = p.matcher(sa);</p><p>  while(m.find()){</p><p>  

102、result= m.group().substring(1, m.group().length());}</p><p>  return result;}</p><p><b>  //得到點(diǎn)集</b></p><p>  public static void getLists() throws Exception, IOException

103、{</p><p>  BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("C:\\lmj\\Problem\\src\\File\\sa.txt")));</p><p>  String data = null;</p><p> 

104、 while((data = br.readLine())!=null)</p><p><b>  {</b></p><p><b>  sa =data;</b></p><p>  xx = Double.parseDouble(getX(sa));</p><p>  yy = Doubl

105、e.parseDouble(getY(sa));</p><p>  lists.add(new Point(xx,yy));</p><p>  //System.out.println("x = "+xx + "y = " +yy);}</p><p>  br.close();}</p><p>

106、  //傳入索引元素,交換他們的值</p><p>  public static void swap (int i,int j){</p><p>  Point t = null;</p><p>  p1 = lists.get(i);</p><p>  p2 = lists.get(j);</p><p>&

107、lt;b>  t = p1;</b></p><p><b>  p1 = p2;</b></p><p><b>  p2 = t;</b></p><p>  lists.set(i, p1);</p><p>  lists.set(j, p2);</p>&l

108、t;p><b>  }</b></p><p>  //得到List的全排列</p><p>  public static void perm(List<Point> arr,int k,int m){</p><p>  List<Point> rankList= new ArrayList<Point&

109、gt;();</p><p><b>  if(k==m){</b></p><p>  for(int i =0;i<=m;i++){ </p><p>  rankList.add(arr.get(i));</p><p>  System.out.print(arr.get(i)+" "

110、);}</p><p>  getLen(rankList);</p><p>  System.out.println();}</p><p>  for(int i=k;i<=m;i++){</p><p>  swap(k,i);</p><p>  perm(arr,k+1,m);</p>

111、<p>  swap(k,i);}}</p><p><b>  //距離之和</b></p><p>  public static void getLen(List<Point> list){</p><p>  //lens = null;</p><p>  Double len = (do

112、uble) 0;</p><p>  Point p = list.get(0);</p><p>  for(int i=1 ;i<list.size();i++){</p><p>  Point pTemp = list.get(i);</p><p>  len += Point.calDistance(p, pTemp);&l

113、t;/p><p>  p = pTemp;}</p><p>  lens.add(len);</p><p>  System.out.println(len);}</p><p><b>  //得到最短的路徑</b></p><p>  public static void getMinlen(

114、List<Double> lenss) {</p><p>  Double result = (Double) lenss.get(0);</p><p>  for(int i=1;i<lenss.size();i++){</p><p>  if((Double)lenss.get(i)<result){</p><

115、p>  result = (Double)lenss.get(i);}}</p><p>  System.out.println(result);}</p><p>  public static void main(String [] args) throws IOException, Exception{</p><p>  getLists();<

116、;/p><p>  Divide.divide(lists);</p><p>  System.out.println(lists);</p><p>  System.out.println(Divide.listA);</p><p>  System.out.println(Divide.listB);</p><p&

117、gt;  System.out.println(lists.toString());</p><p>  System.out.println("計(jì)算中...");</p><p>  perm(lists,0,lists.size()-1);</p><p>  getMinlen(lens);</p><p>  Sy

118、stem.out.println("----------B---------");</p><p>  perm(Divide.listB,0,Divide.listB.size()-1);</p><p>  getMinlen(lens);</p><p>  /*System.out.println("----------A---

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論