版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 打孔機生產(chǎn)效能提高的數(shù)學(xué)研究</p><p><b> 摘 要</b></p><p> 針對“打孔機生產(chǎn)效能的提高”問題,我們將給問題劃分為:單鉆頭作業(yè)和雙鉆頭作業(yè)兩種情況。在針對以上兩種情形做出以下操作:</p><p> 一、對單鉆頭作業(yè)中的刀具轉(zhuǎn)換方式問題,將刀具的轉(zhuǎn)換方式類比成數(shù)學(xué)中的符號排列組合問題,由
2、Visual Basic軟件生成所有排列的組合形式,再找出變換次數(shù)最少的那一組;對單鉆頭在打孔過程中的鉆頭行徑問題,利用計算機JAVA程序計算出多點間距離之和,由運行計算機程序計算出每類點的最短行徑數(shù),這樣結(jié)合上面的最優(yōu)刀具轉(zhuǎn)換方式就可以使單鉆頭打孔效能提高。</p><p> 二、對雙鉆頭可利用單鉆頭作業(yè)的工作原理,將整張電路板分成某兩個區(qū)域,是兩個鉆頭各自在這兩個區(qū)域內(nèi)類似上述中的單刀作業(yè)原理獨立作業(yè)即可。
3、</p><p> 關(guān) 鍵 詞:單刀操作;雙刀操作;絕對路徑;轉(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 問題分析-------------------------------------------------------------------------------------------3</p><p> 2.1單鉆頭打孔分析 ------------------------------------------------
11、--------------------------3</p><p> 2.2雙鉆頭打孔分析 ----------------------------------------------------------------------------3</p><p> 3模型假設(shè)------------------------------------------------------
12、--------------------------------------4</p><p> 4符號說明--------------------------------------------------------------------------------------------5</p><p> 5模型建立--------------------------------
13、----------------------------------------------------6</p><p> 6模型求解-------------------------------------------------------------------------------------------12</p><p> 7模型驗證------------------
14、-------------------------------------------------------------------------13</p><p> 8模型評價與改進----------------------------------------------------------------------------------14</p><p> 9參考文獻--
15、---------------------------------------------------------------------------------------15</p><p> 10致謝-----------------------------------------------------------------------------------------------16</p&
16、gt;<p> 附件-----------------------------------------------------------------------------------------------17</p><p><b> 1 前 言</b></p><p> 目前激光打孔主要應(yīng)用在航空航天、汽車制造、電子儀表、化工等行業(yè)。激光
17、打孔的迅速發(fā)展,主要體現(xiàn)在打孔用YAG激光器的平均輸出功率已由5年前的400w提高到了800w至1000w。國內(nèi)目前比較成熟的激光打孔的應(yīng)用是在人造金剛石和天然金剛石拉絲模的生產(chǎn)及鐘表和儀表的寶石軸承、飛機葉片、多層印刷線路板等行業(yè)的生產(chǎn)中。</p><p> 目前使用的激光器多以YAG激光器、CO2激光器為主,也有一些準分子激光器、同位素激光器和半導(dǎo)體泵浦激光器。所以,如果能將打孔機的效能提高,這樣不僅能提升
18、工作效率、縮短工作時間,同時也可以降低生產(chǎn)成本、最大化的獲取利潤。那么如何提高打孔機效能就備受人們的關(guān)注。</p><p> 以下是對普通打孔機的實際信息調(diào)查:</p><p> 打孔機的生產(chǎn)效能主要取決于以下幾方面:(1)單個過孔的鉆孔作業(yè)時間,這是由生產(chǎn)工藝決定,為了簡化問題,這里假定對于同一孔型鉆孔作業(yè)時間都是相同的;(2)打孔機在加工作業(yè)時,鉆頭的行進時間;(3)針對不同孔型加
19、工作業(yè)時,刀具的轉(zhuǎn)換時間。目前,實際采用的打孔機普遍是單鉆頭作業(yè),即一個鉆頭進行打孔。</p><p> 現(xiàn)有某種鉆頭,上面裝有8種刀具a,b,c,… , h,依次排列呈圓環(huán)狀,如圖1所示。</p><p> 圖1 某種鉆頭上8種刀具的分布情況</p><p> 而且8種刀具的順序固定,不能調(diào)換。在加工作業(yè)時,一種刀具使用完畢后,可以轉(zhuǎn)換使用另一種刀具。相鄰兩
20、刀具的轉(zhuǎn)換時間是18 s,例如,由刀具a轉(zhuǎn)換到刀具b所用的時間是18s,其他情況以此類推。作業(yè)時,可以采用順時針旋轉(zhuǎn)的方式轉(zhuǎn)換刀具,例如,從刀具a轉(zhuǎn)換到刀具b;也可以采用逆時針的方式轉(zhuǎn)換刀具,例如,從刀具a轉(zhuǎn)換到刀具h。將任一刀具轉(zhuǎn)換至其它刀具處,所需時間是相應(yīng)轉(zhuǎn)換時間的累加,例如,從刀具a轉(zhuǎn)換到刀具c,所需的時間是36s(采用順時針方式)。為了簡化問題,假定鉆頭的行進速度是相同的,為180 mm/s,行進成本為0.06元/mm,刀具轉(zhuǎn)
21、換的時間成本為7元/min。刀具在行進過程中可以同時進行刀具轉(zhuǎn)換,但相應(yīng)費用不減。</p><p> 不同的刀具加工不同的孔型,有的孔型只需一種刀具來完成,如孔型A只用到刀具a。有的孔型需要多種刀具及規(guī)定的加工次序來完成,如孔型C需要刀具a和刀具c,且加工次序為a,c。表1列出了10種孔型所需加工刀具及加工次序(標*者表示該孔型對刀具加工次序沒有限制)。</p><p> 表1 10種
22、孔型所需加工刀具及加工次序</p><p> 一塊線路板上的過孔全部加工完成后,再制作另一線路板。但在同一線路板上的過孔不要求加工完畢一個孔,再加工另一個孔,即對于須用兩種或兩種以上刀具加工的過孔,只要保證所需刀具加工次序正確即可。</p><p><b> 2 問題分析</b></p><p> 由于打孔機的生產(chǎn)效能主要受于以下幾方面的
23、影響:</p><p> ?。?)單個過孔的鉆孔作業(yè)時間,這是由生產(chǎn)工藝決定,為了簡化問題,這里假定對于同一孔型鉆孔作業(yè)時間都是相同的;</p><p> ?。?)打孔機在加工作業(yè)時,鉆頭的行徑時間;</p><p> ?。?)針對不同孔型加工作業(yè)時,刀具的轉(zhuǎn)換時間。目前,實際采用的打孔機普遍是單鉆頭作業(yè),即一個鉆頭進行打孔。</p><p>
24、;<b> 1.1 問題一:</b></p><p> 1.1.1 怎樣轉(zhuǎn)換8種刀型才能使對于10種孔型的過孔操作用旋轉(zhuǎn)次數(shù)最少?</p><p> 1.1.2 對于線路板上的所有孔型鉆頭如何選擇路線使得行徑最短?</p><p><b> 1.2 問題二:</b></p><p> 在問
25、題一的基礎(chǔ)上添加一條:如何才能夠有效的將所有的點區(qū)分成上下或左右兩部分?</p><p> 1.2.1 由于一張電路板上的孔型不同且所需的刀具也有差異從而導(dǎo)致鉆頭在工作中要即時的改變刀具,而刀具在轉(zhuǎn)換的過程中也伴隨著成本的產(chǎn)生,所以刀具的轉(zhuǎn)換方式將決定成本高低,即對生產(chǎn)同種電路板中刀具旋轉(zhuǎn)的次數(shù)越少則成本越低;同時鉆頭的行進路線也會產(chǎn)生相應(yīng)的費用,所以合適的路線也會影響成本的高低。因為對生產(chǎn)同種孔型作業(yè)時間相同
26、且是定值,所以對整張電路板上的所有孔型的作業(yè)時間不會因刀具的轉(zhuǎn)換方式及鉆頭的行進路線而改變,即完成整張電路板上所有孔的總過孔時間是一定值,只是取決于整張電路板上的總孔數(shù)量的多少。</p><p> 1.2.2 由問題一已經(jīng)可以得出單刀作業(yè)的相應(yīng)結(jié)論,對雙刀作業(yè)可以仿造單刀作業(yè)的工作原理,將電路板分成左右或上下兩個區(qū)域(此處不妨設(shè)左右)兩個鉆頭在相應(yīng)的區(qū)域內(nèi)作業(yè)如同問題一中的單刀作業(yè)一樣,所以我們只需在電路板上建
27、立適當?shù)钠矫孀鴺讼担矗阂韵碌走厼閤軸,下底邊的中垂線為y軸建立平面坐標系)給出電路板上所有孔的中心坐標。</p><p><b> 3 模型假設(shè)</b></p><p> (1) 對同種孔型的過孔時間相同</p><p> (2) 轉(zhuǎn)換某種刀型后將某種孔型的所有孔全部操作完之后在行進到下一類孔型進行過孔操作,將該類孔型中的所有孔全部操作
28、完成后在行進到下一類孔型如此循環(huán)下去,直到所有孔型都不在需要此種刀型為止,然后按照擬定好的刀具旋轉(zhuǎn)方式旋轉(zhuǎn)下一個刀型如上一個刀型一樣操作——簡單說即:單刀依次操作</p><p> (3) 刀具在行進過程中可以同時進行刀具轉(zhuǎn)換</p><p> (4) 上一個刀型過完最后一個孔,轉(zhuǎn)換刀型用時與鉆頭行進到下一刀型的第一個孔用時相同</p><p> (5) 鉆頭
29、的行進速度一定</p><p><b> 4 符號說明</b></p><p> 為了能夠使問題表述清楚,這里引入一些數(shù)學(xué)符號:</p><p> :生產(chǎn)一張電路板的總耗時</p><p> ?。?1、2、3……10):每類孔型中的孔數(shù)量</p><p> α:刀具每次轉(zhuǎn)換的時間成本<
30、;/p><p> n:生產(chǎn)一張電路板中刀具旋轉(zhuǎn)的總次數(shù)</p><p> β:鉆頭的單位行徑的行進成本</p><p> s:生產(chǎn)一張電路板中鉆頭的總行進</p><p> τ:相鄰刀具轉(zhuǎn)換時間。</p><p><b> ν:鉆頭的行進速度</b></p><p>
31、 (i=1、2、3……..10):刀具過完十類孔型的行徑分別為</p><p> (i=1、2、3………10)刀具過完十類孔型所用的時間分別為</p><p> Ψ:生產(chǎn)一張電路板的總成本為</p><p><b> 5 模型建立</b></p><p> 對于問題一:根據(jù)提供的刀型和孔型,可以將其編制成一張1
32、0×9的表格如下:</p><p> [A--J表示孔型;a--h表示刀型;表格中凡有“√”標記的表示該孔型需要該刀型;</p><p> 有序號“①、②、③”標記的表示使用的刀具有使用順序;]</p><p> 對照表格建立集合群,如A孔型需要使用a刀頭而G孔型需要d、g、f三種刀頭,且還有的孔型使用的刀頭次序不能變?nèi)纾篋、F孔型。這樣在設(shè)定刀具的
33、旋轉(zhuǎn)次序上帶來難題,為了解決這個問題,我采用集合論的思想將一個孔型設(shè)為一個集合(共10個集合)而每個孔型所需要的刀具設(shè)為對應(yīng)集合的元素,這樣一個集合群就構(gòu)建好了。</p><p> 接下來只要尋找到一種刀具的旋轉(zhuǎn)次序能夠?qū)⒃摷先褐械拿恳粋€元素都完全覆蓋一次且這種旋次序數(shù)最小則問題一解決。</p><p> 表2 鉆頭刀具集合表</p><p> 根據(jù)上述的原
34、理與分析,我們利用計算機Visual Basic編程設(shè)計出程序,來完成這一問題。</p><p> 程序的設(shè)計思路:以元素作為變量(即:8次);每個集合作為因變量;所有集合的所有元素數(shù)作為限制條件。如變量為a時可覆蓋A、C中的a元素,但剩余元素沒有被覆蓋,則變量轉(zhuǎn)為剩余元素中的一個(不妨設(shè)為b),當變量為b時又可以覆蓋B中b元素,可以看出集合群中依舊有元素沒有別覆蓋,則變量轉(zhuǎn)為剩余元素中的一個(不妨設(shè)為c),當
35、變量為c時可覆蓋C、E、I、J中的c元素,如上方式依次進行下去直到所有集合中所有元素都被覆蓋停止;并由程序計算出該種變量的變換次數(shù)(即:鉆頭的旋轉(zhuǎn)次數(shù)),由此可以將能夠完全覆蓋集合群中的所有元素的變量變換次數(shù),再由程序從中找出變換次數(shù)最小的一組變換方式即為最優(yōu)鉆頭旋轉(zhuǎn)方式。</p><p> 而對于最優(yōu)作業(yè)線路,可根據(jù)有關(guān)電路板材料給定的孔型的中心坐標數(shù)據(jù),利用Visual Basic擬合刀具轉(zhuǎn)換方案,而最優(yōu)轉(zhuǎn)
36、換方案與最優(yōu)作業(yè)線路結(jié)合,必將最大程度提高單鉆頭的過孔效率。當擬合完畢后,驚奇地發(fā)現(xiàn),數(shù)據(jù)非常接近,而且比較符合實際。接下來,關(guān)于模型求解問題,順理成章。</p><p> 為了使問題簡單化,可以假設(shè)當選擇某種刀型后,將整張電路板上所有當前需要用該種刀型的孔全部操作完后再轉(zhuǎn)換刀型進行下一輪的如上操作;利用上面的表格可以看出旋轉(zhuǎn)刀型的方式有多種的,如:第一次選擇a刀型可以將所有的A孔型及C孔型加工完成,而下一次選
37、擇刀型可以是剩余刀型中的某一種,不妨為b刀型再如上將所有當前需用該刀型的孔即B孔加工完成,以下操作如上方法進行下去,直到所有孔完全加工完成停止。所以可以有上述方式設(shè)計計算機程序,計算出所有滿足上述方法的刀具轉(zhuǎn)換方式,并選出旋轉(zhuǎn)次數(shù)最少的那種轉(zhuǎn)換方式。程序見(附錄1);</p><p> 確定了刀具的轉(zhuǎn)換方式,對于每過一個孔對于屬于該孔型的所有點都打完,通過附錄2的程序?qū)@里的每一類孔型的所有點的行徑路線中取最短
38、的一條。</p><p> 解釋如下:由電路板資料可知:A孔到J孔孔型的中心坐標,為了使求解便利,可以把每種孔型的坐標單獨放入一個文本中,比如A孔的坐標存入HoleA.txt,依次下去,得到HoleA~HoleJ.txt文件,其分別代表每種孔型的中心坐標。想要求出最短路徑,先對坐標進行分析-原理如下:設(shè)計程序從文件中讀取所有坐標,鑒于A孔坐標太多不利于及時測試,選取坐標較少的孔型如HoleJ.txt進行分析,程
39、序原理:把得到的所有X,Y坐標封裝到一個Point類中,把所有得到的類即每種坐標的信息放在一個集合List里,則集合List中有了HoleJ的所有的坐標,使用全排列算法得到集合中所有點的一個全排列,對每一種排列用Point類中的計算長度的方法得出一個距離并把這個距離裝到一個用于存放距離的集合中,至此得到了對于HoleJ中所有點的全排列并算出了對應(yīng)的每一種排列的距離,然后設(shè)置一個方法把得到的用于存放所有關(guān)于點的全排列的距離的集合遍歷然后進
40、行比較排序得出最小的那個距離,即為所要求的對于該孔型J坐標點的最短路徑。同樣的可以用此方法得到所有孔型坐標的最短路徑。則對于每種孔型的最短路徑問題得到解決。</p><p> 首先介紹如何使用Java操作文本文件,方法如下:</p><p> 最初java是不支持對文本文件的處理的,為了彌補這個缺憾而引入了Reader和Writer兩個類,這兩個類都是抽象類,Writer中 write
41、(char[] ch,int off,intlength),flush()和close()方法為抽象方法,Reader中read(char[] ch,int off,int length)和close()方法是抽象方法。子類應(yīng)該分別實現(xiàn)他們。</p><p> 當我們讀寫文本文件的時候,采用Reader是非常方便的,比如FileReader,InputStreamReader和BufferedReader。其中
42、最重要的類是InputStreamReader,</p><p> 它是字節(jié)轉(zhuǎn)換為字符的橋梁。你可以在構(gòu)造器重指定編碼的方式,如果不指定的話將采用底層操作系統(tǒng)的默認編碼方式,例如GBK等。當使用FileReader讀取文件的時候。</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()方法返回的是讀取得下個字符。當然你也可以使用read(char[] ch,int off,int length)這和處理
44、二進制文件的時候類似,不多說了。如果使用InputStreamReader來讀取文件的時候while((ch = isr.read())!=-1){System.out.print((char)ch);}這和FileReader并沒有什么區(qū)別,事實上在FileReader中的方法都是從InputStreamReader中繼承過來的。read()方法是比較好費時間的,如果為了提高效率我們可以使用BufferedReader對Reader進
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> 當你明白了如何用Reader來讀取文本文件的時候那么用Writer寫文件同樣非常簡單。有一點需要注意,當你寫文件的時候,為了提高效率,寫入的數(shù)據(jù)會先</p><p>
47、; 放入緩沖區(qū),然后寫入文件。因此有時候你需要主動調(diào)用flush()方法。與上面對應(yīng)的寫文件的方法為:</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)閉流!下面是個小例子,幫助新手理解。其實有的時候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中有上文中的具體程序及方法的解釋:得到所有點的程序getLists()全排列算法見perm(),計算每一種排列的距離方法為getLen(),得到最短距離的方法為getMinlen
59、()。</p><p> 在運行時對要讀取的那種孔型的文件路徑修改即可。如要讀A孔的坐標應(yīng)把路徑從C:\\lmj\\Problem\\src\\File\\holeJ.txt 改為 (注意:要用\\ 這里一個\是轉(zhuǎn)義字符)“HoleA的絕對路徑\\holeA.txt”</p><p> 對于問題二:為提高打孔機效能,現(xiàn)在設(shè)計一種雙鉆頭的打孔機(每個鉆頭的形狀與單鉆頭相同),兩鉆頭可以同
60、時作業(yè),且作業(yè)是獨立的,即可以兩個鉆頭同時進行打孔,也可以一個鉆頭打孔,另一個鉆頭行進或轉(zhuǎn)換刀具??梢灶惐葐栴}一,將一張電路板平均的分為左右或上下兩部分,兩個鉆頭各自在相應(yīng)的區(qū)域內(nèi)工作。</p><p> 利用算法如下:首先定義三個點集合S、L、R</p><p> S是指某類孔型的所有中心坐標的二維集合,L是指在建立的坐標系的y軸的左方的所有點集合(初始為空),R是指在建立的坐標系的
61、y軸的右方的所有點集合(初始為空);然后將S中的點依次對的正負進行判斷,如果則將該點添加到L集合中,否則添加到R集合中。</p><p> 利用附錄3所給程序?qū)~J孔型中所有點分成左右兩部分即可。</p><p> 然后兩個鉆頭單個對兩個區(qū)域各自進行單刀操作,路線與刀具的轉(zhuǎn)換方式如問題一相同即可。</p><p> 利用附錄1和附錄2所編制的計算機程序可以計
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)刀具時間: =n*τ</p><p> 行進時間: =s/v</p
63、><p> 操作完整張電路板的過孔時間: = </p><p><b> 總耗時:t= </b></p><p> 行進成本為 s*β</p><p> 旋轉(zhuǎn)鉆頭所產(chǎn)生的成本為 t(1)* α</p><p> 總成本為
64、 Ψ= s*β+ t(1)* α</p><p> 由本題題意可知只需給出Ψ的最小值即可。</p><p><b> 6 模型求解</b></p><p> 利用附錄一中的程序計算出的結(jié)果:n=11</p><p> 利用附錄二中的程序計算出最短路徑s</p
65、><p> 由題中信息得:α=7元/min; β=0.06元/mm; τ=18s; v=180mm/s;</p><p> 所以得出鉆頭旋轉(zhuǎn)所用時間為:t(1)=11*τ </p><p> 打孔機操作一張電路板的總成本為:Ψ=11*7*18/60+0.06*s </p><p><b> 7 模型驗證<
66、;/b></p><p> 對上述模型給予驗證,不失一般性,不妨分別取每類孔型的前6個中心坐標。</p><p><b> 單刀作業(yè):</b></p><p> 將這些坐標輸入到JAVA編程軟件中并運行附錄2的程序,可計算出每類點間的最短行徑分別為:</p><p><b> ?。ㄔ?lt;/b&
67、gt;</p><p><b> 雙鉆頭作業(yè):</b></p><p> 將這些坐標輸入到JAVA編程軟件中并運行附錄3的程序,可將這些點分成兩個區(qū)域。然后類似上面的做法可算出兩個鉆頭的作業(yè)成本分別為:</p><p><b> ?。ㄔ?lt;/b></p><p> 由結(jié)果可以看出雙鉆頭工作效率
68、要比單鉆頭的工作效率有了明顯的提高。</p><p> 8 模型的評價與改進</p><p> 對本題所建立的數(shù)學(xué)模型中所利用線性求解方法,大大的降低了本題難度,具有較強的科學(xué)性及邏輯性,層次清楚,便于理解。不足之處在于附錄1中所編制的Visual Basic程序只是考慮到部分實際鉆頭工作情況,所以導(dǎo)致有些刀具轉(zhuǎn)換方式有所遺漏;附錄3,因為現(xiàn)有的知識有限所以導(dǎo)致編制的java程序較為繁
69、瑣,運行較為艱難(即:要求電腦配置較高情況下,可順利求解)所以該模型較適合基礎(chǔ)實施較高的企業(yè)。</p><p><b> 9 參考文獻</b></p><p> [1]楊明. Visual Basic高級語言程序設(shè)計基礎(chǔ). 北京:中國鐵道出版社,2008: 260</p><p> [2]陳東彥. 數(shù)學(xué)建模. 北京: 科學(xué)出版社,2007
70、</p><p> [3]Bruce Eckel. java編程思想. 機械工程出版社,2007</p><p> [4]王曉東. 計算機算法設(shè)計與分析,北京:電子工業(yè)出版社(第3版),2007</p><p> [5]任玉杰. 數(shù)值分析MATLAB實現(xiàn),北京:高等教育出版社,2007</p><p> [6]馮速. 組合數(shù)學(xué),北京:
71、機械工業(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í)時光已經(jīng)接近尾聲,在此我想對
72、我的母校,我的父母、親人們,我的老師和同學(xué)們表達我由衷的謝意。</p><p> 這次畢業(yè)論文設(shè)計我得到了很多老師和同學(xué)的幫助,其中我的論文指導(dǎo)老師對我的關(guān)心和支持尤為重要。每次遇到難題,我最先做的就是向老師尋求幫助,而老師每次不管忙或閑,總會抽空來找我面談,然后一起商量解決的辦法。老師平日里工作繁多,但我做畢業(yè)設(shè)計的每個階段,從選題到查閱資料,論文提綱的確定,中期論文的修改,后期論文格式調(diào)整等各個環(huán)節(jié)中都給予
73、了我悉心的指導(dǎo)。在此謹向劉老師致以誠摯的謝意和崇高的敬意。</p><p> 同時,本篇畢業(yè)論文的寫作也得到了一些同學(xué)的熱情幫助。感謝在整個畢業(yè)設(shè)計期間和我密切合作的同學(xué),和曾經(jī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("請依次輸入a-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> //用于交換兩個值的引用</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> //得到點集</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("計算中...");</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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 打孔機生產(chǎn)效能提高的數(shù)學(xué)研究畢業(yè)論文
- 打孔機生產(chǎn)效能提高
- 打孔機生產(chǎn)效能的提高
- 打孔機生產(chǎn)效能的提高 數(shù)學(xué)建模
- 打孔機生產(chǎn)效能的提高wenti
- 打孔機生產(chǎn)效能的提高 - 副本
- 打孔機生產(chǎn)效能的提高38124
- 如何提高打孔機的生產(chǎn)效能
- 基于plc控制的自動打孔機【畢業(yè)論文】
- 打孔機效能優(yōu)化模型.pdf
- 激光打孔機和打孔原理
- 激光打孔機和打孔原理
- 多功能打孔機的設(shè)計
- 多功能打孔機的設(shè)計
- 打孔機操作與維修提示
- 微噴帶激光打孔機的試驗研究.pdf
- 基于plc控制的自動打孔機【開題報告】
- 板材打孔機_機械原理課程設(shè)計
- 剪叉式房頂打孔機的設(shè)計與研究.pdf
- 控釋制劑用高速激光打孔機的研制.pdf
評論
0/150
提交評論