杉數求解器COPT 6.5正式發布:MIP求解性能大幅提升,新增Callback功能
杉數求解器最新版本COPT 6.5已正式發布。此次升級的COPT 6.5版本大幅提升了混合整數規劃的求解性能,進一步提升了線性規劃等求解模塊的速度和穩定性,在ASU測評榜上,取得了5項第一、5項第二的成績。其中線性規劃的最優頂點解和最優數值解兩個榜單均排名世界第一,MIP榜單排名世界第二。
COPT 6.5新增Callback功能,拓展了求解器的使用場景;改進了indicator和SOS約束功能的底層實現,顯著提升其穩定性;在COPT Python接口中新增對廣義約束(AND/OR/MAX/MIN/ABS/PWL)的支持。
歡迎您前往杉數官網申請試用COPT最新版本,老用戶需重新安裝COPT并更新license文件。針對學術用戶(以有效學術郵箱申請),我們提供365天可續用的免費試用權限;針對非學術用戶,我們提供180天的免費試用權限。
MIP求解性能大幅提升,ASU測評榜排名領先
COPT 6.5版本大幅提升了混合整數規劃的求解性能,進一步提升了線性規劃等求解模塊的速度和穩定性。在ASU測評榜上排名領先,取得了5項世界第一、5項世界第二的成績。
ASU測評榜是由美國亞利桑那州立大學Hans Mittelmann教授維護的國際權威數學優化軟件測評平臺,其中選取工業界有代表性的實際問題作為算例,其測評得到求解器業界的一致認可。在線性規劃的最優頂點解和最優數值解兩個榜單中,COPT 6.5均位列世界第一。
COPT 6.5版本的MIP求解性能大幅提升,在MIP測評榜的3個榜單中均排名世界第二,綜合求解性能和第一名差距縮減至一倍左右,也是榜單上唯一的國產求解器。以下是COPT 6.5 MIP求解模塊的測評數據:
對于非線性規劃問題的求解模塊,COPT 6.5取得了3項第一、2項第二的成績,各模塊的測評數據如下所示:
COPT 6.5支持求解的問題類型及最新性能測評結果匯總如下表所示:
注:該表數據來源于美國亞利桑那州立大學Hans Mittelmann 教授維護的國際權威數學優化軟件測評平臺 http://plato.asu.edu/bench.html 2023年4月7日的測評結果。
針對有著廣泛且重要應用的MIP問題,在每一次的版本迭代中,COPT的求解性能都在不斷提升,下圖為MIPLIB測評集上的性能測評結果,未解出問題數量逐漸減少,加速比逐漸提升。
注:
1. “未解出數量”表示在MIPLIB算例集中,COPT每次更新版本未能解出的問題數量;
2. “加速比”表示相較于V2.0版本,COPT每次更新版本的相對求解速度。
增加Callback功能
Callback(回調)功能是針對混合整數規劃問題的高級控制功能,便于用戶針對特定問題嵌入自己的算法。Callback功能支持在MIP求解過程中,根據指定觸發點,獲取中間信息(如:當前最優解、可行解或LP松弛解等)、動態控制MIP求解進程,如:添加惰性約束或用戶割平面,以及設置自定義的啟發式解等。
以旅行商問題(Travelling Salesman Problem,簡稱TSP)為例,用戶可以調用Callback功能,當找到MIP可行解時,獲取當前可行解的信息(判斷是否包含子回路),通過添加惰性約束,交互式地消除對應的子回路。
以Python為例,調用Callback功能,簡單來說,可概括為以下幾個步驟:
1. 構建自定義 Callback 類,并繼承 CallbackBase 類;
2. 實現 CallbackBase.callback() 函數;
3. 新建自定義 Callback 實例,并傳入用戶所需參量;
4. 通過 Model 類的 Model.setCallback() 函數添加 Callback 實例。
關于如何在不同接口中調用Callback功能,可參考《杉數求解器用戶手冊》中相應章節的介紹以及各API函數說明。訪問杉數教學平臺即可查看完整TSP案例分析和代碼實現,COPT安裝包examples目錄下也有示例代碼(以Python接口為例,文件名為“cb_ex1.py”)。
Python接口新增支持廣義約束
COPT的Python接口中新增對廣義約束(AND/OR/MAX/MIN/ABS/PWL)的支持,對于目標或約束中含有上述函數的優化問題,用戶可以通過調用Model類的相關成員函數,直接添加上述廣義約束進行建模和求解,如 Model.addGenConstrMax(y, [x1, x2, x3]),添加?條形如 y = max{x1, x2, x3} 的約束到模型中。具體的函數用法可以參考《杉數求解器用戶手冊》Python API的相關函數說明。