專利名稱:大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及優(yōu)化控制設(shè)計(jì)技術(shù),特別是大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成系統(tǒng)。
背景技術(shù):
近年來(lái)隨著大規(guī)模非線性規(guī)劃理論、算法及軟件系統(tǒng)的不斷發(fā)展,基于大規(guī)模非 線性規(guī)劃(十萬(wàn)個(gè)決策變量以上)的模型預(yù)測(cè)控制日益受到重視。這類方法的一個(gè)顯著優(yōu) 點(diǎn)是可以直接使用在運(yùn)籌學(xué)領(lǐng)域廣泛使用和研究的各類規(guī)劃算法,通過(guò)在高效能計(jì)算機(jī)上 實(shí)施這些搜索_推理_松弛等數(shù)值優(yōu)化算法,完成大規(guī)模控制系統(tǒng)狀態(tài)的在線估計(jì)及最優(yōu) 控制序列的計(jì)算。在解決具體領(lǐng)域的動(dòng)態(tài)優(yōu)化控制問(wèn)題時(shí),解決方案都可以表達(dá)成一類動(dòng) 態(tài)優(yōu)化控制問(wèn)題的求解。變分法是求解這類問(wèn)題的經(jīng)典方法,屬于先最優(yōu)化再離散化的思 路。近年來(lái)廣泛研究把非線性規(guī)劃解題器直接用于最優(yōu)控制問(wèn)題的求解,即先離散化再最 優(yōu)化,實(shí)施方法可以是全部離散狀態(tài)變量與控制變量,并使用多點(diǎn)打靶法來(lái)完成最優(yōu)控制 系列的計(jì)算。在采用這種方法完成大規(guī)模非線性動(dòng)態(tài)優(yōu)化控制設(shè)計(jì)時(shí),研究人員將會(huì)碰到 以下三個(gè)方面的棘手問(wèn)題一是非線性對(duì)象模型多種多樣,如何采用規(guī)范、標(biāo)準(zhǔn)的格式來(lái)描 述非線性動(dòng)態(tài)優(yōu)化模型,以便于模型的輸入、控制設(shè)計(jì)的便利及研究人員或工程人員的交 流等;二是大規(guī)模復(fù)雜過(guò)程具有大量的狀態(tài)變量和控制變量,在對(duì)此類問(wèn)題進(jìn)行離散化處 理時(shí),狀態(tài)變量和控制變量的規(guī)模、約束條件和目標(biāo)函數(shù)的規(guī)模將隨著離散粒度的增大急 劇增加,手工完成離散化工作將變得困難重重,如何采用規(guī)范、標(biāo)準(zhǔn)的方法自動(dòng)完成問(wèn)題的 離散化,以便降低工作難度、減少設(shè)計(jì)時(shí)間及錯(cuò)誤幾率;三是在使用非線性規(guī)劃解題器求解 離散化完成后得到的非線性規(guī)劃問(wèn)題時(shí),研究人員需要完成使用非線性規(guī)劃解題器的算法 程序的編程設(shè)計(jì),一般需要給出非線性規(guī)劃實(shí)施計(jì)算所需的一些矩陣代碼,例如雅克比矩 陣、梯度矩陣、海森矩陣等。問(wèn)題規(guī)模小時(shí)研究人員勉強(qiáng)可以完成算法程序的設(shè)計(jì),當(dāng)變量 較多、問(wèn)題規(guī)模稍大時(shí),手動(dòng)或半自動(dòng)幾乎不可能完成算法程序的設(shè)計(jì)。因此,如何把一個(gè) 個(gè)具體的大規(guī)模動(dòng)態(tài)優(yōu)化控制問(wèn)題表達(dá)成標(biāo)準(zhǔn)的大規(guī)模數(shù)學(xué)規(guī)劃問(wèn)題,進(jìn)一步編輯、調(diào)整、 仿真和定制化,已經(jīng)成為制約這類先進(jìn)控制技術(shù)實(shí)施的瓶頸問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種微分代數(shù)約束非線性動(dòng)態(tài)優(yōu)化問(wèn)題的模型描述方法, 以及基于該模型的控制算法代碼的自動(dòng)生成功能。本發(fā)明為解決這個(gè)問(wèn)題提供了系統(tǒng)的自
動(dòng)化工具。本發(fā)明的目的是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成系統(tǒng),由模型編輯器、模型離散化處理器、算 法代碼自動(dòng)生成器組成,定義了一種大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成的方法,包括如 下步驟(1)、使用模型編輯器輸入非線性動(dòng)態(tài)優(yōu)化問(wèn)題,得到該問(wèn)題的NDOML模型;
(2)、離散化處理輸入的NDOML模型,得到新的離散化后的NDOML模型;(3)、根據(jù)離散化后的NDOML模型生成原優(yōu)化問(wèn)題控制算法C語(yǔ)言程序代碼。所述的大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成系統(tǒng),定義了一種基于XML語(yǔ)言的描 述非線性動(dòng)態(tài)優(yōu)化模型的語(yǔ)言ND0ML。所述的大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成系統(tǒng),非線性動(dòng)態(tài)優(yōu)化 問(wèn)題的NDOML 模型可使用圖形用戶界面的模型編輯器產(chǎn)生。所述的大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成系統(tǒng),NDOML模型的離散化處理可由 模型離散化處理器自動(dòng)完成。所述的大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成系統(tǒng),NDOML模型的控制算法C語(yǔ)言 程序代碼可由算法代碼自動(dòng)生成器自動(dòng)生成。
圖1為本系統(tǒng)的結(jié)構(gòu)框圖;圖2為NDOML模型結(jié)構(gòu)定義簡(jiǎn)圖;圖3為NDOML模型離散化處理流程圖;圖4為NDOML模型算法代碼生成處理流程圖。
具體實(shí)施例方式下面結(jié)合附圖,對(duì)本發(fā)明做進(jìn)一步的說(shuō)明。(1)、本發(fā)明定義了一種基于XML語(yǔ)言的描述非線性動(dòng)態(tài)優(yōu)化模型的語(yǔ)言 NDOML(Nonlinear Dynamic Optimize Markup Language,非線性云力態(tài)優(yōu)化標(biāo)記語(yǔ)言), 可用來(lái)描述DAE約束非線性動(dòng)態(tài)優(yōu)化問(wèn)題(DAE-Constrained Nonlinear Dynamic Optimization,簡(jiǎn)稱 DAE-ND0)和 AE 約束非線性動(dòng)態(tài)優(yōu)化問(wèn)題(AE-Constrained Nonlinear DynamicOptimization, AE-ND0);(2)、本發(fā)明實(shí)現(xiàn)NDOML模型的編輯器,用于非線性動(dòng)態(tài)優(yōu)化問(wèn)題的輸入輸出;(3)、本發(fā)明使用聯(lián)立法和多點(diǎn)打靶法對(duì)NDOML模型進(jìn)行自動(dòng)離散化處理,產(chǎn)生新 的離散化完成后的NDOML模型;(4)、本發(fā)明實(shí)現(xiàn)NDOML模型控制算法代碼自動(dòng)生成器,生成算法要求的矩陣程序 代碼、函數(shù)程序代碼、調(diào)用接口程序代碼等。生成的代碼采用C語(yǔ)言。具體使用本系統(tǒng)設(shè)計(jì)DAE約束非線性動(dòng)態(tài)優(yōu)化問(wèn)題或AE約束非線性動(dòng)態(tài)優(yōu)化問(wèn) 題時(shí),按如下步驟進(jìn)行(1)、按照NDOML語(yǔ)言的規(guī)則將優(yōu)化問(wèn)題描述成一個(gè)NDOML模型??墒褂脙煞N方法 完成該步驟,一種方法為人工轉(zhuǎn)換后用文本編輯器輸入;另一種方法為使用NDOML模型編 輯器輸入優(yōu)化問(wèn)題即可得到NDOML模型;(2)、調(diào)用本系統(tǒng)的自動(dòng)離散化處理器將第1步中得到的NDOML模型進(jìn)行離散化處 理,得到離散化后的NDOML模型;(3)、使用第2步中得到的離散化后的NDOML模型調(diào)用本系統(tǒng)的算法代碼自動(dòng)生成 器,生成優(yōu)化問(wèn)題控制算法代碼。按照上述步驟生成優(yōu)化問(wèn)題控制算法代碼后,用戶可使用該代碼對(duì)優(yōu)化問(wèn)題進(jìn)行仿真和評(píng)估,也可集成到用戶的控制系統(tǒng)應(yīng)用中去。本系統(tǒng)通過(guò)其使用的技術(shù)方案,其定義的NDOML語(yǔ)言方便了優(yōu)化問(wèn)題模型的輸 入、保存、輸出,便于本系統(tǒng)擴(kuò)展功能,便于與其他控制系統(tǒng)設(shè)計(jì)工具協(xié)調(diào)完成設(shè)計(jì)任務(wù);非 線性優(yōu)化問(wèn)題的自動(dòng)離散化處理代替人工完成非線性優(yōu)化問(wèn)題離散化,解決了設(shè)計(jì)人員在 離散化大規(guī)模非線性優(yōu)化問(wèn)題時(shí)面臨的巨大困難;算法代碼自動(dòng)生成器代替人工完成算法 程序的編程設(shè)計(jì),不僅極大的提高了設(shè)計(jì)人員的工作效率,而且可以完成人工難于完成的 變量多、規(guī)模大的非線性動(dòng)態(tài)優(yōu)化問(wèn)題的算法程序編程設(shè)計(jì)。本系統(tǒng)的結(jié)構(gòu)如圖1所示,其中虛框內(nèi)為系統(tǒng)的內(nèi)部結(jié)構(gòu)及作用關(guān)系,虛框外部 為系統(tǒng)的輸入模型數(shù)據(jù)、輸出結(jié)果數(shù)據(jù)。進(jìn)入系統(tǒng)內(nèi)部的非線性動(dòng)態(tài)優(yōu)化模型使用特定的 數(shù)據(jù)結(jié)構(gòu)表示,系統(tǒng)主要包括模型編輯器、模型離散化處理器、算法代碼自動(dòng)生成器三項(xiàng)功 能。模型編輯器用于將非線性優(yōu)化模型輸入系統(tǒng),以及將軟件系統(tǒng)內(nèi)部模型輸出保 存。設(shè)計(jì)人員可使用模型編輯器錄入并編輯優(yōu)化控制問(wèn)題模型(數(shù)學(xué)方程表示),轉(zhuǎn)換為系 統(tǒng)內(nèi)部模型表示;模型編輯器還可自動(dòng)讀入NDOML描述的優(yōu)化控制問(wèn)題模型,將其轉(zhuǎn)換為 內(nèi)部模型表示,同時(shí)模型編輯器還可將內(nèi)部模型表示輸出為NDOML描述的優(yōu)化控制問(wèn)題模 型。模型離散化處理器將內(nèi)部表示的非線性動(dòng)態(tài)優(yōu)化模型做自動(dòng)離散化處理,生成內(nèi) 部表示的離散化的非線性動(dòng)態(tài)優(yōu)化模型。算法代碼自動(dòng)生成器根據(jù)離散化的非線性動(dòng)態(tài)優(yōu)化模型,生成一些矩陣程序代 碼、函數(shù)程序代碼等算法程序代碼。本系統(tǒng)定義的基于XML的NDOML語(yǔ)言,用于描述DAE約束非線性動(dòng) 態(tài)優(yōu)化問(wèn)題和AE約束非線性動(dòng)態(tài)優(yōu)化問(wèn)題。圖2為NDOML模型結(jié)構(gòu)定義簡(jiǎn) 圖, 其 中 Model、IndepentVariable λ ListOfParameters Λ ListOfExpressions、 Parameter、 ListOfInitialAssignments、 ListOfAlgDecisionVariables、 ListOfDiffDecisionVariables、 Expression、 PInitialAssignment、 AlgDecisionVariable、DiffDecisionVariable、ListOfCtIDec is ionVariables、 CtlDecisionVariable、ListOfAlgConstraints、AlgConstraint、ObjFunction 為 XML 兀素, 每種元素均定義了一些屬性。圖中的NBase不是XML元素定義,其定義的屬性為公共屬性, 圖中與NBase有繼承關(guān)系的XML元素均自動(dòng)定義了這些公共屬性。Model是一個(gè)容器類型的元素,該容器元素中可容納Ind印endentVariable、 Parameter、Expression、PI ηitia1Assignment、DiffDecisionVariab 1 e、 AlgDecisionVariabIeλ CtlDecisionVariableΛAlgConstraint、ObjFunction 這 些 類型的元素。其中,Model類元素中可直接容納零個(gè)或一個(gè)Ind印endentVariable 類元素、至少一個(gè)且僅一個(gè)ObjFunction元素。Model容器中的Parameter、 Expression、PInitialAssignment、DiffDecisionVariable、AlgDecisionVariable、 CtlDecisionVariableλ AlgConstraint 類兀素則分別置于 ListOfParameters、 ListOfExpressions λ ListOfInitialAssignments、ListOfDiffDecisionVariables、 ListOfAlgDecisionVariables λ ListOfCtlDecisionVariables、ListOfAlgConstraints 這 些容器類元素中。NDOML描述一個(gè)完整非線性動(dòng)態(tài)優(yōu)化模型的一般形式如下
< ? xml version = “ 1.0〃 encoding = " utf-8 “ ? >〈model id = 〃 XXModel〃 ><independentVariable. . . />optional
<list0fParameters>optionalone or more<parameter>. . . </parameter></list0fParameters><list0fExpressions>optionalone or more<expression>. . . </expression></list0fExpressions><list0fInitialAssignments>optionalone or more PInitialAssignment</listOfInitialAssignments><liStOfDiffDecisionVariables>optionalone or more<diffDecisionVariable>. . . </diffDecisionVariable></list0fDiffDecisionVari ab1e s ><liStOfAlgDecisionVariables>optionalone or more<algDecisionVariable>. . . </algDecisionVariable></listOfAlgDecisionVariables><listOfCtlDecisionVariables>optionalone or more<ctlDecisionVariable>. . . </ctlDecisionVariable></listOfCtlDecisionVariables><listOfAlgConstraints>optionalone or more<algConstraint>. . . </algConstraint></listOfAlgConstraints>one elements of subclasses of ObjFunction</model>模型離散化處理器使用聯(lián)立法和多點(diǎn)打靶法對(duì)NDOML模型進(jìn)行自動(dòng)離散化處理, 其離散化處理過(guò)程流程圖如圖3所示。在檢查NDOML模型的有效性后,依次離散化NDOML 模型的變量、約束方程、目標(biāo)函數(shù),生成新的變量、約束方程、目標(biāo)函數(shù),并由這些新產(chǎn)生的 變量、約束方程、目標(biāo)函數(shù)構(gòu)成離散化后的NDOML模型。其中NDOML模型的輸入、解析、輸出 功能由模型離散化處理器調(diào)用模型編輯器完成。算法代碼自動(dòng)生成器根據(jù)NDOML模型,生成算法要求的矩陣程序代碼、函數(shù)程序 代碼、調(diào)用接口程序代碼等,生成的代碼為C語(yǔ)言代碼。代碼生成處理過(guò)程流程圖如圖4所 示,在檢查NDOML模型的有效性后,根據(jù)模型及算法要求依次生成變量聲明代碼、目標(biāo)函數(shù) 計(jì)算函數(shù)代碼、約束方程計(jì)算函數(shù)代碼、矩陣計(jì)算函數(shù)代碼、調(diào)用接口函數(shù)代碼,并將生成 的代碼保存到以.c為后綴的文件中。設(shè)計(jì)人員使用該C語(yǔ)言源程序文件,可用于優(yōu)化模型 的仿真、評(píng)估,或者集成到優(yōu)化應(yīng)用中去。下面是一段生成的C語(yǔ)言代碼片段,省略號(hào)表示 中間省略的代碼。#include<math. h>
const double_segment_t = 2. 0000000000000001e-001 ;......double Z_t_des, _div_Z_c, _div_Z_t, _civ_v, Z_c_des, v_des ;Number_s_x[170];....../*meyer function implement氺/Bool CSTR_Model_objfun(int n, double*x, Bool new_x, double*obj_value){double _c_v_0_l ;......^objvalue = _segment_t氺((pow (_d_Z_t_9_l_Z_t_des,2. 0) +............return TRUE ;}......
權(quán)利要求
大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成系統(tǒng),由模型編輯器、模型離散化處理器、算法代碼自動(dòng)生成器組成,其特性在于定義了一種大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成的方法,包括如下步驟(1)、使用模型編輯器輸入非線性動(dòng)態(tài)優(yōu)化問(wèn)題,得到該問(wèn)題的NDOML模型;(2)、離散化處理輸入的NDOML模型,得到新的離散化后的NDOML模型;(3)、根據(jù)離散化后的NDOML模型生成原優(yōu)化問(wèn)題控制算法C語(yǔ)言程序代碼。
2.根據(jù)權(quán)利1要求所述的大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成系統(tǒng),其特征在于定義 了一種基于XML語(yǔ)言的描述非線性動(dòng)態(tài)優(yōu)化模型的語(yǔ)言ND0ML。
3.根據(jù)權(quán)利1要求所述的大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成系統(tǒng),其特征在于非線 性動(dòng)態(tài)優(yōu)化問(wèn)題的NDOML模型可使用圖形用戶界面的模型編輯器產(chǎn)生。
4.根據(jù)權(quán)利1要求所述的大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成系統(tǒng),其特征在于 NDOML模型的離散化處理可由模型離散化處理器自動(dòng)完成。
5.根據(jù)權(quán)利1要求所述的大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成系統(tǒng),其特征在于 NDOML模型的控制算法C語(yǔ)言程序代碼可由算法代碼自動(dòng)生成器自動(dòng)生成。
全文摘要
大規(guī)模非線性動(dòng)態(tài)優(yōu)化算法代碼生成系統(tǒng),涉及一種微分代數(shù)約束非線性動(dòng)態(tài)優(yōu)化問(wèn)題的模型描述及基于該模型的控制算法代碼自動(dòng)生成系統(tǒng),為大規(guī)模非線性動(dòng)態(tài)優(yōu)化問(wèn)題控制器設(shè)計(jì)提供了一種算法代碼生成自動(dòng)化工具。使用本系統(tǒng)可進(jìn)行非線性動(dòng)態(tài)優(yōu)化模型的輸入、編輯、輸出,完成非線性動(dòng)態(tài)優(yōu)化模型的離散化自動(dòng)處理、控制算法C語(yǔ)言代碼的自動(dòng)生成。本系統(tǒng)定義了一種描述非線性動(dòng)態(tài)優(yōu)化問(wèn)題模型的基于XML的NDOML語(yǔ)言,方便系統(tǒng)對(duì)模型的處理,且便于系統(tǒng)擴(kuò)展功能;本系統(tǒng)的離散化處理及算法代碼設(shè)計(jì)均采用了自動(dòng)生成處理技術(shù),極大提高了控制算法代碼設(shè)計(jì)人員的工作效率,解決了人工難于完成的較大規(guī)模和大規(guī)模非線性動(dòng)態(tài)優(yōu)化問(wèn)題的控制算法程序設(shè)計(jì)。
文檔編號(hào)G06F17/50GK101814027SQ20101013313
公開(kāi)日2010年8月25日 申請(qǐng)日期2010年3月26日 優(yōu)先權(quán)日2010年3月26日
發(fā)明者潘多濤, 袁德成, 黃明忠 申請(qǐng)人:沈陽(yáng)化工學(xué)院