Mosel

Mosel是Xpress-MP提供的一種程式語言。Xpress-Mosel使你能夠定義你的問題,然後使用適當的求解引擎進行求解,並對結果進行分析,這一切都將使用一種專為此目的設計的全功能的編譯型程式語言來實現。

Mosel是Xpress-MP提供的一種程式語言。
Xpress-Mosel使你能夠定義你的問題,然後使用適當的求解引擎進行求解,並對結果進行分析,這一切都將使用一種專為此目的設計的全功能的編譯型程式語言來實現。Mosel程式是編譯型的程式,這使它能夠快速運行,並對最終用戶隱藏其中的智慧財產權。這些程式可以互動地運行,或嵌入到應用程式中。
Mosel語言易於學習和使用,這就使用戶不需太多花費就可以從無到有開發最佳化模型,理解並審查別人開發的模型,並在遠期對模型進行修改和維護。可視化的開發環境Xpress-IVE使這一過程變得更為簡單。
對任意範圍,任意索引集,以及稀疏對象的完全支持意味著即使規模最大最複雜的問題也可以進行清晰簡練的表達,而且不需要依賴於任何特定的數據實例。
你可以使用Mosel調試器來協助用Mosel語言進行模型開發。這一調試器支持所有典型的調試功能,以對模型的執行進行跟蹤和分析。
1.求解器模組和數據處理
Mosel是完全開放的,用戶可對其進行擴展。Mosel發行版本包括擴展庫(也稱為模組),藉助於其中的一個擴展庫,你只需要在Mosel程式中插入最佳化語句,就可以直接控制Xpress-Optimizer。其他求解器模組提供了對Xpress-SLP的訪問,以定義和求解非線性問題,也提供了對隨機規劃工具Xpress-SP,以及有約束規劃軟體Xpress-CP等的訪問。
另外有一個模組提供了ODBC數據驅動,它提供了直接訪問所有常見的資料庫以及電子表格的接口。除了使用ODBC接口之外,數據也可以直接從文本檔案,記憶體,或I/O流中讀出或向其中寫入。
2.模型嵌入庫
為對模型進行部署,通常需要將模型嵌入到公司的信息系統中。藉助Mosel庫,你可以從程式語言環境(例如,C或Java)中執行和訪問Mosel語言開發的模型。這一靈活的接口為諸如在模型和大的應用程式之間交換數據和解的值這樣的套用提供了方法。
除了Mosel自己的功能之外,某些模組也提供了從程式語言環境中對其內部函式的直接訪問。
3.本地化的接口
通過Mosel的本地化接口,用戶可以定義自己的模組或I/O驅動,它們將與Mosel發行版本中的軟體組件同等看待。這樣用戶就可以向Mosel語言加入新的功能(例如,實現針對特定問題的數據處理,或連線到外部的求解器或求解算法),並可以根據自己的需要使Mosel語言不斷進化。
4.簡單實例
對於如下線性規劃:
max z= x1+2*x2
s.t. 3*x1-x2>=5
2*x1+3*x2<=18
其Mosel代碼為:
model "example"
uses "mmxprs" !求解器
declarations
x1,x2: mpvar !決策變數聲明
end-declarations
obj:= x1+2*x2
3*x1-x2>=5
2*x1+3*x2<=18
maximize(obj) !目標最大化
writeln("x1=", getsol(x1))
writeln("x2=", getsol(x2))
writeln("最優值:", getobjval) !輸出結果
end-model

相關搜尋

熱門詞條

聯絡我們