AMPL
AMPL是一套用於優化建模的高級建模工具。AMPL是一種描述並求解大規模複雜數學問題的建模語言。AMPL支持世界上大部分的求解器,如CBC、CPLEX、FortMP、Gurobi、MINOS、IPOPT、SNOPT和KNITRO。AMPL語言的的一個主要的特點是對優化問題的數學表達式的簡化,這使得簡明地可讀地定義優化問題成為可能。根據NEOS的統計AMPL是使用最為廣泛的數學模型語言。
AMPL IDE
在售的求解器(Solver)
線性求解器
這些求解器都處理連續變量和整數變量中的線性和凸二次優化問題:
- CPLEX (IBM Corporation)
- Gurobi (Gurobi Optimization)
- Xpress (FICO)
單個求解器提供其他問題類型的擴展。所有這些都包含用於線性編程的快速原始單純形,雙重單純形和內部方法,以及用於純整數和混合整數問題的複雜的分支切割和啟發式搜索方法。 包括多個處理器和內核上的並行計算選項。 此類解決方案是商業,政府和研究機構中應用最廣泛的應用程式。
非線性求解器
此類別中的求解器為尋找涉及平滑非線性函數(包括比率,多項式,指數和對數以及三角形式)的問題的局部最優解提供了最有效的方法。 它們提供了各種經過驗證的算法:
- CONOPT (ARKI Consulting & Development) — 基於減少梯度的多方法架構
- KNITRO (Ziena Optimization) — 選擇內點和主動集方法,支持整數變量和自動多重啟動
- LOQO (Princeton University) — 應用於二次近似序列的內點法
- MINOS (Stanford University) — 基於線性原始單純形方法的減少梯度方法
- SNOPT (Stanford University) — 序貫二次逼近法
對於給定的問題類,通常會發現這些求解器方法中的一個或多個是有利的。 非線性求解器廣泛用於具有物理組件的能量傳輸和工程設計等應用,以及先進的經濟和金融建模。
替代求解器
這些求解器結合了多種方法來處理由於多個局部最優解,非光滑和離散函數和/或高度組合或邏輯約束而難以實現的優化問題。 我們正在構建此類別的產品,從以下開始:
- BARON (The Optimization Firm) — 連續和整數變量中的全局非凸非線性優化
- LGO (Pintér Consulting) — 一般函數形式的全局和局部優化
使用AMPL,可以輕鬆地在相同的模型和數據上嘗試多種求解器替代方案,以確定哪種方法最適合給定的應用程式。
- 開源求解器
AMPL 系統是一個複雜的建模工具,支持整個優化建模生命周期:開發、測試、部署和維護.
通過使用以人們對優化模型的相同方式來表示優化模型的高級表示,AMPL 促進了快速開發和可靠的結果。
AMPL 集成了一種建模語言,用於描述優化數據、變量、目標和約束; 用於瀏覽模型和分析結果的命令語言; 以及用於收集和操作數據以及實現疊代優化方案的腳本語言。 所有這些都使用相同的概念和語法來簡化應用程式構建。
強大的建模語言功能
- 對集合和集合運算符的廣泛支持。 AMPL 模型可以使用成對、三元組和更長的元組; 在集合上索引的集合的集合; 無序、有序和循環對象集; 和數字組。
- 算術、邏輯和條件表達式的通用和自然語法; 求和和其他疊代運算符的熟悉約定。
- 連續和整數變量中線性和凸二次問題的自動處理。
- 非線性規劃功能,例如初始原始值和對偶值、用戶定義函數、快速自動微分和「定義」變量的自動消除。
- 網絡流、分段線性、互補條件和邏輯含義的便捷替代符號。
有價值的建模支持功能
- 具有批處理選項的交互式命令環境。 強大的顯示命令讓您可以使用自動格式化或您自己的首選項查看任何模型組件或表達式、在螢幕上瀏覽或寫入文件。
- 強大的腳本語言,包括循環和 if-then-else 命令。 AMPL 命令語言中的程序可以定義複雜的疊代方案來處理輸入數據、重複調整和求解多個模型的實例,並準備分析結果。
- 模型和數據的分離。 即使集合和數據表增長,AMPL 模型也保持簡潔。 模型可能包含多種數據有效性條件。
- 數據輸入和輸出連接。 簡潔的語句將模型數據和結果與關係數據表的內容相關聯。
廣泛的可用性
可用的求解器包括最流行和最強大的優化引擎:
- 用於連續和混合整數問題的線性和凸二次求解器(CPLEX、Gurobi、Xpress)。
- 用於連續問題(CONOPT、Ipopt、KNITRO、MINOS、SNOPT)和混合整數問題(Bonmin、Couenne、KNITRO)的局部求解的非線性求解器。
使用我們的開源 AMPL 求解器庫將您自己的求解器連接到 AMPL。
支持的平台包括 Windows、Linux、MacOS 和幾個基於 Unix 的工作站。
詳盡的支持材料
AMPL 書提供了詳細的介紹性教程以及所有基本和高級功能的教程介紹。
提供了大量示例,包括 AMPL 書中的所有模型和數據以及用於常見疊代方案的各種腳本。
Google群組上的AMPL用戶論壇對公眾開放搜索或發帖。