MATLAB與VC++混合編程在懸置系統(tǒng)優(yōu)化平臺(tái)中的應(yīng)用
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘 要: 首先分析了MATLAB與VC++在懸置系統(tǒng)優(yōu)化設(shè)計(jì)編程方面的優(yōu)缺點(diǎn),接著闡述了懸置系統(tǒng)的優(yōu)化設(shè)計(jì)和MATCOM轉(zhuǎn)化法的基本原理,給出了求解固有特性的m文件,通過創(chuàng)建優(yōu)化平臺(tái),結(jié)合算例和操作步驟進(jìn)行混合編程,詳細(xì)地提出了一種高效的優(yōu)化設(shè)計(jì)編程方法。通過在系統(tǒng)平臺(tái)的應(yīng)用,表明MATCOM轉(zhuǎn)化法混合編程能無縫結(jié)合,大大縮短了優(yōu)化設(shè)計(jì)的周期,提高了效率。
關(guān)鍵詞: MATLAB;VC++;混合編程;優(yōu)化設(shè)計(jì);解耦
在工程計(jì)算中,多數(shù)工程的實(shí)現(xiàn)幾乎都要涉及多目標(biāo)函數(shù)的優(yōu)化,常規(guī)的解決辦法是運(yùn)用MATLAB或VC++軟件進(jìn)行編程計(jì)算,但目前這些軟件都還存在一些不足。一方面MATLAB雖有強(qiáng)大的計(jì)算能力和強(qiáng)大的數(shù)據(jù)處理能力,但是由于程序不能脫離其MATLAB環(huán)境運(yùn)行,限制了程序的通用性和應(yīng)用開發(fā),不利于后續(xù)編程;另一方面Visual C++程序的代碼運(yùn)行效率高,界面設(shè)置交互性也比較好,但是由于在函數(shù)計(jì)算能力方面的不足,很大程度上加大了編程人員對(duì)一般數(shù)學(xué)函數(shù)和算法的工作量。通過合適的編譯器,結(jié)合MATLAB和Visual C++混合編程能有助于界面開發(fā)和代碼重用,而且算法精確度高,可擴(kuò)展性強(qiáng),混合編程連接性較好[1]。
近年來隨著動(dòng)力總成懸置系統(tǒng)設(shè)計(jì)工程的發(fā)展,絕大部分研發(fā)人員在系統(tǒng)設(shè)計(jì)時(shí)以系統(tǒng)的固有頻率和解耦程度為合理設(shè)計(jì)目標(biāo),運(yùn)用MATLAB的GUI界面實(shí)現(xiàn)優(yōu)化面板設(shè)計(jì),這在一定程度上可以很好地提高運(yùn)算能力,但卻制約了程序升級(jí)和改進(jìn)的可擴(kuò)展性能力。針對(duì)這些工程問題,本文提出了一種基于MATCOM轉(zhuǎn)換法的VC++與MATLAB混合編程。傳統(tǒng)的VC++與MATLAB混合編程一般是在VC++環(huán)境下調(diào)用MATLAB編寫的函數(shù),在函數(shù)參數(shù)傳遞方面多用MATLAB編寫優(yōu)化算法函數(shù),總是將目標(biāo)函數(shù)的匿名函數(shù)作為其參數(shù)之一,以此來達(dá)到優(yōu)化目標(biāo)函數(shù)的目的。然而在C++語言中是不能將函數(shù)作為參數(shù)調(diào)用的,關(guān)于VC++與MATLAB混編參數(shù)調(diào)用這方面的文章也相當(dāng)少,本文提出了一種解決上述參數(shù)調(diào)用的方法。由于混編后的程序可以脫離MATLAB運(yùn)行,程序的速度和效率都得到了極大的提升。本文充分發(fā)揮MATCOM轉(zhuǎn)換法的優(yōu)勢(shì),將高難度的算法研究與實(shí)際應(yīng)用結(jié)合在一起,達(dá)到了程序簡潔、編程效率提高和算法更易實(shí)現(xiàn)的目的。
1 懸置系統(tǒng)優(yōu)化分析
1.1 懸置系統(tǒng)優(yōu)化原理分析
一般情況下,都是把動(dòng)力總成視為剛體,同時(shí)把動(dòng)力總成懸置系統(tǒng)視為有3個(gè)移動(dòng)自由度和3個(gè)轉(zhuǎn)動(dòng)自由度的一個(gè)空間6自由度振動(dòng)系統(tǒng),對(duì)應(yīng)6個(gè)模態(tài),包括前后移動(dòng)模態(tài)、左右移動(dòng)模態(tài)、上下移動(dòng)模態(tài)、橫向轉(zhuǎn)動(dòng)模態(tài)、縱向轉(zhuǎn)動(dòng)模態(tài)和左右轉(zhuǎn)動(dòng)模態(tài),懸置系統(tǒng)模型如圖1所示。
目前應(yīng)用比較普遍的模態(tài)解耦度評(píng)價(jià)指標(biāo)是用模態(tài)的能量比值概念來表示的。第j階振型中第k個(gè)自由度的振動(dòng)能量占該階運(yùn)動(dòng)總能量的百分比可以表示為:
采用第二種MATCOM轉(zhuǎn)化法,結(jié)合算例,將MATLAB中計(jì)算函數(shù)的m文件轉(zhuǎn)化為VC++可識(shí)別的文件;接著,通過創(chuàng)建VC++工程,將所需文件加入工程目錄中。
2 VC++與MATLAB混合編程的實(shí)現(xiàn)