我對SCIP很陌生。我想用SCIP作爲分支和價格框架。我已經用C++編寫了這個問題,並且已經實現了價值或列生成功能。事實上,我已經通過將Cplex.dll鏈接到項目來實現根節點的BP算法,現在需要編碼分支樹並決定使用SCIP來實現此目的。 我想知道什麼是使用SCIP和我擁有的舊代碼解決我的問題的最快方法?或者,也許使用GCG是一種更好更快的方式? 我已閱讀GCG文檔,但不明白我是否應該再次實施定價機制?實際上我不瞭解這兩者(SCIP和GCG)之間的區別。 謝謝。使用舊代碼的SCIP
0
A
回答
1
在GCG中,您不需要自己執行任何操作。它是分支和價格的通用求解器。您必須提供緊湊的配方,即應用了Dantzig-Wolfe配方後的模型會導致您正在解決的主要問題。重新配置還提供了定價問題的MIP制定,因此GCG可以將其作爲定價的子MIP來解決。然而,有可能在GCG中插入一個定價解算器,要求解決的定價MIP將通過(其目標函數對應於當前定價輪次)。然後定價求解器可以用任何問題特定的算法解決這個問題,並將解決方案傳遞迴GCG。
另一方面,在SCIP中,您創建了您想要解決的主要問題並實現了一個從LP獲得雙重價值的價格,並解決了相應的定價問題。這可能與您已經非常相似。
此外,如果你想要做分支和價格,你需要一個分支規則。 GCG帶有一些通用的,在SCIP中,您必須自己實施一個(因爲分支決策必須在您的定價過程中考慮)。總的來說,SCIP是一個分支和價格的框架,也就是說,它提供了樹管理,LP解決和更新等,但是你需要像閱讀器,定價器和分支規則。 GCG是一種通用解算器,因此您可以插入一個緊湊型模型,該模型將以一種通用的方式進行重新配置和解決。重新配製由您通過輸入文件提供,或者您可以嘗試讓GCG檢測適當的結構。你不需要執行任何操作。它已經提供了一些很好的功能,例如使用重構的原始啓發式,自動管理何時解決哪些定價問題等等。另一方面,與SCIP相比,例如通過定價求解器和分支規則進一步擴展的可能性受到限制,因爲您必須堅持GCG定義的結構。
我會說,使用SCIP和添加您的價格是可能的更簡單的方法,更類似於你已有的(你不需要制定緊湊型號)。如果你已經知道你的分支應該如何工作,那麼在SCIP中實現也不會太難。
相關問題
- 1. 舊Fortran代碼,並獲得使用GNU
- 2. 在舊代碼上使用gfortran編譯
- 3. 轉換舊代碼使用WCF
- 4. C++的SCIP makefile
- 5. JNI和舊的C++代碼
- 6. 移植舊的MDX代碼
- 7. PHP5與舊的PHP4代碼
- 8. 顯示舊代碼的mod_wsgi
- 9. 編譯舊的fortran代碼
- 10. 舊的iPhone SDK代碼不起作用?
- 11. 應該從源代碼控制庫中刪除舊的/舊的/未使用的代碼?
- 12. 設置UINavigationController,舊代碼?
- 13. 在舊代碼刪除宏
- 14. Java編譯器是使用舊版本的源代碼
- 15. 使用舊OS類別,並在相同的代碼庫
- 16. 代碼仍然使用舊版本的Python運行
- 17. 在VS代碼調試器中使用舊版本的節點
- 18. C++:重新編譯使用貓頭鷹的舊代碼
- 19. 如何使用bitbucket獲取舊代碼的快照?
- 20. 使用eclipse編譯舊的Java源代碼
- 21. 在舊的Java代碼中的例外
- 22. 調整舊的文章的代碼
- 23. SCIP與IpOpt和AMPL
- 24. 名稱「VarPtr」不是在代碼declared.In舊的VB代碼
- 25. 爲什麼這個新代碼比我的舊代碼慢?
- 26. 跳過聲納中代碼驗證的舊代碼
- 27. 編譯較舊的c代碼
- 28. 不能集中舊的reCaptcha代碼
- 29. 將舊的cuda代碼移植到7.5
- 30. 適應舊的反應原生代碼
您是否查看了[SCIP文檔](http://scip.zib.de/doc/html/)的「入門」部分? [開始新項目]頁面(http://scip.zib.de/doc/html/START.php)列出了可用的編碼示例。就你而言(C++中的列生成),VRP示例可能是一個起點。 – Gregor