我的理解是Brute Force将始终提供最佳解决方案,但不会扩展。虽然元启发式将在一定的时间限制内提供最佳可能性。含义如果给出足够的时间,它应该与暴力解决方案匹配。
但是,在我的实施中,它没有发生。我正在通过Brute Force算法获得最佳解决方案,但即使我给了足够的时间,也与MH不一样。可能是什么原因。我之所以能想到MH是陷入局部最大值。但是,我试图从我的理解中避免这种情况。
我不是在分享实施,因为它很复杂。如果需要,将共享代码。
更新:
我的MoveSelector配置 -
<?xml version="1.0" encoding="UTF-8"?>
<solver>
<!-- Domain model configuration -->
<solutionClass>com.example.CutSolution</solutionClass>
<entityClass>com.example.Size</entityClass>
<!-- Score configuration -->
<scoreDirectorFactory>
<easyScoreCalculatorClass>com.example.CutplanEasyScoreCalculator</easyScoreCalculatorClass>
</scoreDirectorFactory>
<constructionHeuristic>
<constructionHeuristicType>FIRST_FIT</constructionHeuristicType>
</constructionHeuristic>
<localSearch>
<termination>
<unimprovedSecondsSpentLimit>10</unimprovedSecondsSpentLimit>
</termination>
<unionMoveSelector>
<changeMoveSelector/>
<swapMoveSelector/>
<pillarChangeMoveSelector/>
<pillarSwapMoveSelector/>
</unionMoveSelector>
<acceptor>
<entityTabuRatio>0.02</entityTabuRatio>
</acceptor>
<forager>
<acceptedCountLimit>1000</acceptedCountLimit>
</forager>
</localSearch>
</solver>
我只有一个规划实体和一个规划变量。
感谢。
答案 0 :(得分:1)
可能确实陷入了当地的最佳状态。添加额外的移动选择器以帮助它解开通常是最好的解决方案。
这种卡住更多地发生在小型数据集(缩减版)上。 Metaheuristics在升级方面表现优异,但是 - 只有香草移动选择器 - 它在某些情况下不会很好地缩小。