王高俊,黃河清,章明洪
(1.上?;ぴ簷z測(cè)有限公司,上海 200062; 2.上?;ぱ芯吭河邢薰荆虾?200062)
社會(huì)生活的很多方面需要化學(xué)分析及其結(jié)果,例如貿(mào)易結(jié)算中商品的有效成分含量是否達(dá)標(biāo),環(huán)境檢測(cè)中關(guān)注的污染物是否超標(biāo),化學(xué)品的安全性能是否達(dá)標(biāo)或具有何種危險(xiǎn)性等?;瘜W(xué)分析結(jié)果質(zhì)量的高低,往往對(duì)生產(chǎn)和生活產(chǎn)生較為重大的影響。在分析化學(xué)中,過去常以誤差或精密度作為測(cè)量結(jié)果質(zhì)量的表征,誤差是指測(cè)量結(jié)果與被測(cè)量的真值之間的差值,但是使用誤差對(duì)測(cè)量結(jié)果的質(zhì)量進(jìn)行評(píng)價(jià)存在普遍的局限性,因?yàn)檎嬷低遣豢芍模痪芏戎赴凑找?guī)定方法進(jìn)行分析得到的測(cè)量結(jié)果的分散性,其要求必須按照統(tǒng)一的“官方”方法進(jìn)行測(cè)量,且其不能反映測(cè)量結(jié)果的置信度,因此使用精密度對(duì)測(cè)量結(jié)果進(jìn)行質(zhì)量評(píng)價(jià),也存在局限性?,F(xiàn)代化學(xué)分析領(lǐng)域,測(cè)量不確定度常常被用來表征測(cè)量結(jié)果的可信度。
測(cè)量不確定度表征了被測(cè)量的真值所處量值的范圍,通常采用95%的概率下,被測(cè)量真值落在被測(cè)量結(jié)果附近的范圍。測(cè)量不確定度評(píng)定的經(jīng)典方法為GUM 法,此方法由ISO 于1993 年提出[1]。GUM 法將測(cè)量不確定度的來源分為A、B 兩類,基于不確定度傳播理論,通過分析測(cè)量不確定度的來源,進(jìn)行計(jì)算合成,最終得到測(cè)量不確定的評(píng)定結(jié)果。但是此方法存在一些難以解決的問題,如復(fù)雜模型中不確定度傳播的計(jì)算難以進(jìn)行、不確定度來源的重復(fù)計(jì)算和遺漏等。為了解決這些問題,有人提出采用蒙特卡洛法進(jìn)行測(cè)量不確定度的評(píng)定。我國的JJF1059.2-2012《用蒙特卡洛法評(píng)定測(cè)量不確定度》對(duì)蒙特卡洛法進(jìn)行測(cè)量不確定度的評(píng)定進(jìn)行了詳細(xì)的規(guī)定和說明[2]。
自適應(yīng)蒙特卡洛法評(píng)定測(cè)量不確定度,其主要優(yōu)勢(shì)在于有效地解決了傳統(tǒng)評(píng)定方法中高階項(xiàng)展開困難、不確定度信息遺漏或重復(fù)計(jì)算等問題。自適應(yīng)蒙特卡洛法評(píng)定測(cè)量不確定度在測(cè)量領(lǐng)域已經(jīng)得到了一定的應(yīng)用[3-15]。采用自適應(yīng)蒙特卡洛法評(píng)定測(cè)量不確定度,需要對(duì)測(cè)量模型進(jìn)行多次“海量”數(shù)值模擬采樣,通常需要采用計(jì)算機(jī)編程的方式進(jìn)行大量計(jì)算,因此該方法的推廣存在一定的難度?,F(xiàn)有用于蒙特卡洛法進(jìn)行測(cè)量不確定度評(píng)定的計(jì)算分析軟件,存在不支持自適應(yīng)計(jì)算[16]、支持獨(dú)立分量較少[17]、不支持過程變量和自定義變量名稱[18-19]等問題。筆者基于Python 語言,設(shè)計(jì)了自適應(yīng)蒙特卡洛法進(jìn)行測(cè)量不確定度評(píng)定的計(jì)算分析程序,為該方法提供更為高效便捷的工具。
設(shè)計(jì)的自適應(yīng)蒙特卡洛法評(píng)定測(cè)量不確定度,主要分為5 個(gè)階段,其測(cè)試步驟如圖1 所示。
(1)輸入階段。確定被測(cè)量與輸入量,輸入數(shù)學(xué)模型,輸入獨(dú)立變量的概率分布情況。首先需建立被測(cè)量的數(shù)學(xué)模型,并將數(shù)學(xué)模型中的輸入量分解至獨(dú)立變量。較為復(fù)雜的數(shù)學(xué)模型,需經(jīng)過多層分解,才能使輸入量成為獨(dú)立變量。
圖1 自適應(yīng)蒙特卡洛法評(píng)定測(cè)量不確定流程圖
例如化學(xué)分析中常見的使用分析儀器進(jìn)行定量的測(cè)量過程,被測(cè)量通常為目標(biāo)物質(zhì)的濃度cy,其數(shù)學(xué)模型通常按照式(1)計(jì)算:
現(xiàn)有的一些采用蒙特卡洛法評(píng)定測(cè)量不確定度的軟件,通常要求對(duì)被測(cè)量的數(shù)學(xué)模型進(jìn)行一次性輸入,即輸入上文中的數(shù)學(xué)模型ci。復(fù)雜的數(shù)學(xué)模型,不僅會(huì)增加輸入錯(cuò)誤的可能性,同時(shí)降低了模型的可讀性。因此,本程序引入了過程參數(shù)的設(shè)計(jì),降低被測(cè)量數(shù)學(xué)模型的復(fù)雜度,以提高模型的可讀性與易用性。
(2)傳播階段。依據(jù)輸入信息,抽取大量樣本,計(jì)算得到被測(cè)量的分布。通過對(duì)獨(dú)立變量進(jìn)行數(shù)值模擬,測(cè)量不確定度由獨(dú)立變量傳遞至過程參數(shù),進(jìn)一步傳遞給被測(cè)量,進(jìn)而完成測(cè)量不確定度的傳播。
(3)自適應(yīng)階段。依據(jù)已得到的被測(cè)量分布情況,與數(shù)值容差做比較,若被測(cè)量未穩(wěn)定,則返回傳播階段,繼續(xù)采樣,直至被測(cè)量分布穩(wěn)定。每輪采樣次數(shù)及數(shù)值容差,依據(jù)JJF 1059.2-2012 《用蒙特卡洛法評(píng)定測(cè)量不確定度》進(jìn)行設(shè)計(jì),每輪采樣次數(shù)默認(rèn)設(shè)置為10 000 次。
(4)輸出階段。將采樣階段得到的所有被測(cè)量進(jìn)行排序,得到其分布函數(shù)的離散表示。
(5)報(bào)告階段。報(bào)告被測(cè)量的平均值及測(cè)量不確定度。
自適應(yīng)蒙特卡洛法評(píng)定測(cè)量不確定度的程序由Python 語言編寫,打包轉(zhuǎn)為exe 程序,方便使用,亦可通過Python 編譯器直接對(duì)源文件進(jìn)行使用。程 序 已 開 源 至github.com/kiddog99/Adaptive_MCM_workspace。程序的界面如圖2 所示。
圖2 自適應(yīng)蒙特卡洛法評(píng)定測(cè)量不確定度程序界面
以CNAS-GL006: 2019 《化學(xué)分析中不確定度的評(píng)估指南》中的例子A2 為例,說明本軟件的應(yīng)用方法。例中,使用鄰苯二甲酸氫鉀標(biāo)準(zhǔn)物質(zhì)對(duì)氫氧化鈉溶液進(jìn)行標(biāo)定。其中,被測(cè)量為氫氧化鈉的濃度cNaOH,其終點(diǎn)數(shù)學(xué)模型為式(6):
模型需要進(jìn)一步分解至獨(dú)立變量,其中過程模型:(1)m(KHP)通過差減稱量獲得,即m(KHP)=m(KHP1)-m(KHP2);(2)m(KHP)的計(jì)算包含分子式里4 種不同元素,即m(KHP)=M(C8)+M(H5)+M(O4)+M(K);(3)V取決于溫度和測(cè)量系統(tǒng)的校準(zhǔn),即V=V(T) (1+αdT)。
本測(cè)量過程涉及的獨(dú)立變量共10 個(gè),列于表1。程序使用界面如圖3 所示,右側(cè)為輸入內(nèi)容展示界面,由上至下分別為終點(diǎn)數(shù)學(xué)模型、過程參數(shù)模型、獨(dú)立變量。其中,過程參數(shù)模型顯示框中,內(nèi)容包括過程參數(shù)名稱[如m(KHP)],計(jì)算過程[如m(KHP1)-m(KHP2)],以及包含的獨(dú)立變量[如m(KHP1)、m(KHP2)]。獨(dú)立變量顯示框中,內(nèi)容包括獨(dú)立變量名稱、分布方式及其關(guān)聯(lián)的過程參數(shù)。將終點(diǎn)數(shù)學(xué)模型、過程參數(shù)模型、獨(dú)立變量分別輸入自適應(yīng)蒙特卡洛法評(píng)定測(cè)量不確定度的程序,即可點(diǎn)擊“自動(dòng)采樣”按鈕,得到模擬計(jì)算結(jié)果。
表1 氫氧化鈉的濃度數(shù)學(xué)模型中的獨(dú)立變量
如圖3 所示,以NaOH 溶液濃度的計(jì)算為例,點(diǎn)擊“開始采樣”按鈕,程序開始數(shù)值模擬采樣,并經(jīng)過自適應(yīng)算法,達(dá)到數(shù)值穩(wěn)定后,輸出計(jì)算結(jié)果。采樣結(jié)果中,被測(cè)量c(NaOH)的平均值為0.102 1,標(biāo) 準(zhǔn) 偏 差 為0.000 1,95% 置 信 區(qū) 間 為[0.102 0,0.102 3]。此輸出結(jié)果與CNAS-GL 006: 2019 《化學(xué)分析中不確定度的評(píng)估指南》中給出的參考結(jié)果一致,可以認(rèn)為程序的自適應(yīng)蒙特卡洛法模擬計(jì)算在本例中是準(zhǔn)確的。
圖3 程序使用界面及計(jì)算結(jié)果
基于Python 語言開發(fā)的自適應(yīng)蒙特卡洛法評(píng)定測(cè)量不確定度程序,界面簡潔,操作簡單,計(jì)算準(zhǔn)確,適用于任意多個(gè)獨(dú)立變量、任意多個(gè)過程參數(shù)及單一被測(cè)量的數(shù)學(xué)模型。其中,過程參數(shù)的設(shè)計(jì),與蒙特卡洛法對(duì)被測(cè)量數(shù)學(xué)模型的分解思路相適應(yīng),降低了被測(cè)量數(shù)學(xué)模型的復(fù)雜度,提高了模型的可讀性與程序的易用性。自適應(yīng)蒙特卡洛法評(píng)定測(cè)量不確定度計(jì)算程序的開發(fā),可以有效地降低使用自適應(yīng)蒙特卡洛法進(jìn)行測(cè)量不確定評(píng)定的難度,相關(guān)的從業(yè)人員,不需要具備專業(yè)的編程知識(shí),即可使用該軟件快速簡易地進(jìn)行測(cè)量不確定度的評(píng)定。這有利于從業(yè)人員提高對(duì)化學(xué)分析結(jié)果的認(rèn)識(shí),提高我國化學(xué)分析行業(yè)的整體水平。
同時(shí),應(yīng)該意識(shí)到,自適應(yīng)蒙特卡洛法,利用足夠大量的數(shù)值模擬采樣,達(dá)到獲取被測(cè)量真實(shí)分布情況。因此,自適應(yīng)蒙特卡洛法每次進(jìn)行模擬采樣,均存在隨機(jī)性。具體而言,每次采樣,每個(gè)獨(dú)立變量的數(shù)值均由random 模塊依據(jù)變量的分布概率密度生成。這導(dǎo)致自適應(yīng)蒙特卡洛法的評(píng)定結(jié)果總會(huì)有輕微的偏差,即評(píng)定結(jié)果無法再現(xiàn),這也是自適應(yīng)蒙特卡洛法評(píng)定測(cè)量不確定度程序的優(yōu)化方向。