利用Matlab求解機(jī)械設(shè)計(jì)優(yōu)化問題的_第1頁
利用Matlab求解機(jī)械設(shè)計(jì)優(yōu)化問題的_第2頁
利用Matlab求解機(jī)械設(shè)計(jì)優(yōu)化問題的_第3頁
利用Matlab求解機(jī)械設(shè)計(jì)優(yōu)化問題的_第4頁
利用Matlab求解機(jī)械設(shè)計(jì)優(yōu)化問題的_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 利用利用 MATLAB 求解機(jī)械設(shè)計(jì)優(yōu)化問題的分析求解機(jī)械設(shè)計(jì)優(yōu)化問題的分析 周婷婷 (能源與動(dòng)力學(xué)院,油氣 0701)摘摘要要: MATLAB 是目前國際上最流行的科學(xué)與工程計(jì)算的軟件工具 , 它具有強(qiáng)大的數(shù)值分析、矩陣運(yùn)算、信號處理、圖形顯示、模擬仿真和最優(yōu)化設(shè)計(jì)等功能。本文淺談 MATLAB 在機(jī)械設(shè)計(jì)優(yōu)化問題的幾點(diǎn)應(yīng)用。關(guān)鍵詞關(guān)鍵詞: MATLAB 約束條件約束條件 機(jī)械設(shè)計(jì)優(yōu)化機(jī)械設(shè)計(jì)優(yōu)化 引言引言:在線性規(guī)劃和非線性規(guī)劃等領(lǐng)域經(jīng)常遇到求函數(shù)極值等最優(yōu)化問題,當(dāng)函數(shù)或約束條件復(fù)雜到一定程度時(shí)就無法求解,而只能求助于極值分析算法,如果借助計(jì)算器進(jìn)行手工計(jì)算的話,計(jì)算量會(huì)很大,如果要求

2、遇到求解極值問題的每個(gè)人都去用 BASIC,C 和 FORTRAN 之類的高級語言編寫一套程序的話,那是非一朝一日可以解決的,但如用 MATLAB 語言實(shí)現(xiàn)極值問題的數(shù)值解算,就可以避免計(jì)算量過大和編程難的兩大難題,可以輕松高效地得到極值問題的數(shù)值解,而且可以達(dá)到足夠的精度。1 無約束條件的極值問題的解算方法無約束條件的極值問題的解算方法設(shè)有 Rosenbrock 函數(shù)如下:f(X1,X2)=100(X2-X1*X1)2+(1-X1)2求向量 X 取何值時(shí),F(xiàn)(x)的值最小及最小值是多少?先用 MATLAB 語言的編輯器編寫求解該問題的程序如下:%把函數(shù)寫成 MATLAB 語言表達(dá)式fun=1

