如何使用OptaPlanner基准蓝图指定simulatedAnnealingStartingTemperature

时间:2016-04-22 19:13:52

标签: optaplanner

我正在尝试使用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算法的每次迭代使用蓝图?

1 个答案:

答案 0 :(得分:1)

它是a bug(jira链接)。我还没有找到一种方法来确定一个有点合理的SA默认温度(它也是特定用例)。

解决方法:在蓝图基准报告中忽略SA的结果。

jira的可能修复:从蓝图中删除SA或执行一些愚蠢的默认温度,如10hard / 1000soft。后者可能会给人一种错误的印象,即SA对他们的案子毫无用处,但前者可能不会让他们给SA一个机会......