999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

MATLAB與VC++混合編程在懸置系統(tǒng)優(yōu)化平臺(tái)中的應(yīng)用*

2012-08-20 05:18:50雷芳華劉博良
關(guān)鍵詞:模態(tài)工程系統(tǒng)

雷芳華,孫 寧,劉博良

(桂林電子科技大學(xué) 機(jī)電工程學(xué)院,廣西 桂林541004)

在工程計(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]。

近年來(lái)隨著動(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ù)之一,以此來(lái)達(dá)到優(yōu)化目標(biāo)函數(shù)的目的。然而在C++語(yǔ)言中是不能將函數(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á)到了程序簡(jiǎn)潔、編程效率提高和算法更易實(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所示。

在動(dòng)力總成上建立一個(gè)動(dòng)坐標(biāo)系G0-XYZ,原點(diǎn)G0位于動(dòng)力總成質(zhì)心,系統(tǒng)動(dòng)力模型通過三個(gè)具有三向彈性(阻尼)的元器件支承,剛體的廣義坐標(biāo)為 x、y、z及繞X、Y、Z 軸的轉(zhuǎn)動(dòng) θx、θy、θz,記做 q。 在懸置系統(tǒng)中,阻尼能有效地減少系統(tǒng)的振動(dòng),由于阻尼對(duì)固有頻率和解耦程度的影響較小,一般可以忽略不計(jì)。可以根據(jù)上述動(dòng)力總成懸置系統(tǒng)力學(xué)模型建立6自由度無(wú)阻尼自由振動(dòng)方程:

目前應(yīng)用比較普遍的模態(tài)解耦度評(píng)價(jià)指標(biāo)是用模態(tài)的能量比值概念來(lái)表示的。第j階振型中第k個(gè)自由度的振動(dòng)能量占該階運(yùn)動(dòng)總能量的百分比可以表示為:

式中 φj為第 j階振型向量,ek為第 k個(gè)元素為 1的 6階單位列向量。

在一個(gè)頻率下,一個(gè)模態(tài)能量占到總能量的98%即表明這個(gè)模態(tài)能量非常強(qiáng),在實(shí)際工程中,一般情況是難以達(dá)到這種解耦度的。一般來(lái)說,如果在某個(gè)頻率下,一個(gè)模態(tài)的能量占到總能量的85%以上,則這個(gè)模態(tài)與其他模態(tài)的解耦程度被視為滿意,對(duì)于橫向轉(zhuǎn)動(dòng)模態(tài)一般要求要高些,期望達(dá)到90%以上[2]。

1.2 基于MATCOM轉(zhuǎn)化法混合編程原理分析

MATCOM是MathWorks公司開發(fā)的為MATLAB中的m文件進(jìn)行高效解釋和調(diào)試的集成開發(fā)環(huán)境。MATCOM最主要的功能是能夠?qū)文件按照與C++語(yǔ)法的對(duì)應(yīng)關(guān)系翻譯為cpp源代碼,并通過Visual C++將其編譯成可執(zhí)行程序(exe)或動(dòng)態(tài)鏈接庫(kù)(dll),這樣既保持了C++的優(yōu)良算法,又保持了C++的高執(zhí)行效率。

利用MATCOM實(shí)現(xiàn)MATLAB與VC++之間的混合編程,具體實(shí)現(xiàn)方法有以下3種可供選擇:

(1)利用MATCOM生成獨(dú)立執(zhí)行的exe文件。但不能脫離MATLAB的后臺(tái)支持;

(2)利用MATCOM生成動(dòng)態(tài)鏈接庫(kù)(dll)文件;

(3)利用MATCOM的組件VisualMatcom實(shí)現(xiàn)在Visual C++6.0環(huán)境中直接對(duì)m文件進(jìn)行編譯,這種方法與第二種十分相似,但應(yīng)用起來(lái)更為簡(jiǎn)便[3]。

為了實(shí)現(xiàn)MATLAB與VC++之間的混合編程,本文采用第二種方法,以 MATLAB 7.1、MATCOM 4.5、VC++6.0和Windows XP為操作環(huán)境,具體轉(zhuǎn)化法如圖2所示。

圖2 MATCOM轉(zhuǎn)化法示意圖

采用第二種MATCOM轉(zhuǎn)化法,結(jié)合算例,將MATLAB中計(jì)算函數(shù)的m文件轉(zhuǎn)化為VC++可識(shí)別的文件;接著,通過創(chuàng)建VC++工程,將所需文件加入工程目錄中。

2 VC++與MATLAB混合編程的實(shí)現(xiàn)

2.1 算例分析

