梁雪梅,黃吳夕,馮子儼,陳恒杰
(重慶科技學(xué)院 數(shù)理與大數(shù)據(jù)學(xué)院,重慶 401331)
團(tuán)簇是物質(zhì)從微觀(guān)到宏觀(guān)的過(guò)渡狀態(tài),是物質(zhì)存在的重要形式之一。分子團(tuán)簇的結(jié)構(gòu)對(duì)其性質(zhì)有著重要的影響,因此,對(duì)分子團(tuán)簇研究的首要任務(wù)為確定其結(jié)構(gòu)。然而,現(xiàn)有的實(shí)驗(yàn)很難分離得到不同尺度的團(tuán)簇,對(duì)團(tuán)簇結(jié)構(gòu)的測(cè)定則更加困難,特別是當(dāng)團(tuán)簇尺度較大時(shí),這項(xiàng)任務(wù)變的幾乎不可能。因此,在團(tuán)簇結(jié)構(gòu)的研究方面往往需要結(jié)合理論計(jì)算幫助獲得團(tuán)簇的結(jié)構(gòu)[1,2]。目前針對(duì)團(tuán)簇結(jié)構(gòu)主要有兩個(gè)研究方向:一、利用基于量子力學(xué)的各類(lèi)從頭計(jì)算軟件得到團(tuán)簇在某一結(jié)構(gòu)下的單點(diǎn)能,利用有偏或無(wú)偏優(yōu)化算法來(lái)更新結(jié)構(gòu),通過(guò)多次迭代得到最低能結(jié)構(gòu),限于當(dāng)前計(jì)算機(jī)資源的限制,這種方式也僅在中小尺度的團(tuán)簇下適用,對(duì)中大尺度團(tuán)簇,由于耗費(fèi)的計(jì)算資源巨量而很難開(kāi)展。二、利用實(shí)驗(yàn)或基于準(zhǔn)確的量子理論計(jì)算下的團(tuán)簇特性,構(gòu)造出一個(gè)合理的勢(shì)能函數(shù),然后用該勢(shì)能函數(shù)結(jié)合各類(lèi)優(yōu)化算法對(duì)包括中大尺度在內(nèi)的分子團(tuán)簇結(jié)構(gòu)進(jìn)行計(jì)算或預(yù)測(cè)[3-5],其數(shù)學(xué)本質(zhì)為一能量最小化的最優(yōu)化問(wèn)題。兩種方法都需要研究者相當(dāng)熟悉相應(yīng)的優(yōu)化算法,強(qiáng)大的編程能力,因此學(xué)習(xí)曲線(xiàn)相對(duì)較長(zhǎng)[6-8]。
1stOpt被認(rèn)為是當(dāng)前全世界最好的全局優(yōu)化程序[9],其強(qiáng)大的通用/穩(wěn)健全局優(yōu)化算法(UGO),接近數(shù)學(xué)描述且簡(jiǎn)單的編程語(yǔ)言和靈活多變的編程方式。我們想能不能通過(guò)二次開(kāi)發(fā),利用1stOpt的優(yōu)化功能,在團(tuán)簇優(yōu)化時(shí)基于該軟件進(jìn)行結(jié)構(gòu)更新,這樣研究者可節(jié)約大量研究算法本身及其算法編寫(xiě)的時(shí)間和精力,使其能更多地關(guān)注到團(tuán)簇問(wèn)題本身。同時(shí)也可以通過(guò)該問(wèn)題地解決來(lái)測(cè)試1stOpt的優(yōu)化能力,給我們解決其他問(wèn)題奠定基礎(chǔ)。
本文共測(cè)試了三種勢(shì)函數(shù),rij表示各原子間距,本質(zhì)是對(duì)角線(xiàn)為零的對(duì)稱(chēng)方陣,為自變量。ULJ,UG和USC分別表示函數(shù)的勢(shì)能,為因變量,N為構(gòu)成團(tuán)簇的原子總數(shù),三種函數(shù)的具體形式如下[10,11]:
Lennard-Jones勢(shì):
(1)
Gupta勢(shì):
(2)
(3)
Sutton-Chen勢(shì):
(4)
(5)
圖1為程序設(shè)計(jì)思想及流程圖,其中結(jié)構(gòu)更新由1stOpt黑箱實(shí)現(xiàn),是團(tuán)簇優(yōu)化中尋找最低能結(jié)構(gòu)的核心問(wèn)題,也是1stOpt的優(yōu)勢(shì)所在。收斂判斷部分由1stOpt的圖形界面設(shè)定,其余由1stOpt結(jié)合內(nèi)嵌語(yǔ)言或動(dòng)態(tài)庫(kù)編程實(shí)現(xiàn)。原則上自變量可選擇笛卡爾坐標(biāo)(xyz),分子間距(rij)或分子內(nèi)坐標(biāo)(鍵長(zhǎng),鍵角,二面角等),為了計(jì)算的便利,本文選擇xyz型坐標(biāo),可通過(guò)簡(jiǎn)單處理或借助于量化工具即可得到分子間距或分子內(nèi)坐標(biāo)。由于分子是可平移,旋轉(zhuǎn)的,所以?xún)?yōu)化的xyz坐標(biāo)不唯一,但與之對(duì)應(yīng)的分子間距、內(nèi)坐標(biāo)和最低能是唯一的。
圖1 程序流程圖
結(jié)合1stOpt編程,分別用內(nèi)嵌程序語(yǔ)言(如Pascal,F(xiàn)ortran等)以及調(diào)用外部編譯器編寫(xiě)和編譯的動(dòng)態(tài)庫(kù)(dll),實(shí)現(xiàn)了上述三種勢(shì)函數(shù)的單原子分子團(tuán)簇結(jié)構(gòu)優(yōu)化程序,探索了雙原子合金團(tuán)簇結(jié)構(gòu)優(yōu)化程序,計(jì)算中采用全局優(yōu)化算法或穩(wěn)健全局優(yōu)化算法,自動(dòng)選擇,根據(jù)團(tuán)簇尺度大小,依次選擇并行數(shù)100~1 000,比率0.3~0.5,控制數(shù)30~50,收斂判斷迭代50,變異率0.3~0.50。為了檢驗(yàn)編寫(xiě)程序的正確性,本文所有工作同時(shí)用ABCluster軟件進(jìn)行了計(jì)算。
2.1.1 Gupta勢(shì)
計(jì)算時(shí),取參數(shù)A=0.006 946 731,ξ=0.437 81,d=3.5,p=24.943 17,q=0.292 646。表1為基于Gupta勢(shì)函數(shù),結(jié)合內(nèi)嵌Pascal語(yǔ)言編寫(xiě)的1stOpt程序,用戶(hù)只需改變其中的原子個(gè)數(shù)num,執(zhí)行程序后便可獲得相應(yīng)尺度團(tuán)簇中每個(gè)原子的xyz坐標(biāo)和最低能量。基于該程序,我們測(cè)試了num=2~20時(shí)的團(tuán)簇,結(jié)果見(jiàn)表2,可以看出,本文完美地再現(xiàn)了Darby利用遺傳算法[12]和王全武等利用人工蜂群算法[13]得到的結(jié)果,說(shuō)明利用1stOpt編程實(shí)現(xiàn)團(tuán)簇結(jié)構(gòu)優(yōu)化是可行的,同時(shí)也驗(yàn)證了當(dāng)前程序是可靠的。編寫(xiě)該程序時(shí),研究者并不需要任何優(yōu)化算法理論知識(shí),也不需要將優(yōu)化算法轉(zhuǎn)化為程序的經(jīng)驗(yàn),只需簡(jiǎn)單了解團(tuán)簇問(wèn)題涉及的勢(shì)函數(shù),簡(jiǎn)單學(xué)習(xí)1stOpt編程即可完成以往需要研究者花費(fèi)大量時(shí)間,前期研究算法,后期大量編程才能完成的工作,將大大降低該研究問(wèn)題的知識(shí)儲(chǔ)備和門(mén)檻。
表1 Gupta勢(shì)函數(shù)計(jì)算程序
表2 Gupta勢(shì)函數(shù)結(jié)果
2.1.2 Sutton-Chen勢(shì)
為進(jìn)一步說(shuō)明程序的可靠性,我們也針對(duì)文獻(xiàn)中經(jīng)常使用的Sutton-Chen勢(shì)函數(shù)進(jìn)行編寫(xiě),計(jì)算時(shí)取參數(shù)ε=1,c=39.432,a=1.0,n=9,m=6,程序見(jiàn)表3,計(jì)算結(jié)果見(jiàn)表4。
表3 Sutton-Chen勢(shì)函數(shù)計(jì)算程序
表4 Sutton-Chen勢(shì)函數(shù)結(jié)果
為了比較各團(tuán)簇優(yōu)化算法的有效性,劍橋大學(xué)的Doye等搜集了多種勢(shì)函數(shù)下已出版的最低能結(jié)構(gòu)和最低能量值,本文后續(xù)均標(biāo)記為Best。Doye沒(méi)有給出n=2時(shí)的能量,我們優(yōu)化的結(jié)果為-269.566 745 129 083,另外,同Gupta函數(shù)結(jié)果一樣,在不考慮精度的前提下,當(dāng)前獲得的最優(yōu)結(jié)果與Doye給出的最低能完全一致,再次檢驗(yàn)了1stOpt優(yōu)化原子團(tuán)簇的可行性與可靠性。
2.1.3 LJ勢(shì)
在一些情況下,若研究者手上已有計(jì)算勢(shì)函數(shù)的子程序,或熟悉的其他計(jì)算機(jī)語(yǔ)言非內(nèi)嵌在1stOpt中,且研究者也并不想過(guò)多的學(xué)習(xí)其他內(nèi)嵌語(yǔ)言。這時(shí),應(yīng)用熟悉的計(jì)算機(jī)程序語(yǔ)言編寫(xiě)子程序并編譯成動(dòng)態(tài)庫(kù),再利用1stOpt調(diào)用該動(dòng)態(tài)庫(kù)則顯得非常合適,這樣能大大縮短程序開(kāi)發(fā)周期,節(jié)約研究時(shí)間。表5展示了用Compaq Visual Fortran編寫(xiě)的基于LJ勢(shì)函數(shù)的動(dòng)態(tài)庫(kù)源文件,接著,在Windows操作系統(tǒng)下,打開(kāi)cmd窗口,并cd到存放該源文件的當(dāng)前目錄,用命令DF.exe/all“l(fā)j.f90”進(jìn)行編譯,之后將生成lj.dll文件及其他幾個(gè)支撐文件,再用表6所示的1stOpt程序調(diào)用lj.dll,由于所有文件都在當(dāng)前路徑的同一個(gè)文件夾下,1stOpt程序調(diào)用時(shí)沒(méi)有采用絕對(duì)路徑。
為便于比較,LJ中的參數(shù)采用ε=1,σ=1,計(jì)算結(jié)果見(jiàn)表7??梢?jiàn),利用1stOpt調(diào)用動(dòng)態(tài)庫(kù)結(jié)果和ABCluster計(jì)算的結(jié)果完全匹配,也與Doye給出的最優(yōu)結(jié)果一致,不僅實(shí)踐了動(dòng)態(tài)庫(kù)源程序的編寫(xiě),編譯和調(diào)用,也進(jìn)一步檢驗(yàn)了1stOpt優(yōu)化團(tuán)簇結(jié)構(gòu)的可行性。
表5 LJ勢(shì)函數(shù)下的動(dòng)態(tài)庫(kù)源程序
表6 1stOpt調(diào)用動(dòng)態(tài)庫(kù)
表7 Lennard-Jones勢(shì)函數(shù)結(jié)果
續(xù)表
原子團(tuán)簇是最簡(jiǎn)單的團(tuán)簇形式,而很多情況下,團(tuán)簇可能由多種原子組合而成,或者大量的幾種原子加少量某種原子摻雜而成,如AgXCuy,AgXCuyAuz等。接著我們以二元合金AgXCuy團(tuán)簇為例,探索了1stOpt在解決復(fù)雜團(tuán)簇結(jié)構(gòu)方面的可行性,程序見(jiàn)表8,計(jì)算結(jié)果見(jiàn)表9。毫無(wú)意外,1stOpt完全重復(fù)了ABCluster結(jié)果,兩者完美的自洽,基于我們對(duì)ABCluster計(jì)算的經(jīng)驗(yàn)和單原子分子團(tuán)簇計(jì)算結(jié)果的比較,有理由相信兩種計(jì)算結(jié)果得到的都是最低能。
表8 二元合金團(tuán)簇計(jì)算程序
續(xù)表
表9 二元合金團(tuán)簇AgXCuy能量?jī)?yōu)化結(jié)果
基于三種常見(jiàn)的勢(shì)能函數(shù),結(jié)合1stOpt及其內(nèi)嵌的程序語(yǔ)言和外部調(diào)用動(dòng)態(tài)庫(kù),多種程序,多種手段,初步探索了1stOpt在優(yōu)化團(tuán)簇結(jié)構(gòu)方面的可行性,與Doye搜集的最優(yōu)結(jié)果和專(zhuān)業(yè)團(tuán)簇優(yōu)化程序ABCluster計(jì)算結(jié)果比較,我們發(fā)現(xiàn)基于1stOpt的程序完全能夠重現(xiàn)上述結(jié)果,因此利用1stOpt優(yōu)化團(tuán)簇結(jié)構(gòu)是可行的。同時(shí)在執(zhí)行過(guò)程中也發(fā)現(xiàn)了一些不足。在原子數(shù)目較少時(shí),基于通用/穩(wěn)健全局優(yōu)化算法的1stOpt效率非常高,很多情況下一次或者幾次迭代就能找到最低能,然而,當(dāng)n增大即變量增多時(shí),盡管最終也能找到最低能,但效率會(huì)大打折扣,有時(shí)還會(huì)陷入局部最優(yōu),我們猜測(cè)可能與以下幾方面有關(guān):一、我們的探索目前僅在停留在利用1stOpt實(shí)現(xiàn)團(tuán)簇優(yōu)化功能的可行性,因此編寫(xiě)的程序未進(jìn)行任何優(yōu)化和通用化;二、1stOpt目前僅支持Windows操作系統(tǒng),而ABCluster計(jì)算是在Linux服務(wù)器上完成,兩種操作系統(tǒng)在效率上天然的優(yōu)劣,是造成效率差異的最最重要原因之一;三、ABCluster專(zhuān)門(mén)為團(tuán)簇優(yōu)化設(shè)計(jì),為有偏算法,具有加速功能,而1stOpt為通用的優(yōu)化程序,具有無(wú)偏性,因此在處理該類(lèi)特定問(wèn)題時(shí)效率沒(méi)能大幅提升?;谏鲜鰡?wèn)題,提出幾點(diǎn)展望:首先可通過(guò)文本等操作、對(duì)自編的程序進(jìn)行優(yōu)化,解決同一問(wèn)題盡量減少變量的同時(shí),使得程序通用化(如多元合金不需要再寫(xiě)更復(fù)雜的程序,僅給出原子種類(lèi)和相互間參數(shù)即可);其次,通過(guò)動(dòng)態(tài)庫(kù)/內(nèi)嵌語(yǔ)言,參數(shù)設(shè)置等實(shí)現(xiàn)有偏操作,縮小搜索區(qū)間,減少優(yōu)化時(shí)間,提高優(yōu)化效率;最后,也是研究者不可控的一點(diǎn),期望七維高科開(kāi)發(fā)出基于Linux操作系統(tǒng)的版本,開(kāi)發(fā)出更加靈活的動(dòng)態(tài)庫(kù)接口。