本發(fā)明涉及網(wǎng)絡通信技術領域,特別涉及一種基于BP神經(jīng)網(wǎng)絡的交互界面操作請求隊列處理方法。
背景技術:
交互界面是人和計算機進行信息交換的通道,用戶通過交互界面面向計算機輸入信息、進行操作,計算機則通過交互界面向用戶提供信息。當用戶在客戶端進行滾動、縮放這些操作來查看感興趣的數(shù)據(jù)區(qū)間曲線圖,或?qū)?shù)據(jù)庫中的數(shù)據(jù)顯示在表格時,這些操作的功能是相同的,但是軟件界面上顯示的結(jié)果會發(fā)生相應的改變,可將這些操作視為具有相同功能的操作。用戶在進行具有相同功能的操作時,交互界面會將這些操作過程不斷的轉(zhuǎn)換為觸發(fā)事件,并將這些觸發(fā)事件封裝成請求指令發(fā)送出去,處理函數(shù)對接收到的請求指令進行相應的處理。常規(guī)的處理請求指令的流程如圖1所示:首先將請求指令存入隊列中,然后處理函數(shù)從隊列中獲取請求指令并執(zhí)行,即只有一個請求指令執(zhí)行完成后,才會執(zhí)行下一條請求指令,同時,當一條請求指令完成后,以繪圖或表格等形式將處理結(jié)果顯示在交互界面上。
但是在實際應用中,上述處理請求指令的過程存在顯著的缺陷是,在遇到處理數(shù)據(jù)量巨大或算法復雜等耗時長的情況,由于計算機處理性能有限,在一個或不同線程中處理具有相同功能的操作請求指令隊列時,處理完每條操作請求指令的時間間隔變大,因此交互界面會產(chǎn)生相應的變化的時間間隔也變大,這就給用戶造成一種界面在頓卡或者假死等極不流暢的體驗。而且,在處理這些請求指令隊列中,一般只有最后一個請求指令時用戶關心的最終結(jié)果,當隊列中請求指令較多且計算機的處理性能不足時,需要等待較長時間才能顯示最終的結(jié)果,工作效率較低,而且極大的影響了用戶在實際應用中的界面感受。
針對上述處理請求指令的過程存在的問題,常規(guī)的解決方法包括兩種:一種是采用多線程技術將隊列中每個請求指令放入線程中執(zhí)行,處理完成后再依次將結(jié)果顯示在交互界面上,這種方法雖然能同時一次性的執(zhí)行多個請求指令,但是會消耗大量的CPU資源,同時,顯示大數(shù)據(jù)量圖形或表格也需要較長的時間,會造成隊列不斷的擠壓請求指令,造成請求指令整體的處理速度變慢。另一種是僅執(zhí)行最后一個請求指令,而刪除其余的請求指令,這樣就可以將最終的結(jié)果顯示在交互界面上,這種方法雖然能大大的減少處理請求指令的時間,但是會造成界面顯示不流暢,而且在交互界面上不能動態(tài)的顯示處理結(jié)果,這樣就看不到最終的結(jié)果的中間的變化過程,不利于實際應用。
技術實現(xiàn)要素:
本發(fā)明的目的在于提供一種基于BP神經(jīng)網(wǎng)絡的交互界面操作請求隊列處理方法,以解決對具有相同功能操作的請求隊列處理效率低的問題。
為實現(xiàn)以上目的,本發(fā)明采用的技術方案為:提供一種基于BP神經(jīng)網(wǎng)絡的交互界面操作請求隊列處理方法,該方法包括:
根據(jù)預設的多個請求指令集,對預設BP神經(jīng)網(wǎng)絡模型進行訓練以得到目標BP神經(jīng)網(wǎng)絡,其中,每個請求指令集中的請求指令具有相同功能操作;
將目標BP神經(jīng)網(wǎng)絡加入到具有相同功能操作的請求指令隊列中,并分別對請求指令完成時間閾值εt、定時器以及請求指令緩存進行初始化;
基于目標BP神經(jīng)網(wǎng)絡,根據(jù)初始化后的請求指令完成時間閾值εt、定時器以及請求指令緩存,將接收到的請求指令發(fā)送給處理函數(shù)執(zhí)行;
處理函數(shù)對接收到的請求指令進行處理,并通過交互界面顯示處理結(jié)果。
與現(xiàn)有技術相比,本發(fā)明存在以下技術效果:通過采用BP神經(jīng)網(wǎng)絡能快速、準確的計算出執(zhí)行請求指令的完成時間,并根據(jù)初始化后的請求指令完成時間閾值εt、定時器以及請求指令緩存來智能的刪除不必要的請求指令,解決了請求隊列擠壓請求指令所引起的等待時間過長、軟件響應不及時等問題,同時,BP神經(jīng)網(wǎng)絡的仿真計算速度快,不會影響整個程序的執(zhí)行效率。本方案有效的解決了常規(guī)的對具有相同功能操作請求隊列處理效率低的問題,不僅提高了工作效率,還增加了用戶使用交互界面的滿意度。
附圖說明
圖1是本發(fā)明背景技術部分提及的常規(guī)處理請求指令的流程示意圖;
圖2是本發(fā)明一實施例中基于BP神經(jīng)網(wǎng)絡的交互界面操作請求隊列處理方法的流程示意圖;
圖3是本發(fā)明一實施例中步驟S1的細分步驟流程示意圖;
圖4是本發(fā)明另一實施例中步驟S1的細分步驟的流程示意圖;
圖5是本發(fā)明一實施例中步驟S3的細分步驟的流程示意圖;
圖6是本發(fā)明一實施例中實時更新請求指令的流程示意圖;
圖7是本發(fā)明另一實施例中實時更新請求指令的流程示意圖。
具體實施方式
下面結(jié)合圖2至圖7,對本發(fā)明做進一步詳細敘述。
如圖2所示,本實施例公開了一種基于BP神經(jīng)網(wǎng)絡的交互界面操作請求隊列處理方法,該方法包括如下步驟S1至S4:
S1、根據(jù)預設的多個請求指令集,對預設BP神經(jīng)網(wǎng)絡模型進行訓練以得到目標BP神經(jīng)網(wǎng)絡,其中,每個請求指令集中的請求指令具有相同功能操作;
需要說明的是,該處的每個請求指令集中的請求指令具有相同的功能操作,不同的請求指令集中的請求指令具有不同的功能操作。
具體地,由于請求指令是由多個參數(shù)構(gòu)成的,有些參數(shù)值的變化不改變處理函數(shù)執(zhí)行請求指令的運行時間,有些參數(shù)值的變化會顯著的改變處理函數(shù)執(zhí)行請求指令的運行時間,因此該處的請求指令集的設置方式具體為:將對處理函數(shù)執(zhí)行請求指令的運行時間沒有影響的參數(shù)值設置為一個常數(shù),將處理函數(shù)執(zhí)行請求執(zhí)行的運行時間有顯著影響的參數(shù)值根據(jù)實際應用情況在一定范圍內(nèi)設置多個數(shù)值。
下面以大數(shù)據(jù)量繪圖操作為例進行說明:當用戶對交互界面進行縮放、平移等操作時,交互界面會觸發(fā)一系列的請求指令,這類請求指令具有相同的功能,該請求指令主要由讀取數(shù)據(jù)起始點ID、讀取數(shù)據(jù)點數(shù)目和繪圖曲線寬度三個參數(shù)構(gòu)成。其中,讀取數(shù)據(jù)點數(shù)目和繪圖曲線寬度影響處理函數(shù)執(zhí)行請求指令的運行時間。當繪圖的數(shù)據(jù)點數(shù)據(jù)量大時,會是硬盤讀取數(shù)據(jù)文件和數(shù)據(jù)格式轉(zhuǎn)換等操作時間變長,同時也會大大增加數(shù)據(jù)曲線繪制在交互界面上的時間。而繪制曲線的寬度增大時,也會增加整個繪圖的時間。因此,將讀取數(shù)據(jù)點數(shù)目和繪圖曲線寬度這兩參數(shù)根據(jù)實際應用情況在一定范圍內(nèi)設置多個數(shù)值,將讀取數(shù)據(jù)起始點ID設置為一個常數(shù)。
S2、將目標BP神經(jīng)網(wǎng)絡加入到具有相同功能操作的請求指令隊列中,并分別對請求指令完成時間閾值εt、定時器以及請求指令緩存進行初始化;
S3、基于目標BP神經(jīng)網(wǎng)絡,根據(jù)初始化后的請求指令完成時間閾值εt、定時器以及請求指令緩存,將接收到的請求指令發(fā)送給處理函數(shù)執(zhí)行;
S4、處理函數(shù)對接收到的請求指令進行處理,并通過交互界面顯示處理結(jié)果。
本實施例中的方案通過采用BP(Back Propagation)神經(jīng)網(wǎng)絡,在常規(guī)的具有相同功能操作的請求隊列中刪除不必要的請求指令,有效的解決的了對具有相同功能操作請求隊列處理效率低的問題,提高了請求隊列的處理效率,提升了用戶體驗感。而且,本實施例中的技術方案能夠很好的適用不同配置的計算機平臺,對于不同配置的計算機平臺只需對BP神經(jīng)網(wǎng)絡重新進行訓練且僅進行一次訓練即可,其它參數(shù)均無需修改,具有較高的實用性。
如圖3所示,本實施例中的步驟S1具體包括如下細分步驟S11至S13:
S11、執(zhí)行多個請求指令集中的請求指令,記錄每個請求指令執(zhí)行完成的時間;
S12、將多個請求指令集中的請求指令和每個請求指令執(zhí)行完成的時間作為訓練數(shù)據(jù);
S13、根據(jù)訓練數(shù)據(jù)對預設BP神經(jīng)網(wǎng)絡模型進行訓練,以得到目標BP神經(jīng)網(wǎng)絡。
具體地,步驟S13中對預設BP神經(jīng)網(wǎng)絡模型進行訓練的具體過程是:
根據(jù)處理后的訓練數(shù)據(jù),確定影響處理函數(shù)運行時間的參數(shù)個數(shù);
設置預設BP神經(jīng)網(wǎng)絡模型的輸出層神經(jīng)元個數(shù)為1、采用一層隱含層并將影響處理函數(shù)運行時間的參數(shù)個數(shù)作為預設BP神經(jīng)網(wǎng)絡模型的輸入層神經(jīng)元個數(shù),以對預設BP神經(jīng)網(wǎng)絡模型進行訓練。
例如,當用戶對交互界面進行縮放、平移等操作時,交互界面會觸發(fā)一系列的請求指令,這些請求指令中的讀取數(shù)據(jù)點數(shù)目和繪圖曲線寬度這兩個參數(shù)影響處理函數(shù)運行時間,則確定影響處理函數(shù)運行時間的參數(shù)個數(shù)為2。
還需要說明的是,該處預設的BP神經(jīng)網(wǎng)絡模型是技術人員根據(jù)實際應用情況進行設置的,根據(jù)實際應用情況的不同,可設置不同的BP神經(jīng)網(wǎng)絡模型。本實施例中設置BP神經(jīng)網(wǎng)絡模型的輸入變量個數(shù)為2個,輸出變量個數(shù)為1個,隱含層神經(jīng)元個數(shù)設定為輸入變量個數(shù)的兩倍。BP神經(jīng)網(wǎng)絡模型的其它參數(shù)設置為:Epcchs(最大訓練步數(shù))=500;Goal(訓練結(jié)束目標值)=0.001;Lr(學習速率)=0.05,使用Levenberg-Marquardt學習方法,隱層傳遞函數(shù)為tansig,輸出層傳遞函數(shù)為purelin函數(shù)。
具體地,如圖4所示,在步驟S13之前,還包括步驟S13`:
S13`、對所述訓練數(shù)據(jù)進行歸一化處理,以得到處理后的訓練數(shù)據(jù);
相應地,上述的步驟S13,還具體包括:
S13、根據(jù)處理后的訓練數(shù)據(jù)對預設BP神經(jīng)網(wǎng)絡模型進行訓練,以得到目標BP神經(jīng)網(wǎng)絡。
需要說明的是,本實施例中對訓練數(shù)據(jù)進行歸一化處理,以將訓練數(shù)據(jù)處理為區(qū)間[0,1]之間的數(shù)據(jù),歸一化處理公式具體為:
其中,x為訓練數(shù)據(jù),xmax、xmin為訓練數(shù)據(jù)的最大值和最小值。
本實施例中通過對訓練數(shù)據(jù)進行歸一化處理,消除了不同因子之間由于數(shù)值大小差異而造成的誤差,以及由于輸入的變量數(shù)值過大造成的學習溢出問題。
具體地,如圖5所示,本實施例中的步驟S3包括如下細分步驟S31至S34:
S31、基于目標BP神經(jīng)網(wǎng)絡,計算執(zhí)行接收到的請求指令的完成時間為t;
具體地,以大量繪圖操作指令對計算執(zhí)行接收到的請求指令的完成時間為t進行舉例說明如下:
在接收到繪圖操作請求指令時,提取請求指令中的讀取數(shù)據(jù)點數(shù)目和繪圖曲線寬度,利用目標BP神經(jīng)網(wǎng)絡,計算該請求指令執(zhí)行完成所需的時間t。
S32、判斷時間t是否大于初始化后的請求指令完成時間閾值εt;
S33、若時間t小于或等于時間閾值εt,則將接收到的請求指令發(fā)送給處理函數(shù)執(zhí)行;
S34、若時間t大于時間閾值εt,則實時更新請求指令。
具體地,實時更新請求指令的具體過程如圖6所示:
在時間t大于時間閾值εt時,判斷定時器是否處于運行狀態(tài);
若定時器處于閑置狀態(tài),設置定時器的定時時間為t,并將接收到的請求指令發(fā)送給處理函數(shù)執(zhí)行后立即啟動定時器;
若定時器處于運行狀態(tài),判斷是否接收到新的請求指令;
如果接收到新的請求指令,檢查初始化后的請求指令緩存是否存儲了新的請求指令;
若沒有存儲,將新的請求指令添加到請求指令緩存中;
若已經(jīng)存儲,將新的請求指令更新為最新接收到的請求指令。
這里需要說明的是,設置定時器的定時時間為t的過程為:根據(jù)初始化后的定時器,利用目標BP神經(jīng)網(wǎng)絡計算得到請求指令執(zhí)行完成所需的時間t來設置定時器的時間,并立即啟動定時器,使定時器進入運行狀態(tài)。當定時器啟動后,不會影響接收請求指令和處理函數(shù)處理請求指令等過程的執(zhí)行。
具體地,如圖7所示,定時器處于運行狀態(tài)時,還包括:
在定時器達到定時時間后,重置定時器并檢測請求指令緩存是否為空;
如果不為空,則處理請求指令緩存中的請求指令。
具體地,將新的請求指令添加到請求指令緩存中,具體包括:
刪除請求指令緩存中已經(jīng)存儲的請求指令,并將新接收到的請求指令存儲在請求指令存儲中;
其中,請求指令緩存的內(nèi)存空間設置為僅暫時存儲一條請求指令。這里的請求指令緩存是指子計算機上開辟的內(nèi)存空間,且空間容量僅能存儲一條請求指令。
因此,本實施例中可以保證即使定時器運行時接收到了多個請求指令,也只會暫存最后一條請求指令,將之前存儲的請求指令刪除。這就有效的保證了請求隊列不會擠壓請求指令,避免了請求隊列擠壓請求指令造成的卡頓現(xiàn)象,保證了整個處理過程的效率,同時也不會耗費過多的計算機資源。
具體地,本實施例中的定時器與處理函數(shù)在不同的線程中運行。這樣設置的好處是:處理函數(shù)運行時,主界面不會被掛起,因此,不會造成主界面的僵死現(xiàn)象。而且,當繪圖的數(shù)據(jù)量很小時,會由處理函數(shù)直接執(zhí)行請求指令,并將執(zhí)行結(jié)果進行顯示,而無需進行請求指令更新的過程,用戶無需長時間的等待即可查看處理結(jié)果,滿足了較小坐標系統(tǒng)范圍內(nèi)快速查看處理結(jié)果的要求。所以,本實施例提供的技術方案不但能進行大數(shù)據(jù)量繪圖,而且能夠快速顯示小數(shù)據(jù)繪圖操作的處理結(jié)果。