本文將針對(duì)某國(guó)產(chǎn)自動(dòng)檔車型的振動(dòng)問題,分析基于遺傳算法的動(dòng)力總成懸置系統(tǒng)多目標(biāo)剛度優(yōu)化,優(yōu)化的目標(biāo)為9個(gè)剛度設(shè)計(jì)變量,以解耦度最大為最佳優(yōu)化目標(biāo),此平臺(tái)采用加權(quán)系數(shù)法對(duì)6自由度解耦度進(jìn)行加權(quán),形成適應(yīng)度函數(shù)如下:

式中 w1,w2,…,w6為權(quán)值,且 w1+w2+…+w6=1,digi表示 i方向上最大解耦度(i=1,2,…,6)。

基于遺傳算法,優(yōu)化的目標(biāo)是使得f適應(yīng)度值最大,交叉概率和變異概率分別取0.3、0.2,種群染色體個(gè)數(shù)設(shè)置為30,優(yōu)化代數(shù)設(shè)置為400,約束條件設(shè)置固有頻率在6 Hz~18 Hz之間,相鄰固有頻率最小為1 Hz。為了便于動(dòng)態(tài)分析和實(shí)現(xiàn)混合編程,同時(shí)給出了懸置系統(tǒng)的基本參數(shù)。表1是動(dòng)力總成質(zhì)量和慣性參數(shù),表2為懸置系統(tǒng)位置和安裝方向角參數(shù)。

表1 懸置系統(tǒng)的慣性參數(shù)

表2 懸置系統(tǒng)的位置和安裝方向角

2.2 實(shí)現(xiàn)混合編程

實(shí)現(xiàn)方法是運(yùn)用MATCOM生成動(dòng)態(tài)鏈接庫(kù)文件,這種方法在實(shí)際工程中使用較多,運(yùn)用也比較靈活,易于實(shí)現(xiàn)MATLAB與VC++之間的函數(shù)、參數(shù)之間的傳遞。最好的情況是能直接使用MATCOM編譯生成cpp文件,而不是直接使用dll文件[4]。下面以懸置系統(tǒng)優(yōu)化為例進(jìn)行說明,步驟如下:

(1)在 MATLAB中生成 m源文件,通過 MATCOM編譯器在當(dāng)前目錄文件夾中生成三種4個(gè)VC++可識(shí)別的文件,然后添加到VC++工程目錄下。在實(shí)現(xiàn)混合編程之前,根據(jù)MATLAB編程規(guī)則,在軟件中實(shí)現(xiàn)編寫求解固有頻率和解耦度的m程序文件,其程序主要部分如下所示:

其中,m2、X、U、r、J為輸入數(shù)組,是從 VC++編輯框輸入傳給jieoudu函數(shù)的要進(jìn)行求解固有頻率和解耦度的參數(shù),特別需要注意的是逆矩陣函數(shù)和eig函數(shù),如果這兩個(gè)函數(shù)在C++中實(shí)現(xiàn),需要編輯大量的語(yǔ)句才能實(shí)現(xiàn)。

(2)創(chuàng)建一個(gè)名為 youhuapingtai,基于對(duì)話框的 MFC(exe)工程。

(3)將MATCOM編譯器生成的4個(gè)文件拷貝到建立的工程youhuapingtai目錄下。然后將拷貝的4個(gè)文件加入到VC工程中:工程→添加工程→文件。

(4)在youhuapingtaiDlg.cpp中進(jìn)行主要程序編輯,其主要代碼如下所示:

在函數(shù) static void initialization()中,傳遞一個(gè) cyunxingdlg類型的指針變量 ,編寫了如下主要隨機(jī)生成初始數(shù)據(jù)的子程序:

(5)一般在這種情況下編譯會(huì)出現(xiàn)下列錯(cuò)誤:fatal error C1010:unexpected end of file while looking for precompiled header directive。因此,需要進(jìn)行下列設(shè)置:工程→設(shè)置→C/C++,選擇precompiled headers選擇第一或第二項(xiàng):自動(dòng)選擇預(yù)補(bǔ)償頁(yè)眉。執(zhí)行即可通過編譯。

(6)運(yùn)行程序,輸入?yún)?shù),點(diǎn)擊“優(yōu)化計(jì)算”按鈕,再點(diǎn)擊“顯示優(yōu)化結(jié)果”,出現(xiàn)計(jì)算結(jié)果顯示平臺(tái)。

應(yīng)用MATCOM轉(zhuǎn)化法改進(jìn)MATLAB和VC++的混合編程的不足,如對(duì)class數(shù)據(jù)類型部分支持eval、feval等語(yǔ)句不能在C++中實(shí)現(xiàn)、圖形窗口有些不盡人意等問題,在編程過程中,已經(jīng)避免了運(yùn)行出現(xiàn)以上的問題。

軟件平臺(tái)是基于MATCOM轉(zhuǎn)化法的混合編程,在運(yùn)算時(shí),明顯能感到其計(jì)算速度和效率的提高。結(jié)果中,固有頻率和解耦度的輸出結(jié)果也是相當(dāng)滿意的,在6個(gè)固有頻率下,各模態(tài)的能量解耦度都能占到90%以上。

