複製鏈接
請複製以下鏈接發送給好友

Mosel

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