3、00*(X(2)-X(1)*X(1)2+(1-X(1)2%猜自變量的初值X0=-1 2; %所有選項(xiàng)取默認(rèn)值options= ;%調(diào)用最優(yōu)化函數(shù)進(jìn)行計(jì)算。%函數(shù)最小值存放在數(shù)組元素 options(8)中%與極值點(diǎn)對應(yīng)的自變量值存放在向量 X 里%計(jì)算步數(shù)存放在數(shù)組元素 options(10)中X,options=fmins(fun,X0,options);%顯示與極值點(diǎn)對應(yīng)的自變向量 X 的值。%顯示函數(shù)最小值options(8)%顯示函數(shù)計(jì)算步數(shù)options(10)把上面這段程序保存為 m 文件,然后用“Tools”菜單中的“Run”命令行這段程序,就可以輕松的得到如下結(jié)果:X=9.99

4、9908938395383e-001 9.99982742178110e-001ans=1.706171071794760e-001ans=195顯然,計(jì)算結(jié)果與理論結(jié)果的誤差小到 e-10 級,這里調(diào)用了 MATLAB 的最優(yōu)化函數(shù) fmins(),它采用 Nelder-Mead 的單純形算法,就是因?yàn)檫@個(gè)函數(shù)的采用,使最小值問題的解算變得非常簡單。2.帶約束條件的極值問題的解法帶約束條件的極值問題的解法 設(shè)目標(biāo)函數(shù)和約束條件如下:f(x) =-3X1+X2+X3-X1+2X2-X3= -114X1-X2-2X3=0,X2=0,X3=0;求 X 向量取何值時(shí)函數(shù)取極小值?對條件極值問題通常的

5、做法都是將約束條件標(biāo)準(zhǔn)化(即把等式約束條件寫成等號為 0 的形式,把不等式寫成=0 的形式) 。然后把條件極值問題轉(zhuǎn)換為非條件極值問題,MATLAB 也采用同樣的做法。下面是求解該問題的 MATLAB 語言程序。funf =f=-3*X(1)+X(2)+X(3); %寫出目標(biāo)函數(shù)表達(dá)式。fung=g=2*X(1)-X(3)+1;X(1)-2*X(2)+X(3)-11;4*X(1)-X(2)-2*X(3)+3; %把約束條件標(biāo)準(zhǔn)化,寫成向量函數(shù)。注意等式約束條件要放在前面。fun=funf ,fung %把目標(biāo)函數(shù)表達(dá)式和約束條件表達(dá)式合成一個(gè)向量函數(shù)。 X0=101 %猜初值options=

6、options13=1 %在 options(13)中指定等式約束條件的個(gè)數(shù)。vlb =zeros(1,3); %指定向量 X 的下界為 0。vub = ; %對向量的上界不做要求。X,options=constr(fun,X0,options,Vlb,Vlb); %調(diào) constr()函數(shù)%顯示與極值點(diǎn)對應(yīng)的 X 向量值。options(8) %顯示極小值options(10) %顯示計(jì)算次數(shù)g=2*X(1)-X(3)+1;X(1)-2*X(2)+X(3)-11;4*X(1)-X(2)-2*X(3)+3 %顯示約束條件表達(dá)式的取值。運(yùn)行這段 MATLAB 程序得到如下結(jié)果:X=4.00000

7、0000000000e+000 1.00000000000000le+000 9.000000000000005e+000ans=-1.99999999999999le+000ans=17g=-6.21724522790877e-015 1.77635683940025le-015 -1.421085471520200e-014顯然,計(jì)算結(jié)果是非常精確的,這里調(diào)用了 MATLAB 的最優(yōu)化函數(shù) constr(),它是專門用來解算條件極值問題的。3 3機(jī)機(jī)械械優(yōu)優(yōu)化化設(shè)設(shè)計(jì)計(jì)應(yīng)應(yīng)用用實(shí)實(shí)例例 機(jī)械優(yōu)化設(shè)計(jì)把數(shù)學(xué)規(guī)劃理論與數(shù)值方法應(yīng)用于設(shè)計(jì)中,用計(jì)算機(jī)從大量可行方案中找出最優(yōu)化設(shè)計(jì)方案,從而大大提

8、高設(shè)計(jì)質(zhì)量和設(shè)計(jì)效率。MATLAB 具有解決線性規(guī)劃和非線性規(guī)劃、約束優(yōu)化和無約束優(yōu)化問題的內(nèi)部函數(shù),因而可以完成這一功能?,F(xiàn)舉一例:螺栓組聯(lián)結(jié)的優(yōu)化設(shè)計(jì)螺栓組聯(lián)結(jié)的優(yōu)化設(shè)計(jì) 如圖 4 所示的壓力容器螺栓組聯(lián)接中,已知 D1= 400mm,D2 = 250mm,缸內(nèi)工作壓力為 p=1.5 MPa,螺栓材料為 35 號鋼,s=320Mpa,安全系數(shù) S=3,取殘余預(yù)緊力 Qp=1.6F,采用銅皮石棉密封墊片。現(xiàn)從安全、可靠、經(jīng)濟(jì)的角度來選擇螺栓的個(gè)數(shù) n 和螺栓的直徑 d 。3 3 1 1 設(shè)設(shè)計(jì)計(jì)問問題題分分析析若從經(jīng)濟(jì)性考慮,螺栓數(shù)量盡量少些、尺寸小些,但這會(huì)使降低聯(lián)結(jié)的強(qiáng)度和密封性,不能保

9、證安全可靠的工作;若從安全、可靠度考慮,螺栓數(shù)量應(yīng)多一些、尺寸大一些為好,顯然經(jīng)濟(jì)性差,甚至造成安裝扳手空間過小,操作困難。為此,該問題的設(shè)計(jì)思想是:在追求螺栓組聯(lián)結(jié)經(jīng)濟(jì)成本最小化的同時(shí),該問題的設(shè)計(jì)思想是:在追求螺栓組聯(lián)結(jié)經(jīng)濟(jì)成本最小化的同時(shí),還要保證聯(lián)結(jié)工作安全、可靠還要保證聯(lián)結(jié)工作安全、可靠。 3 3 2 2 設(shè)設(shè)計(jì)計(jì)變變量量 目目標(biāo)標(biāo)函函數(shù)數(shù) 約約束束條條件件 3 3 2 2 . .1 1 設(shè)設(shè)計(jì)計(jì)變變量量 選取螺栓的個(gè)數(shù) n 和直徑 d(mm)為設(shè)計(jì)變量:T21Txxdn X 3 3 2 2 . .2 2 目標(biāo)函數(shù)目標(biāo)函數(shù) 追求螺栓組聯(lián)結(jié)經(jīng)濟(jì)成本 Cn最小為目標(biāo)。而當(dāng)螺栓的長度、材料

10、和加工條件一定時(shí),螺栓的總成本與 nd 值成正比,所以本問題優(yōu)化設(shè)計(jì)的目標(biāo)函數(shù)為min F(X) = Cn = nd = x1x2 強(qiáng)度約束條件強(qiáng)度約束條件 為了保證安全可靠地工作,螺栓組聯(lián)結(jié)必須滿足強(qiáng)度條件 32 . 521dQca ; 其中MpaSs106. 3320; nnpnDFFFFQQp6093742505 . 16 . 246 . 26 . 26 . 1222 N;對于粗牙普通螺紋:由文獻(xiàn)3推薦,小徑 d1=0.85d 所以,強(qiáng)度約束條件為:0106146192106146192106105624)(2212211xxndndXg 密封密封約束條件約束條件 為了保證密封安全,螺栓

11、間距應(yīng)小于 10d,所以,密封約束條件為:01040010)(2112xxdnDXg 安裝扳手空間安裝扳手空間約束條件約束條件 為了保證足夠的扳手空間,螺栓間距應(yīng)大于5d,所以,安裝安裝約束條件為:040055)(1213xxnDdXg 邊界約束條件邊界約束條件 0)(14xXg ;0)(25xXg3 3 3 3 3 3 建建立立數(shù)數(shù)學(xué)學(xué)模模型型綜上所述,本問題的數(shù)學(xué)模型可表達(dá)為:設(shè)計(jì)變量:T21xxX 目標(biāo)函數(shù):min F(X) = x1x2約束條件: s.t. 0)(Xgi ( i = 1, 2, 3, 4, 5,)現(xiàn)運(yùn)用MATLAB的優(yōu)化函數(shù)進(jìn)行求解 : 先編寫M文件 function

12、c,ceq=mynas(x)c(1)=146192/(x(1)*x(2)2)-106; % 非線性不等式約束 c(2)=400*pi/x(1)-10*x(2);c(3)=-400*pi/x(1)+5*x(2);ceq=; % 非線性等式約束在MATLAB命令窗口輸入:fun=x(1)*x(2); % 目標(biāo)函數(shù)x0=4,6; % 設(shè)計(jì)變量初始值A(chǔ)=-1,0;0,-1; % 線性不等式約束矩陣b=0;0; Aeq=; % 線性等式約束矩陣beq=;lb=; % 邊界約束矩陣ub=;x,fval=fmincon(fun,x0,A,b,Aeq,beq,lb,ub,mynlsub) % 調(diào)用有約束優(yōu)化函

13、數(shù)運(yùn)行結(jié)果如下:x = 11.4499 10.9751fval = 125.6637所以,該問題優(yōu)化結(jié)果為: n =11.4499 ,d = 10.9751,目標(biāo)函數(shù)最小值:F(X)= 125.6637。根據(jù)實(shí)際問題的意義取整、標(biāo)準(zhǔn)化: n =12 ,d = 12。由此例可以看出,與其它編程語言相比, MATLAB語言可以簡化編程。圖5是調(diào)用MATLAB繪圖函數(shù)自動(dòng)對上例繪制的數(shù)學(xué)模型要素圖(標(biāo)注數(shù)字的曲線為目標(biāo)函數(shù)的等值線) ,為此在MATLAB命令窗口輸入: x1=0.1:20;y1=146192./(106.*x1.2);y2=400.*pi./(10.*x1);y3=400.*pi./

14、(5.*x1);plot(y1,x1,y2,x1,y3,x1,x(1),x(2),o)y4=0.1:0.1:20;y4,x1=meshgrid(y4,x1);Q=y4.*x1;hold on;c,h=contour(y4,x1,Q); hold on;clabel(c,h) ;4結(jié)束語結(jié)束語 從上述實(shí)例可以看出,利用求解最優(yōu)化問題具有編程簡單,精度很高,速度很快,各種工形式的最優(yōu)化問題都適用等優(yōu)點(diǎn),巧妙各種利用 MATLAB 語言可以取得事半功倍的效果。MATLAB 具有科學(xué)計(jì)算的強(qiáng)大能力,不管處理什么樣的對象算法、圖形、圖像、報(bào)告或者算法仿真 MATLAB 都能夠幫助大家不斷提高工作效率。

15、MATLAB 環(huán)境能夠完成算法開發(fā)、數(shù)據(jù)分析和可視化、高性能數(shù)據(jù)分析等工作,相對于傳統(tǒng)的 C 、 C+ 或者 FORTRAN 語言,在 MATLAB 中完成這些工作所消耗的時(shí)間僅僅是傳統(tǒng)手段的極小一部分。開放性的 MATLAB 軟件和開發(fā)語言 M 語言,能夠快速實(shí)現(xiàn)用戶好的想法和概念。 MATLAB 本身包含了 600 余個(gè)用于數(shù)學(xué)計(jì)算、統(tǒng)計(jì)和工程處理的函數(shù),這樣,就可以迅速完成科學(xué)計(jì)算任務(wù)而不必進(jìn)行額外的開發(fā)。 業(yè)內(nèi)領(lǐng)先的工具箱算法極大的擴(kuò)展了 MATLAB 的應(yīng)用領(lǐng)域,例如信號處理,數(shù)字圖像處理、數(shù)據(jù)分析和統(tǒng)計(jì)以及算法建模和仿真等。 MATLAB 的工具箱都是業(yè)內(nèi)的專家、工程師結(jié)合多年來的經(jīng)驗(yàn)和專業(yè)知識,專門開發(fā)的用戶處理特殊數(shù)學(xué)計(jì)算、分析和圖形可視化的功能函數(shù)集合。利用這些工具箱,用戶可以通過對比應(yīng)用一系列不同的算法,而避免了應(yīng)用程序的開發(fā)。 使用 MATLAB 軟件進(jìn)行科學(xué)計(jì)算,能夠極大加快科研人員進(jìn)行研究開發(fā)的進(jìn)

溫馨提示

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

最新文檔

評論

0/150

提交評論