簡體   English   中英

使用舊代碼的SCIP

[英]SCIP using old code

我對SCIP有點陌生。 我想將SCIP用作分支和價格框架。 我已經在C ++中編碼了該問題,並且還已經將pricer或column generation作為函數實現了。 實際上,我已經通過將Cplex.dll鏈接到項目來為根節點實現了BP算法,現在需要對分支樹進行編碼,並決定為此目的使用SCIP。 我想知道使用SCIP和已有的舊代碼解決問題的最快方法是什么? 還是使用GCG是更好,更快的方法? 我已經閱讀了GCG文檔,但不知道是否應該再次實施價格機? 實際上,我不理解這兩者(SCIP和GCG)之間的區別。 謝謝。

在GCG中,您不需要自己執行任何操作。 它是分支價格的通用求解器。 您必須提供緊湊的公式,即,在應用Dantzig-Wolfe重新制定公式后,您所要解決的主要問題的模型。 重新制定還提供了定價問題的MIP公式,因此GCG可以將其作為子MIP解決定價問題。 但是,有可能在GCG中插入定價求解器,要求解的定價MIP將傳遞給該定價求解器(目標函數對應於當前的定價周期)。 然后,定價求解器可以使用任何特定於問題的算法來解決此問題,並將解決方案傳遞回GCG。

另一方面,在SCIP中,您要創建要解決的主要問題,並實現一個定價程序,該定價程序從LP獲取雙重值並解決相應的定價問題。 這可能與您已經擁有的非常相似。

此外,如果要進行分支定價,則需要分支規則。 GCG帶有一些通用的標准,在SCIP中,您必須自己實施(因為必須在定價程序中考慮分支決策)。

總的來說,SCIP是分支定價的框架,即,它提供了樹管理,LP解決和更新等功能,但是您需要自己實現一些功能,例如讀取器,定價器和分支規則。 GCG是通用求解器,因此您只需插入一個緊湊模型即可,該模型將以通用方式重新制定和求解。 您可以通過輸入文件提供重新格式,也可以嘗試讓GCG檢測適當的結構。 您無需執行任何操作。 它已經提供了一些不錯的功能,例如利用重新表述的原始啟發式算法,何時解決定價問題的自動管理等等。 另一方面,與SCIP相比,例如通過價格求解器和分支規則進一步擴展它的可能性受到限制,因為您必須堅持GCG定義的結構。

我要說的是,使用SCIP並添加定價器可能是更簡單的方法,並且與您已經擁有的更類似(您無需制定緊湊模型)。 如果您已經對分支的工作方式有了一個想法,那么在SCIP中實現它也應該不會太困難。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM