我对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