• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    糧倉(cāng)建筑氣密性預(yù)測(cè)軟件的開(kāi)發(fā)

    2020-01-14 07:18:56郭治洪童滬琨張夢(mèng)歌劉震華李建平陳光中
    關(guān)鍵詞:氣密性糧倉(cāng)向量

    郭治洪,童滬琨,張夢(mèng)歌,劉震華,李建平,陳光中

    (1.河南工業(yè)大學(xué)信息科學(xué)與工程學(xué)院,鄭州450001;2.河南工業(yè)大學(xué)土木建筑學(xué)院,鄭州450001)

    1 引言

    糧倉(cāng)建筑的氣密性對(duì)于儲(chǔ)糧安全具有重要意義,在以往的糧倉(cāng)建筑設(shè)計(jì)中,缺乏針對(duì)糧倉(cāng)設(shè)計(jì)方案與糧倉(cāng)氣密性的關(guān)系進(jìn)行量化分析的工具,糧倉(cāng)設(shè)計(jì)人員在進(jìn)行糧倉(cāng)建筑氣密性設(shè)計(jì)時(shí)需要可供參考的依據(jù)[1]。本研究試圖建立糧倉(cāng)設(shè)計(jì)特征變量與糧倉(cāng)氣密性的回歸模型,開(kāi)發(fā)出可以根據(jù)影響糧倉(cāng)氣密性的相關(guān)因素對(duì)糧倉(cāng)氣密性進(jìn)行提前預(yù)估的軟件,方便糧倉(cāng)設(shè)計(jì)人員依照糧倉(cāng)氣密性預(yù)測(cè)結(jié)果改進(jìn)設(shè)計(jì)方案,提高儲(chǔ)糧的安全性,減少糧食產(chǎn)后損失。

    建立糧倉(cāng)建筑設(shè)計(jì)方案特征變量與糧倉(cāng)氣密性指標(biāo)的回歸模型需要一定數(shù)量的已建成糧倉(cāng)的氣密性數(shù)據(jù),由于受到人力和財(cái)力限制,已建成糧倉(cāng)的氣密性數(shù)據(jù)為小樣本數(shù)據(jù)。在文獻(xiàn)[1]中,支持向量機(jī)和bootstrap 方法相結(jié)合,將影響糧倉(cāng)氣密性的特征變量值進(jìn)行歸一化和Onehot 編碼,建立回歸模型進(jìn)行氣密性區(qū)間預(yù)測(cè),測(cè)試表明,糧倉(cāng)氣密性的區(qū)間預(yù)測(cè)取得了較好的效果。該軟件的計(jì)算方法是:一方面,采用支持向量機(jī)建立糧倉(cāng)氣密性回歸模型,利用該回歸模型對(duì)糧倉(cāng)氣密性指標(biāo)進(jìn)行點(diǎn)預(yù)測(cè);另一方面,將糧倉(cāng)氣密性回歸模型與bootstrap 方法相結(jié)合,實(shí)現(xiàn)對(duì)糧倉(cāng)氣密性指標(biāo)的區(qū)間預(yù)測(cè),區(qū)間預(yù)測(cè)采用了文獻(xiàn)[1]提出的方法。

    由臺(tái)灣大學(xué)林智仁先生開(kāi)發(fā)的LIBSVM 支持向量機(jī)工具箱[2]被廣泛應(yīng)用于工業(yè)、農(nóng)業(yè)、交通、電力、醫(yī)學(xué)等多學(xué)科研究分析預(yù)測(cè)過(guò)程中[3~6]。為方便設(shè)計(jì)人員預(yù)測(cè)糧倉(cāng)設(shè)計(jì)方案的氣密性,本研究使用LIBSVM 工具箱,并采取C++ GUI 框架Qt與MATLAB 混合編程相結(jié)合的方式開(kāi)發(fā)了應(yīng)用軟件EAGDS 1.0,混合編程可以把MATLAB 強(qiáng)大的計(jì)算能力和Qt 優(yōu)秀的軟件界面設(shè)計(jì)性能結(jié)合起來(lái)[7,8]。本研究的軟件界面設(shè)計(jì)美觀實(shí)用,簡(jiǎn)約大方,操作方便。該軟件使用多線程加速技術(shù)[9]防止卡頓,能夠讓使用者獲得良好的體驗(yàn)。為了確保數(shù)據(jù)安全,該軟件加入正則表達(dá)式功能對(duì)用戶輸入進(jìn)行限制[10],使用異常警告來(lái)提示突發(fā)情況,幫助使用者分析和解決問(wèn)題。軟件使用界面如圖1 所示。

    圖1 EAGDS 1.0 軟件界面圖

    2 計(jì)算原理

    2.1 數(shù)據(jù)預(yù)處理

    數(shù)據(jù)集合表現(xiàn)為矩陣形式,矩陣每一行為一條數(shù)據(jù),每一列與一個(gè)變量相對(duì)應(yīng)。糧倉(cāng)設(shè)計(jì)特征變量包括數(shù)值變量和種類變量,數(shù)值變量的變量值可以比較大小和排序,如墻厚、建筑面積等;種類變量的變量值不可比較大小和排序,如倉(cāng)型、屋蓋類型等。

    在數(shù)據(jù)預(yù)處理階段,對(duì)數(shù)值變量數(shù)據(jù)進(jìn)行歸一化,歸一化計(jì)算公式如下:

    式中,xij表示矩陣中第i行第j列的數(shù)據(jù);x′i表示歸一化后的數(shù)據(jù)表示第j列的最小值;makx(xk)j表示第j列的最大值。

    用公式(1),將數(shù)值變量值映射到區(qū)間[0,1]。

    對(duì)于種類變量,采取Onehot 編碼[11],例如,有3 個(gè)種類,則第1 類編碼為(1,0,0),第2 類編碼為(0,1,0),第3 類編碼為(0,0,1)。

    2.2 支持向量機(jī)

    支持向量機(jī)是一種基于統(tǒng)計(jì)學(xué)的機(jī)器學(xué)習(xí)算法,能夠有效地處理小樣本數(shù)據(jù),可以避免局部最小值,具有較好的泛化能力[12,13]。支持向量機(jī)可以完成分類、回歸和分布估計(jì)等任務(wù)。本研究采用LIBSVM 工具箱建立糧倉(cāng)設(shè)計(jì)特征變量與氣密性的回歸模型,氣密性指標(biāo)為500Pa 壓力半衰期[14]。

    2.3 boot st r ap 方法

    bootstrap 方法由美國(guó)統(tǒng)計(jì)學(xué)家Efron 系統(tǒng)地提出[15]。bootstrap 應(yīng)用了有放回抽樣技術(shù),可以用于機(jī)器學(xué)習(xí)模型的區(qū)間預(yù)測(cè)[16,17]。本研究采用支持向量機(jī)回歸模型結(jié)合bootstrap 方法對(duì)糧倉(cāng)氣密性進(jìn)行區(qū)間預(yù)測(cè)。

    3 軟件開(kāi)發(fā)

    3.1 Qt 和MATLAB混合編程

    在Qt 和MATLAB 混合編程前,應(yīng)該根據(jù)MATLAB 版本選擇合適的C++編譯器和Qt 版本,在本研究中,采用較新的MATLAB 2016b 版本,該版本支持與VS2015(對(duì)應(yīng)Qt 版本5.9.3)進(jìn)行混合編程,在安裝相關(guān)軟件后應(yīng)該對(duì)MATLAB 進(jìn)行設(shè)置。操作方法是在MATLAB 命令窗口輸入mbuild-setup 配置MATLAB 編譯器,選擇C++編譯模式進(jìn)行開(kāi)發(fā)。

    MATLAB 可以導(dǎo)出dll 動(dòng)態(tài)鏈接庫(kù)與Qt 進(jìn)行調(diào)用,利用MATLAB 完成算法運(yùn)算,Qt 的界面顯示和交互數(shù)據(jù)輸入輸出,從而滿足研究使用[18]。

    由于Qt 是基于C++的開(kāi)源庫(kù),C++是面向?qū)ο螅∣OP)的開(kāi)發(fā)語(yǔ)言,在軟件開(kāi)發(fā)過(guò)程中應(yīng)該以面向?qū)ο蠓绞竭M(jìn)行開(kāi)發(fā),配合Qt 的信號(hào)與槽函數(shù)機(jī)制使用。因此,要將之前的MATLAB 流程化代碼改成模塊化代碼,在本研究中,筆者將計(jì)算部分拆分成4 個(gè)模塊:(1)使用已有模型進(jìn)行點(diǎn)預(yù)測(cè)模式;(2)重新訓(xùn)練模型進(jìn)行點(diǎn)預(yù)測(cè)模式;(3)使用已有模型進(jìn)行區(qū)間預(yù)測(cè)模式;(4)重新訓(xùn)練模型進(jìn)行區(qū)間預(yù)測(cè)模式。這4 個(gè)模塊分別對(duì)應(yīng)軟件流程圖的4 條路線(見(jiàn)圖2)。

    圖2 EAGDS 1.0 軟件流程圖

    在Qt 與MATLAB 編程中,MATLAB 導(dǎo)出含有頭文件動(dòng)態(tài)運(yùn)行庫(kù),需要將該頭文件加入到Qt 的項(xiàng)目工程中,同時(shí)通過(guò)#include <calc.h>頭文件的方式進(jìn)行調(diào)用(calc 這里只是實(shí)例名稱,實(shí)際研究可能不同),MATLAB 調(diào)用傳遞參數(shù)由mxArray 進(jìn)行聲明,聲明時(shí)要有該變量的種類和數(shù)值范圍,如含有多個(gè)實(shí)數(shù)(mxREAL)浮點(diǎn)矩陣類(mxDOUBLE_CLASS)。

    3.2 Qt 信號(hào)槽機(jī)制介紹

    信號(hào)槽是Qt 的核心機(jī)制,信號(hào)就是發(fā)生某種動(dòng)作的條件,槽函數(shù)是滿足條件要執(zhí)行運(yùn)算的函數(shù)[19,20]。例如,在Qt 中按下界面的按鈕就發(fā)送一個(gè)信號(hào),信號(hào)發(fā)出后由槽函數(shù)接收并且進(jìn)行響應(yīng),槽函數(shù)可以是計(jì)算任務(wù)、網(wǎng)絡(luò)操作、消息事件的發(fā)出。在本研究中,筆者使用了大量信號(hào)槽機(jī)制來(lái)確保軟件的正常工作。

    3.3 LI BSVM庫(kù)的配置

    LIBSVM 庫(kù)下載后解壓,改變MATLAB 工作目錄并進(jìn)入庫(kù)的根目錄,運(yùn)行make 命令進(jìn)行編譯,將編譯好的庫(kù)添加到MATLAB 搜索路徑中。

    3.4 動(dòng)態(tài)鏈接庫(kù)建立

    在MATLAB 中,輸入deploytool 命令打開(kāi)開(kāi)發(fā)工具對(duì)話框,選擇第三個(gè)庫(kù)編譯器(Library Compiler),打開(kāi)動(dòng)態(tài)鏈接庫(kù)生成器,選擇C++動(dòng)態(tài)鏈接庫(kù)后,加入MATLAB 計(jì)算源碼文件*.m,等待軟件鏈接庫(kù)的打包。

    打包之后會(huì)產(chǎn)生一個(gè)頭文件.h,一個(gè)編譯用靜態(tài)符號(hào)庫(kù).lib,動(dòng)態(tài)鏈接庫(kù).dll,編輯Qt 的項(xiàng)目文件,添加頭文件和動(dòng)態(tài)鏈接庫(kù)文件,并且同時(shí)添加MATLAB 的基礎(chǔ)庫(kù)文件(見(jiàn)圖3)。

    3.5 軟件功能的開(kāi)發(fā)

    對(duì)于本研究中軟件不同的預(yù)測(cè)類型、支持向量機(jī)訓(xùn)練模型方式的選擇,會(huì)產(chǎn)生不同的計(jì)算結(jié)果,表1 展示了預(yù)測(cè)類型,支持向量機(jī)訓(xùn)練模型方式及計(jì)算結(jié)果的評(píng)價(jià)指標(biāo)。

    在本軟件中,筆者使用QButtonGroup 作為功能模式的選擇菜單,使用QLineEdit 作為用戶的抽樣數(shù)據(jù)輸入控制,使用QTextBrower 作為計(jì)算結(jié)果的輸出。在不同功能模式按鈕下,筆者使用了多個(gè)槽函數(shù)控制預(yù)測(cè)結(jié)果的顯示模式[21];同時(shí)為了限制用戶輸入,筆者在用戶輸入框使用正則表達(dá)式確保輸入符合取值范圍,保證用戶結(jié)果的準(zhǔn)確;為了能夠提示異常情況的發(fā)生,筆者利用MATLAB 對(duì)數(shù)據(jù)進(jìn)行了判斷處理,設(shè)置信號(hào)變量傳遞Qt 程序用以判斷響應(yīng),提示使用者注意[22];軟件還加入了數(shù)據(jù)文件自檢的功能,當(dāng)文件不存在時(shí)會(huì)告知用戶軟件受到損壞將無(wú)法使用。

    圖3 Qt 工程項(xiàng)目配置MATLAB鏈接庫(kù)

    表1 軟件功能表

    3.6 多線程的使用

    本研究開(kāi)發(fā)的第一代軟件實(shí)現(xiàn)了軟件的主要功能,但在測(cè)試使用中發(fā)現(xiàn)軟件在計(jì)算時(shí)主界面會(huì)卡死并出現(xiàn)崩潰的情況,使用者無(wú)法在界面得到軟件計(jì)算提示,重新得到響應(yīng)需等待計(jì)算過(guò)程結(jié)束,嚴(yán)重影響了使用者的體驗(yàn)。這是由于主界面和計(jì)算功能共同使用一個(gè)線程,使用多線程可以避免這類情況。

    在本研究開(kāi)發(fā)第二代軟件中,筆者使用計(jì)算線程和界面主線程分開(kāi)的方式分別完成不同的功能。在計(jì)算線程中完成MATLAB 計(jì)算接口的調(diào)用,使用自定義信號(hào)變量和槽函數(shù)告知計(jì)算功能的完成和異常情況的發(fā)生,該計(jì)算線程的定義如圖4 所示,界面主線程只負(fù)責(zé)執(zhí)行與用戶交互動(dòng)作的功能。經(jīng)過(guò)實(shí)驗(yàn)和測(cè)試,使用多線程編程起到了很好的效果。

    圖4 計(jì)算線程的定義

    4 結(jié)語(yǔ)

    本研究開(kāi)發(fā)的糧倉(cāng)氣密性預(yù)測(cè)軟件EAGDS 1.0 使用了支持向量機(jī)和bootstrap 對(duì)糧倉(cāng)氣密性數(shù)據(jù)進(jìn)行建模分析,可以對(duì)新建糧倉(cāng)氣密性進(jìn)行預(yù)測(cè),以便設(shè)計(jì)人員改進(jìn)設(shè)計(jì),提高儲(chǔ)存糧食的質(zhì)量,保證儲(chǔ)存糧食的安全,減少不必要的損失。本研究根據(jù)相關(guān)的算法開(kāi)發(fā)出計(jì)算預(yù)測(cè)軟件,該軟件界面友好,簡(jiǎn)潔易用,使得研究結(jié)果具有較好的實(shí)用性和推廣應(yīng)用價(jià)值。

    猜你喜歡
    氣密性糧倉(cāng)向量
    小刺猬的糧倉(cāng)
    好糧倉(cāng)就是硬底氣
    向量的分解
    車門氣密性對(duì)風(fēng)噪的影響分析
    關(guān)于布袋除塵器氣密性試驗(yàn)新方法的研討
    聚焦“向量與三角”創(chuàng)新題
    某排氣系統(tǒng)球鉸氣密性仿真分析
    檢查氣密性方法有多種
    糧倉(cāng)
    寶藏(2017年10期)2018-01-03 01:53:09
    樹(shù)懶的糧倉(cāng)
    幼兒畫刊(2017年5期)2017-06-21 21:17:02
    乌鲁木齐市| 封开县| 台南县| 日喀则市| 凌源市| 嘉兴市| 布拖县| 辽阳县| 信丰县| 凌云县| 容城县| 清水河县| 铁岭县| 永宁县| 怀柔区| 正定县| 肃北| 奎屯市| 日土县| 赫章县| 广水市| 昌宁县| 光山县| 龙山县| 高台县| 那坡县| 旺苍县| 汕尾市| 琼海市| 桂平市| 揭阳市| 光山县| 厦门市| 滦南县| 邢台县| 嘉荫县| 赤水市| 元氏县| 清苑县| 扎鲁特旗| 云浮市|