我正在尝试使用http://docs.jboss.org/optaplanner/release/6.4.0.Final/optaplanner-docs/html_single/index.html#benchmarkBlueprint所述的OptaPlanner基准蓝图。
当我使用EVERY_CONSTRUCTION_HEURISTIC_TYPE_WITH_EVERY_LOCAL_SEARCH_TYPE的solverBenchmarkBluePrintType时,出现以下错误:
The acceptorType (SIMULATED_ANNEALING) currently requires a simulatedAnnealingStartingTemperature (null).
所以我尝试将以下内容添加到inheritedSolverBenchmark部分中的benchmark.xml文件中:
<localSearch>
<acceptor>
<simulatedAnnealingStartingTemperature>0hard/500soft</simulatedAnnealingStartingTemperature>
</acceptor>
</localSearch>
我收到了这个错误:
The exception of the firstFailureSingleBenchmarkRunner
(solution_FIRST_FIT-HILL_CLIMBING_0) is chained. /
java.lang.IllegalStateException Local Search phase (0) needs to start
from an initialized solution, but the planning variable
(HatchEventOrderAllocator3bOrder.assignedHatchEvent) is uninitialized
for the entity com.mm.server.inventory.app.HatchEventOrderAllocator3bOrder@7216ab0f).
Initialize the solution by configuring a Construction Heuristic phase before this phase.
似乎在inheritedSolverBenchmark中包含localSearch部分会产生我不想要的副作用。
如何将simulationAnnealingStartingTemperature传递给Simulated Annealing算法的每次迭代使用蓝图?
答案 0 :(得分:1)
它是a bug(jira链接)。我还没有找到一种方法来确定一个有点合理的SA默认温度(它也是特定用例)。
解决方法:在蓝图基准报告中忽略SA的结果。
jira的可能修复:从蓝图中删除SA或执行一些愚蠢的默认温度,如10hard / 1000soft。后者可能会给人一种错误的印象,即SA对他们的案子毫无用处,但前者可能不会让他们给SA一个机会......