gams
gams
gams全稱The General Algebraic Modeling System,是一款數學規劃和優化的高級建模系統。
目錄
GAMS是一款最佳化的計算機數值分析商業軟體。這種商業軟體相當普遍,如LINDO、DOT等,以矩陣運算見長的MATLAB計算機軟體亦有發展"optimization tool box",可以解各種非線性最佳化問題的數值解。這裡要介紹的GAMS,則是以簡單清楚的使用者介面和強健穩定的數值分析能力見長。
通用代數建模系統(GAMS)是特別為建模線性,非線性和混合整數最優化問題而設計的。本系統對於大型的,複雜的問題特別有幫助.GAMS可以運行在個人計算機、工作站、大型機和超級計算機上.
GAMS允許使用者通過制定簡單的設置來把精力放在建模問題上。至於特定機器和系統軟體執行的費時的細節將由GAMS系統來處理.
GAMS對於處理大型的,複雜的,需要多次修訂才能最終確定精確模型的獨一無二的問題特別有幫助。系統以高度簡潔和自然的方式來建模問題。使用者能夠快速和方便的更改公式,能從一個求解器轉到另一個,甚至稍加費心就能從線性轉換到非線性.
GAMS讓使用者把精力集中到建模上。通過排除考慮純技術上的機器特定的問題的需要,比如地址計算,存儲分配,子程序鏈接,和輸入輸出和流程式控制制,GAMS增加了用於概念化和運行模型,和分析結果的時間.GAMS本身構建了良好的建模習慣,通過請求簡明而精確的實體和關係的規範.GAMS語言形式上和通常使用的編程語言相似。因此對於那些有編程檢驗的使用者將非常熟悉.
使用GAMS,數據僅僅需要一次就能在熟悉的列表和表格形式中輸入。模型以簡練的代數聲明來描述,對於人和機器都很容易讀懂。非常相關的約束的整個集合都被輸入到一個聲明中.GAMS自動生成每個約束等式,並讓使用者處理例外情況,假使那裡一般來說是不需要的。在模型中的聲明能夠被重用,而不需要更改代數式,當其它的實例是相同的或出現了相關問題。錯誤的位置和類型會在嘗試解決方案前被查明.GAMS處理動態模型,包括時間序列,滯后,及暫時終點的提示和處理.
GAMS是靈活而強大的。模型可以非常方便的從一個計算機平台移到另外一個,只要GAMS已經在每個平台被安裝好.GAMS很容易進行敏感度分析。使用者能夠方便的規劃模型來求解一個成分的不同值,然後生成一個輸出報告,列出了每種情況的解決方案特徵。模型能夠同時被開發和文檔化,因為GAMS允許使用者包含解釋性的文本來作為任意符號和等式的定義和解釋.
GAMS不斷的在被增強和擴展.2.25版本包含了多個語言擴展,例如在一個循環中的SOLVE聲明,INCLUDE聲明,IF-ELSE聲明,和使用PUT聲明進行報告編寫的功能。其它的加強包括增加的系統集成特徵,性能改善,新的子系統,和另外的計算機平台支持.
當前版本2.50包括一個基於Intel Windows平台(95/98/ME和NT/2K/XP)的集成開發環境(IDE).GAMS2.50的新的分發包含新的語言特徵和新發表的全新/更新的求解器,一年至少4次。請檢查版本聲明.
示例:
從著名的1963書(由George Dantzig編寫)中提取的一個運輸問題,用來描述GAMS的有效性。這個模型只是模型庫中的部分,模型庫中還包含了大量的完整GAMS模型.
支持模型的類型:
GAMS模型類型包括LP,MIP和NLPs的不同形式。這裡列出了GAMS支持的所有的模型類型.
GAMS的發展背景
GAMS是"General Algebraic Modeling System"(一般性代數模擬系統)的縮寫,最早是由美國的世界銀行(World Bank)的Meeraus和Brooke[Brooke,Kendrickm and Meeraus,1992]所發展。"GAMS"事實上並不代表任何最佳化數值演演算法,而只是一個高級語言的使用者介面,利用GAMS可以很容易建立、修改、除錯你的最佳化模型輸入文件,而輸入檔經過編譯后,成為較低階的最佳化數值演演算法程序所能接受的格式,再加以執行並寫出輸出檔。
數值演演算法方面,對線性與非線性規劃問題,GAMS使用由新南韋爾斯大學的Murtagh、及史丹福大學的Gill、Marray、Saunders、Wright等所發展的MINOS[Murtagh and Saunders,1983]演演算法。MINOS是"Modular In-core Non-linear Optimization System"的縮寫,這個演演算法綜合了縮減梯度法和准牛頓法,是專門為大型、複雜的線性與非線性問題設計的演演算法。對混合整數規劃問題,則採用亞歷桑那大學的Marsten及巴爾第摩大學的Singhal[1987]共同發展的ZOOM(Zero/One Optimization Method)演演算法。
GAMS使用範例說明
如前所述,GAMS本身有非常完整的英文版使用者手冊,GAMS的計算機軟體中也附帶了許多學習範例的檔案。這裡所作的GAMS使用範例說明,目的絕非在取代原版的使用者手冊,而是要配合本課程說明的形式,重新編寫使用範例輸入文件,使讀者能很快的進入情況,了解其使用程序。
GAMS的操作大抵可分為三個步驟:建立GAMS輸入文件,執行GAMS程序,檢視GAMS輸出檔內容。