專利名稱:基于字符串的數(shù)學模型表示與運算方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計算機技術(shù)應用領(lǐng)域,特別是涉及以模型驅(qū)動的決策支持系統(tǒng)的模型表不方面。
背景技術(shù):
隨著信息化技術(shù)與現(xiàn)代仿真技術(shù)的發(fā)展,決策支持系統(tǒng)(DSS)的實際應用能力有了較大提高,在政府機構(gòu)與企事業(yè)單位均得到了廣泛應用,決策者通過系統(tǒng)提供的數(shù)據(jù)、模型和知識進行決策,提聞決策效率。由于數(shù)學模型在宏觀與微觀經(jīng)濟決策中扮演著十分重要的角色,因此,在DSS中模型的表示與構(gòu)建是最重要的組成部分。傳統(tǒng)的模型表示與構(gòu)建主要利用一些事先建立好的模型的集合,利用計算機描述語言進行描述,盡管在模型的表示中不斷的將邏輯化方法、結(jié)構(gòu)化方法、數(shù)據(jù)化方法和面向?qū)ο蠓椒ㄒ氲侥P图芍?,但是其模型表示的思想仍然是使用程序化的方法。這種方法的優(yōu)點是簡易明了,缺點是當模型變化時需要對相應的程序做出修改,模型的可重用性始終是面向開發(fā)人員,對開發(fā)人員的要求較高,需理解數(shù)學模型公式的具體含義,同時精通各種數(shù)值分析算法。另外,模型方法與對象通常都具有不同的結(jié)構(gòu)與表現(xiàn)形式,在實際工作中決策者或者專家用戶經(jīng)常需要依賴于開發(fā)人員方可進行模型構(gòu)建與調(diào)整,模型的利用率與系統(tǒng)靈活性不高,構(gòu)建的模型通常很難適應外部環(huán)境的變化,只是針對本領(lǐng)域問題的分析與求解,大大限制了模型的靈活性與可重用性。
發(fā)明內(nèi)容
本發(fā)明的目的是針對以模型驅(qū)動的決策支持系統(tǒng)設(shè)計一種模型表示與解析方法,它可以有效地采用字符串方式進行數(shù)學模型表示、利用模型解析技術(shù)進行模型變量與模型關(guān)系式的解析,其突出特點在于以決策者和專家用戶為中心設(shè)計以字符串為核心的模型表達式書寫結(jié)構(gòu),通過正則表達式技術(shù)進行模型解析與運算,實現(xiàn)了模型的表示與解析運算,方便了模型的動態(tài)維護與可重用性。本發(fā)明的上述目的可以通過如下方案實現(xiàn)。一種基于字符串的數(shù)學模型表示與運算方法,其包括以下步驟步驟一確定模型變量命名和模型表達的書寫規(guī)則,其中,用戶通過交互界面,按照確定的模型表達式規(guī)則進行模型的構(gòu)建操作;步驟二 獲取模型關(guān)系式,根據(jù)表達式規(guī)則,對表達式中每一項所表達的具體含義進行解析,確定模型關(guān)系式中的所有變量,以指標編號的形式進行標識與識別;步驟三根據(jù)模型解析結(jié)果,開展支撐仿真運算的全局變量和參數(shù)變量的指標初始化操作;步驟四構(gòu)造模型運算矩陣,將初始化指標填入模型運算矩陣,解析模型關(guān)系式。在至少一個優(yōu)選實施方式中,在所述步驟一中,采用一個模式化的字符串來表示表達式的規(guī)范,利用正則表達式技術(shù)來規(guī)范各種字符串變量。在至少一個優(yōu)選實施方式中,在所述步驟四中,以自定義函數(shù)對指標進行計算,填入運算矩陣,最終完成模型運算。在至少一個優(yōu)選實施方式中,上述步驟二中的所述變量包括指標變量和參數(shù)變量。在至少一個優(yōu)選實施方式中,在上述步驟二中,將解析得到的所有指標編號以字符串數(shù)組的形式進行存儲,放入模型上下文對象中供模型運算使用。在至少一個優(yōu)選實施方式中,上述模型運算矩陣用來存放所有參與模型計算的數(shù)據(jù),由時間維數(shù)據(jù)和模型變量維數(shù)據(jù)構(gòu)成。在至少一個優(yōu)選實施方式中,所述模型變量維數(shù)據(jù)由指標編號和數(shù)據(jù)組成,將生成的全局變量哈希表、賦值參數(shù)哈希表、數(shù)據(jù)庫查詢哈希表裝入運算矩陣,完成模型運算初始化工作。本發(fā)明的優(yōu)點在于,通過制定模式化的字符串對模型變量和書寫規(guī)則進行定義,能夠為用戶建立模型提供高效、通用的表示方法;通過正則表達式技術(shù)能夠準確、有效的對模型進行解析;通過自定義函數(shù)和基礎(chǔ)相結(jié)合,能夠快速、準確的對多指標組合數(shù)學模型進行迭代計算與時序推進。
圖1為根據(jù)本發(fā)明的一個實施方式的模型表示與運算流程圖。
具體實施例方式圖1為根據(jù)本發(fā)明的一個實施方式的模型表示與運算流程圖。下面結(jié)合附圖對本發(fā)明的具體實施方式
作進一步詳細的描述。首先,在步驟SI中,確定模型的描述規(guī)則,決策支持系統(tǒng)的模型描述一般是通過建立數(shù)據(jù)變量之間的數(shù)學關(guān)系式進行表達,為描述和解析模型需要制定模型變量的命名規(guī)則和模型關(guān)系式的書寫規(guī)則。模型變量的命名規(guī)則主要針對模型中包括的參數(shù)、指標變量和常數(shù)三種數(shù)據(jù)類型定義命名格式,對于參數(shù)型數(shù)據(jù),在其指標編碼前冠以字母P ;對于指標變量,在其指標編碼前冠以字母I,對于常數(shù),在關(guān)系式中直接使用數(shù)值表示。模型關(guān)系式的書寫規(guī)則用于確定在關(guān)系式書寫中所遵循的格式規(guī)范,模型關(guān)系式采用字符串形式描述,即變量和參數(shù)之間的數(shù)學關(guān)系通過字符串直接描述,運算符使用通用的運算操作符,模型函數(shù)可以使用基礎(chǔ)函數(shù)和自定義函數(shù)?;A(chǔ)函數(shù)是指可以借助系統(tǒng)類包或者一些開源的軟件包就可以實現(xiàn)函數(shù)的運算與求解的函數(shù),比如加減乘除,平方,開方等。應用自定義函數(shù)主要解決系統(tǒng)類包或開源軟件包沒有實現(xiàn)方法的一些比較復雜的函數(shù),以面向?qū)ο蟮木幊趟枷霕?gòu)建自定義函數(shù)庫,編寫相應的函數(shù)求解方法類,通過標識類名、函數(shù)名及函數(shù)參數(shù)來實現(xiàn)。描述公式的具體格式主要包括模型變量描述為“ {指標編碼} ” ;全局變量描述為“ {g :參數(shù)名} ”;時間變量描述為“[]”;自定義函數(shù)描述為“$函數(shù)名稱(@{模型變量}/函數(shù)參數(shù))”。使用正則表達式規(guī)范各種變量字符串,其中變量標識為"#[\\d\\w] + ";變量修飾符"[sm] : [\\d\\w] +";全局變量為:"\\{g [\\d\\w] + (, [\\d\\w] +) \\}";變量指標編號為"[\\d\\w] + ";變量年份為"_ \\d+";變量字符串為"\\K(([smg]: [\\d\\w]+,)? ([\\d\\w]+) (,(([] Wd+) I (\\{g:[\\d\\w]+W}))) ) I (g[\\d\\w]+))\\}";自定義函數(shù)開始字符為"\\$[\\w] + ";自定義函數(shù)參數(shù)為"[Λ @] + "。其次,在步驟S2中,獲取模型關(guān)系式,利用上述模型描述規(guī)則,對模型關(guān)系式中每一項所表達的具體含義進行解析,得到模型關(guān)系式中的所有變量,包括了指標變量和參數(shù)變量,具體的標識采用指標編號的形式。將解析得到的所有指標編號以字符串數(shù)組的形式進行存儲,放入模型上下文對象中供模型運算使用。在完成所有模型變量的解析后,就可以開始模型運算的初始化工作(參見步驟S和S4)。模型的初始化主要針對模型中的參數(shù)變量及支撐仿真運算的全局變量進行操作。全局變量是在模型仿真過程中產(chǎn)生的非模型變量信息,從用戶交互層獲取用戶所設(shè)定的模型運算的仿真時間,使用哈希表將運算起始時間和終止時間與全局變量進行關(guān)聯(lián)映射,生成全局變量哈希表。參數(shù)變量是仿真過程中的非求解變量,依據(jù)數(shù)據(jù)來源的不同分為賦值參數(shù)和數(shù)據(jù)庫查詢參數(shù)兩類。賦值參數(shù)是指在模型運行過程中由使用者在人機交互界面上或構(gòu)建模型時即時給定的參數(shù)值,數(shù)據(jù)庫查詢是通過查詢數(shù)據(jù)庫得到的參數(shù)值。分別獲取這些參數(shù)值,使用哈希表將時間變量與指標編號和參數(shù)變量進行關(guān)聯(lián)映射,生成賦值參數(shù)哈希表和數(shù)據(jù)庫查詢哈希表。 通過創(chuàng)建模型控制對象構(gòu)造模型運算矩陣,該模型運算矩陣用來存放所有參與模型計算的數(shù)據(jù),由時間維數(shù)據(jù)和模型變量維數(shù)據(jù)構(gòu)成,其中模型變量維數(shù)據(jù)由指標編號和數(shù)據(jù)組成。將生成的全局變量哈希表、賦值參數(shù)哈希表、數(shù)據(jù)庫查詢哈希表裝入運算矩陣,完成模型運算初始化工作。模型運算初始化完成之后,開始步驟S5,即解析變量關(guān)系式,具體地,以全局參數(shù)的起始時間作為模型運算起始點,從模型矩陣的第一個指標變量開始進行模型運算,若該指標在矩陣中沒有初始化參數(shù),則調(diào)用該指標的模型關(guān)系式,解析該關(guān)系式,如果關(guān)系式中不包含其它變量(步驟S6中判斷為否),通過系統(tǒng)類包或開源軟件包提供的方法或者自定義函數(shù)計算方法對該指標進行計算(即步驟S7、步驟S81、S82及步驟S9);如果關(guān)系式中包含有其它變量(步驟S6中判斷為是),則對其它變量依次進行解析與計算(回到步驟S5),直至其它變量全部計算完成(步驟S10),將結(jié)果帶入該關(guān)系式,通過系統(tǒng)類包或開源軟件包提供的方法或自定義函數(shù)提供的方法完成該指標的運算。對矩陣中的所有變量依次迭代,進而完成起始時刻所有指標值的計算,以相同方式計算下一時刻所有指標值,循環(huán)完成整個仿真計算時間過程。也就是,在步驟SlO中判斷為是的情況下,進入步驟S11,判斷仿真時間是否已到;在步驟SlO中判斷為否的情況下,回到步驟S5。在步驟Sll中判斷為是的情況下,結(jié)束進程;在步驟Sll中判斷為否的情況下,回到步驟S5。上面參照
了本發(fā)明的優(yōu)選實施方式,但是,應當理解,上述說明僅是示例性的。本領(lǐng)域的技術(shù)人員可以在不脫離本發(fā)明的精神和范圍的前提下,對本發(fā)明作出各種修改和變型。本發(fā)明的保護范圍由所附的權(quán)利要求書限定。
權(quán)利要求
1.一種基于字符串的數(shù)學模型表示與運算方法,其特征在于,所述方法包括以下步驟 步驟一確定模型變量命名和模型表達的書寫規(guī)則; 步驟二 獲取模型關(guān)系式,根據(jù)表達式規(guī)則,對表達式中每一項所表達的具體含義進行解析,確定模型關(guān)系式中的所有變量,以指標編號的形式進行標識與識別; 步驟三根據(jù)模型解析結(jié)果,開展支撐仿真運算的全局變量和參數(shù)變量的指標初始化操作; 步驟四構(gòu)造模型運算矩陣,將初始化指標填入模型運算矩陣,解析模型關(guān)系式。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于, 在所述步驟一中,采用一個模式化的字符串來表示表達式的規(guī)范,利用正則表達式技術(shù)來規(guī)范各種字符串變量。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于, 在所述步驟四中,以自定義函數(shù)對指標進行計算,填入運算矩陣,最終完成模型運算。
4.根據(jù)權(quán)利要求1至3中的任一項所述的方法,其特征在于, 上述步驟二中的所述變量包括指標變量和參數(shù)變量。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于, 在上述步驟二中,將解析得到的所有指標編號以字符串數(shù)組的形式進行存儲,放入模型上下文對象中供模型運算使用。
6.根據(jù)權(quán)利要求1至3中的任一項所述的方法,其特征在于, 上述模型運算矩陣用來存放所有參與模型計算的數(shù)據(jù),由時間維數(shù)據(jù)和模型變量維數(shù)據(jù)構(gòu)成。
7.根據(jù)權(quán)利要求6所述的方法,其特征在于, 所述模型變量維數(shù)據(jù)由指標編號和數(shù)據(jù)組成,將生成的全局變量哈希表、賦值參數(shù)哈希表、數(shù)據(jù)庫查詢哈希表裝入運算矩陣,完成模型運算初始化工作。
全文摘要
一種基于字符串的數(shù)學模型表示與運算方法,其包括以下步驟步驟一確定模型變量命名和模型表達的書寫規(guī)則;步驟二獲取模型關(guān)系式,根據(jù)表達式規(guī)則,對表達式中每一項所表達的具體含義進行解析,確定模型關(guān)系式中的所有變量,以指標編號的形式進行標識與識別;步驟三根據(jù)模型解析結(jié)果,開展支撐仿真運算的全局變量和參數(shù)變量的指標初始化操作;步驟四構(gòu)造模型運算矩陣,將初始化指標填入模型運算矩陣,解析模型關(guān)系式。通過制定模式化的字符串對模型變量和書寫規(guī)則進行定義,能夠為用戶建立模型提供高效、通用的表示方法;通過正則表達式技術(shù)能夠準確、有效的對模型進行解析。
文檔編號G06F19/00GK103049650SQ20121053650
公開日2013年4月17日 申請日期2012年12月13日 優(yōu)先權(quán)日2012年12月13日
發(fā)明者楊方廷, 麻珺, 趙龍軍, 涂穎, 倪娜, 譚越 申請人:航天科工仿真技術(shù)有限責任公司