我想知道是否有一种有用的Java实现可以用于TSP的分支定界算法,或者一般情况下包括TSP的BnB的OR框架。
感谢您的帮助!
马可
我想知道是否有一种有用的Java实现可以用于TSP的分支定界算法,或者一般情况下包括TSP的BnB的OR框架。
感谢您的帮助!
马可
BnB通常与一个完整的子问题求解器进行交互:
best_cost_soln_so_far = +inf
while (better_cost_soln = search_for_soln_cheaper_than(best_cost_soln_so_far))
{
best_cost_soln_so_far = better_cost_soln
backtrack_into_search
}
best_cost_soln_so_far
设置的限制时,您的子问题搜索将回溯。如果子问题搜索找到更好的解决方案,则会更新best_cost_soln_so_far
,并从上次离开的地方继续搜索,寻找更好的解决方案。这很容易实现。OptaPlanner(开源,Java)具有分支和界实现。请参阅有关BaB的文档部分。算法的实现始于此类, 但这很难理解。
它还有一个TSP示例:虽然默认情况下未配置为BaB,但通过像这样调整tspSolverConfig.xml
即可轻松完成:
<solver>
...
<exhaustiveSearch>
<exhaustiveSearchType>BRANCH_AND_BOUND</exhaustiveSearchType>
</exhaustiveSearch>
</solver>
有额外的可选参数来控制节点排序、节点探索方式等。