降低實現(xiàn)科學(xué)計算算法的風(fēng)險
工程團隊使用一種桌面科學(xué)計算軟件設(shè)計序列預(yù)測算法,將其自動轉(zhuǎn)換為C代碼,然后部署到屬于地面系統(tǒng)一部分的一臺實時PC上。在科學(xué)計算軟件中開發(fā)和調(diào)試該算法后,工程師通過自動生成所需的C代碼來加速實現(xiàn)過程。
此工作流程不再需要用兩種語言維護和測試同一個算法,因此縮短了開發(fā)流程。更重要的是,此工作流程降低了用手工編寫C代碼的一種主要風(fēng)險,即原始科學(xué)計算算法和最終設(shè)計中實現(xiàn)的C代碼之間的差異。使用此工作流程的一大優(yōu)勢是小組在修復(fù)缺陷上所花的時間減少了。質(zhì)量和開發(fā)速度的提升使小組堅定了在未來的項目中重用算法和開發(fā)流程的打算。
使用馬爾可夫鏈(Markov Chains)進行序列預(yù)測
序列預(yù)測的一個常見應(yīng)用是使用以前的數(shù)據(jù)來預(yù)估未來的數(shù)據(jù)點。序列預(yù)測算法在許多行業(yè)和許多情形中都會用到,例如基于測量數(shù)據(jù)的溫度曲線外推,或者在與最大似然序列估算器進行數(shù)字通信時,從噪聲信號中提取有用的信息。序列預(yù)測需要一個模型來預(yù)測未來數(shù)據(jù),如馬爾可夫鏈。使用馬爾可夫鏈建模的系統(tǒng)占用有限的狀態(tài)數(shù),從而使未來的數(shù)據(jù)點僅取決于目前的狀態(tài)而不是以前的狀態(tài)。
圖1.使用馬爾可夫鏈建模的序列預(yù)報器
在圖1中,使用馬爾可夫鏈建模的序列預(yù)報器具有4個狀態(tài)。從一個狀態(tài)轉(zhuǎn)換到另一個狀態(tài)的可能性用小數(shù)表示。例如,從狀態(tài)1轉(zhuǎn)換為狀態(tài)2的概率為0.95,而保持在狀態(tài)1的概率為0.05。在轉(zhuǎn)換時,可能會有一個或多個路徑。圖1中顯示的序列預(yù)報器可作為有限的狀態(tài)機來實現(xiàn),它的最形象的表達就是格狀圖。
圖2.格狀圖示例
圖2顯示的是一個可能的(預(yù)測的)狀態(tài)序列。虛線箭頭表示可能的轉(zhuǎn)換,實線箭頭表示實際預(yù)測的轉(zhuǎn)換。此圖顯示可能的序列為[1 2 3 4 4 3 3 1]。請注意,僅顯示部分可能的轉(zhuǎn)換來進行說明。與著名的Viterbi算法類似,序列預(yù)報器通過基于外部質(zhì)量標準計算路徑度量來拒絕不大可能的序列路徑。如果兩個或多個路徑在一個狀態(tài)中相交,則累積并比較它們的路徑度量值,將最佳路徑選為幸存路徑。
工程團隊在技術(shù)計算軟件中為序列預(yù)測實現(xiàn)馬爾可夫鏈,以提高其地面解碼軟件的可靠性。
評論