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