本文通過懸置系統(tǒng)優(yōu)化平臺(tái)無(wú)縫結(jié)合的實(shí)踐運(yùn)用,以及平臺(tái)的穩(wěn)定測(cè)試,解決了VC++在解決矩陣處理問題上的弊端,簡(jiǎn)化了編寫程序的復(fù)雜性,同時(shí)也有效地提高了MATLAB在可移植性的底層編程功能和界面開發(fā)能力,對(duì)復(fù)雜算法的系統(tǒng)開發(fā)提供了一種強(qiáng)有力的技術(shù)支持。基于MATCOM轉(zhuǎn)化法的VC++與MATLAB混合編程,其程序代碼在編譯后封裝于鏈接庫(kù)中,因此也有利于保護(hù)軟件的著作權(quán)。

[1]繩曉玲,萬(wàn)書亭.MATLAB與VC混合編程及在振動(dòng)故障分析中的應(yīng)用[J].儀器儀表與分析監(jiān)測(cè),2011(2):25-27.

[2]龐劍,何華.汽車噪聲與振動(dòng)-理論與應(yīng)用[M].北京:北京理工大學(xué)出版社,2006:280-283.

[3]王毅,樊明,何聯(lián).基于 Matcom的 MATLAB與 VC++混合編程分析[J].哈爾濱商業(yè)大學(xué)學(xué)報(bào),2007,23(3):311-314.

[4]聞斌,崔建昆.MATLAB與Visual C++的聯(lián)合應(yīng)用[J].計(jì)算機(jī)與現(xiàn)代化,2004(2):14-15.

[5]劉維.精通 MATLAB與 C/C++混合程序設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2008:257-315.

猜你喜歡
模態(tài)工程系統(tǒng)
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
子午工程
太空探索(2016年6期)2016-07-10 12:09:06
國(guó)內(nèi)多模態(tài)教學(xué)研究回顧與展望
工程
基于HHT和Prony算法的電力系統(tǒng)低頻振蕩模態(tài)識(shí)別
工程
由單個(gè)模態(tài)構(gòu)造對(duì)稱簡(jiǎn)支梁的抗彎剛度
主站蜘蛛池模板: 青青青国产视频| 国产aⅴ无码专区亚洲av综合网| 亚洲aaa视频| 丰满的少妇人妻无码区| 精品一区二区无码av| 午夜国产大片免费观看| 国产日本一区二区三区| 国产特级毛片aaaaaa| 亚洲国产天堂久久九九九| 国产亚洲精久久久久久久91| 色老头综合网| 亚洲一级毛片免费观看| 91在线中文| 亚洲浓毛av| 色婷婷视频在线| 国产精品流白浆在线观看| 亚洲色图欧美激情| 亚洲精品视频免费观看| 久久人妻xunleige无码| 国产一级α片| 尤物特级无码毛片免费| 国产欧美专区在线观看| 国产丝袜一区二区三区视频免下载| 2021国产在线视频| 久久综合干| 国产精品美女网站| 国产高清精品在线91| 亚洲国产精品一区二区第一页免| 亚洲第七页| 久久免费看片| 99激情网| 国产精品免费p区| 国产欧美一区二区三区视频在线观看| 国产免费人成视频网| 中文字幕在线看| 国产精品专区第1页| 国产日本视频91| 免费看a级毛片| 久久无码av一区二区三区| 操美女免费网站| 欧美影院久久| 亚欧美国产综合| 国产va在线观看免费| 欧美自拍另类欧美综合图区| 亚洲国产成熟视频在线多多| 欧美激情第一欧美在线| 日本久久久久久免费网络| 美女一区二区在线观看| 露脸一二三区国语对白| 少妇精品久久久一区二区三区| 伊人久久影视| 92午夜福利影院一区二区三区| 国产91透明丝袜美腿在线| 亚洲第一色网站| 久久人搡人人玩人妻精品| 好吊日免费视频| 欧美天堂在线| 草逼视频国产| 播五月综合| 亚洲最新在线| 色综合天天娱乐综合网| 国产极品粉嫩小泬免费看| 狠狠做深爱婷婷综合一区| 精品国产成人三级在线观看| 亚洲人精品亚洲人成在线| 亚洲人成网站18禁动漫无码| 欧美亚洲综合免费精品高清在线观看| 国产区91| 亚洲精选无码久久久| 日韩黄色在线| 日韩毛片免费视频| 国产成人一区二区| 在线五月婷婷| 55夜色66夜色国产精品视频| 最新精品国偷自产在线| 大乳丰满人妻中文字幕日本| 欧美亚洲国产一区| 无码有码中文字幕| 97青青青国产在线播放| 国产成人免费| 国产91特黄特色A级毛片| 国产特级毛片|