matlab(四連桿優(yōu)化設計).doc
《matlab(四連桿優(yōu)化設計).doc》由會員分享,可在線閱讀,更多相關《matlab(四連桿優(yōu)化設計).doc(9頁珍藏版)》請在裝配圖網上搜索。
機械優(yōu)化設計在matlab中的應用 東南大學機械工程學院** 一 優(yōu)化設計目的: 在生活和工作中,人們對于同一個問題往往會提出多個解決方案,并通過各方面的論證從中提取最佳方案。最優(yōu)化方法就是專門研究如何從多個方案中科學合理地提取出最佳方案的科學。由于優(yōu)化問題無所不在,目前最優(yōu)化方法的應用和研究已經深入到了生產和科研的各個領域,如土木工程、機械工程、化學工程、運輸調度、生產控制、經濟規(guī)劃、經濟管理等,并取得了顯著的經濟效益和社會效益。 二 優(yōu)化設計步驟: 1.機械優(yōu)化設計的全過程一般可以分為如下幾個步驟: 1)建立優(yōu)化設計的數學模型; 2)選擇適當的優(yōu)化方法; 3)編寫計算機程序; 4)準備必要的初始數據并傷及計算; 5)對計算機求得的結果進行必要的分析。 其中建立優(yōu)化設計數學模型是首要的和關鍵的一步,它是取得正確結果的前提。優(yōu)化方法的選取取決于數學模型的特點,例如優(yōu)化問題規(guī)模的大小,目標函數和約束函數的性態(tài)以及計算精度等。在比較各種可供選用的優(yōu)化方法時,需要考慮的一個重要因素是計算機執(zhí)行這些程序所花費的時間和費用,也即計算效率。 2.建立數學模型的基本原則與步驟 ① 設計變量的確定; 設計變量是指在優(yōu)化設計的過程中,不斷進行修改,調整,一直處于變化的參數稱為設計變量。設計變量的全體實際上是一組變量,可用一個列向量表示: x=。 ② 目標函數的建立; 選擇目標函數是整個優(yōu)化設計過程中最重要的決策之一。當對某以設計性能有特定的要求,而這個要求有很難滿足時,則針對這一性能進行優(yōu)化會得到滿意的效果。目標函數是設計變量的函數,是一項設計所追求的指標的數學反映,因此它能夠用來評價設計的優(yōu)劣。 目標函數的一般表達式為: f(x)=,要根據實際的設計要求來設計目標函數。 ③ 約束條件的確定。 一個可行性設計必須滿足某些設計限制條件,這些限制條件稱為約束條件,簡稱約束。 由若干個約束條件構成目標函數的可行域,而可行域內的所有設計點都是滿足設計要求的,一般情況下,其設計可行域可表示為 在可行域中,任意設計點滿足全部約束條件,稱為可行解,但不是最優(yōu)解,而優(yōu)化設 計就是要求出目標函數在可行域的最優(yōu)解。 三 實例分析 (機械優(yōu)化設計P241頁例8-5) 設計一曲柄搖桿機構如圖,要求: 曲柄從 且已知范圍內變化。 分析: 1) 設計變量的確定 決定機構尺寸的各桿長度,以及當搖桿按已知運動規(guī)律開始運行時,曲柄所載的位置角應列為設計變量,即: X== 考慮到機構的桿長按比例變化時,不會改變其運動規(guī)律,因此在計算時常取 ,而其他桿長則按比例取為的倍數。若取曲柄的初始位置角為極位角,則及相應搖桿位置角均為桿長的函數,幾何圖形關系如右圖,其關系式為: =arcos[] (1) =arcos[] (2) 將的長度代入上式(1),(2)得到: =arcos[] =arcos[] 因此,只有為獨立變量,設計變量減少,故最后的設計變量為: X== 2) 目標函數的建立 目標函數可根據已知的運動規(guī)律與機構實際運動規(guī)律之間的偏差最小為指標來建立,即 f(x)= → min 式中 —期望輸出角,; m — 輸入角等分數; —實際輸出角,由下圖得: a) 0≤< b) (3) 式中 將輸入角分成30等分,并用近似公式計算,可得目標函數的表達式: f(x)= 由題意知,傳動角的變化范圍是,則上式中變量的最后形式可以寫成: 將帶入(4) (5)得: 為當時的理想輸出角,其值在題目中已經給出: 3)約束條件的確定 ① 曲柄搖桿機構應滿足曲柄存在條件,可得 ②曲柄搖桿機構的傳動角可得 把約束條件簡化( =5 == ,) 其中滿足條件,故最后一共有兩個設計變量(),7個約束條件。 4)優(yōu)化計算 ① 此問題的圖解見上圖,有7個約束條件構成了改優(yōu)化模型的可行域,而最優(yōu)解在可行域內。 ②優(yōu)化方法選擇: 該問題屬于一般的約束非線性最優(yōu)化類型,可以使用matlab優(yōu)化工具箱里面的‘fmincon’函數進行求解。 ⑴ fmincon里面算法的選擇:fmincon里面一共提供了‘largescale’,‘ medium-scale’兩種算法,由于此問題只有兩個設計變量,維數較低,故采用‘medium-scale’算法。‘medium-scale’算法是采用SQP,算法中Hessian陣可以通過BFGS迭代,初始Hessian陣任給。注意BFGS公式中q項是需要計算目標函數梯度得到的。所以Hessian矩陣的近似計算是需要用到有限差分法。在采用‘medium-scale’算法時,需提供其設計變量的初始點 的信息,而初始點的選擇也將影響計算得收斂性和收斂速度,如果初始點選擇得不恰當,可能最后函數不能收斂,得不到計算結果。 ⑵精度的控制:為了得到更加精確地解,需要設置優(yōu)化函數的控制精度,函數本身默認精度為1e-4,精度比較低,通過options的設置將精度提高到 1e-9,這樣得到的結果更精確。 以上兩點通過設置options參數即可: options=optimset(largescale,off,display,off,Algorithm,active-set,TolFun,1e-9); 所有的程序編好以后,在命令窗口輸入:youhua 得到的matlab的運行結果如下: >> youhua x = 4.1574 2.2909 %最優(yōu)解 fval = 5.1899e-004 %目標函數最優(yōu)點的值 exitflag = 5 %標志值,’5’表示重要方向導數小于規(guī)定的容許范圍并且約束違背小于options.ToLCon output = iterations: 12 %迭代次數 funcCount: 40 %函數的評價次數 lssteplength: 1 stepsize: 7.6955e-005 algorithm: medium-scale: SQP, Quasi-Newton, line-search %采用的中型算法 firstorderopt: 1.0832e-006 %一階最優(yōu)性條件 constrviolation: -1.0852e-006 message: [1x780 char] %跳出信息 lambda = lower: [2x1 double] upper: [2x1 double] eqlin: [0x1 double] eqnonlin: [0x1 double] ineqlin: [5x1 double] ineqnonlin: [2x1 double] grad = %函數在最優(yōu)點處梯度信息 1.0e-003 * 0.4888 0.4445 hessian = %函數在最優(yōu)點處海塞矩陣 0.0016 0.0075 0.0075 0.0468 >> 5)結果分析 ① 采用fmincon求解的最優(yōu)值: =[4.1574; 2.2909]; ; 采用算法:中型算法(mediun-scale)。 這與課本給出的最優(yōu)解:=[4.1286;2.3325],=0.0156相比,計算精度更高,最優(yōu)解的數值更精確,故計算準確度高。 ② 用matlab繪制輸入——輸出曲線關系圖 上圖中(單位為“度”)藍色的線代表曲柄搖桿機構的實際輸出角與輸入角的關系,紅色的線代表理想輸出角與輸入角的關系。 可以看出: 實際輸出和理論輸出曲線之間存在線性誤差,其最大線性誤差為,誤差在允許的范圍之內,故結果的可信度也較大,運用matlab優(yōu)化工具箱計算所得結果正確。 小結 通過結合實際問題的分析,計算,求解,更加深入地了解和掌握機械優(yōu)化設計的過程和步驟,比較重要的步驟是數學模型的建立,以及設計變量的選取,以及數學模型的尺度變換,根據機構實際工作需要,建立目標函數的約束條件等等,當數學模型建好以后,剩下的工作可以再matlab里面完成,而matlab里面的優(yōu)化工具箱,給用戶提供了多種優(yōu)化函數,使用者只需要將數學模型按要求編寫成子程序嵌入已有的優(yōu)化程序即可。 在設計過程中也遇到一些困難,比如說在在用matlab計算時,計算機已知處于busy狀態(tài),得不到函數的最優(yōu)解,最后反復的檢查,終于找的了其原因,是由于初始點選擇不恰當引起的,如果初始點選擇得好,可以節(jié)省計算時間和計算空間,故初始點的選取比較重要。 附錄 1. 編寫目標函數M文件myfun.m: function f=myfun(x) f=0; %函數f賦初值 a0=acos(((1+x(1))^2-x(2)^2+25)/(10*(1+x(1)))); %初始計算點曲柄和搖桿的角度 b0=acos(((1+x(1))^2-x(2)^2-25)/(10*x(2))); i=2; while(i<=31) %設置迭代次數為30次 a(i)=a0+(pi/2)*(i/30); % 計算曲柄各分度的角度值 b(i)=b0+2*(a(i)-a0)^2/(3*pi); % 計算搖桿各分度的角度值 r=sqrt(26-10*cos(a(i))); c(i)=acos((r^2+x(2)^2-x(1)^2)/(2*x(2)*r)); d(i)=acos((r^2+24)/(10*r)); if a(i)<=pi e(i)=pi-c(i)-d(i); %計算搖桿輸出的實際值 else if a(i)<=2*pi e(i)=pi-c(i)+d(i); end end a(1)=a0; f=f+((b(i)-e(i))^2)*(a(i)-a(i-1)); %目標函數的計算 i=i+1; end 2. 編寫非線性不等式約束M文件constrain.m: function[c ceq]=constrain(x) c=[36-x(1)^2-x(2)^2-1.414*x(1)*x(2); x(1)^2+x(2)^2-1.414*x(1)*x(2)-16]; %非線性不等式約束 ceq=[]; 3. 調用fmincon優(yōu)化函數,建立youhua.m文件: lb=[1;1]; %設計變量的下界 x0=[4;2]; %迭代初始點 A=[-1,0;0,-1;-1,-1;1,-1;-1,1]; %線性不等式約束 b=[-1;-1;-6;4;4]; options=optimset(largescale,off,display,off,Algohm,active-set,TolFun,1e-9); %采用中型算法,設計精度為1e-9 [x,fval,exitflag,output]=fmincon(@myfun,x0,A,b,[],[],lb,[],@constrain,options) %調用fmincon函數- 配套講稿:
如PPT文件的首頁顯示word圖標,表示該PPT已包含配套word講稿。雙擊word圖標可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設計者僅對作品中獨創(chuàng)性部分享有著作權。
- 關 鍵 詞:
- matlab 連桿 優(yōu)化 設計
裝配圖網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
鏈接地址:http://www.3dchina-expo.com/p-6649448.html