当前位置: 首页 > 知识库问答 >
问题:

如果我添加构造启发式配置,OptaPlanner立即终止

刁浩言
2023-03-14

我正在学习OptaPlanner库。我非常简单的测试似乎工作得很好。正如我在XML配置中指定的,计划运行在20秒后终止。

然后我添加

<constructionHeuristic>
<constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType>
</constructionHeuristic>

计划几乎立即终止,结果非常糟糕,甚至打破了硬约束。

在手册中我看到:

构造启发式自动终止,因此通常不需要在构造启发式阶段专门配置终止。

这与整个规划运行有关吗?如果是,那么为什么它需要终止?我认为构造启发式的重点是构造好的初始位置,然后开始规划。我观察到的情况不是这样。

我错过了什么吗?过早终止的原因可能是什么?

共有1个答案

公孙令秋
2023-03-14

优化算法配置是可选的。这意味着如果你没有

当您添加

自动构造启发式终止意味着一旦初始化所有实体的规划变量,此阶段就会终止。因此,您不必配置

您现在需要做的是添加<code>

例如:

<?xml version="1.0" encoding="UTF-8"?>
<solver>
  <!-- Define the model -->
  <scanAnnotatedClasses/>

  <!-- Define the score function -->
  <scoreDirectorFactory>
    ...
  </scoreDirectorFactory>

  <!-- Configure solver (global) termination -->
  <termination>
    <secondsSpentLimit>20</secondsSpentLimit>
  </termination>

  <!-- Configure the optimization algorithms (optional) -->
  <constructionHeuristic>
    <constructionHeuristicType>FIRST_FIT_DECREASING</constructionHeuristicType>
  </constructionHeuristic>
  <localSearch>
    <localSearchType>HILL_CLIMBING</localSearchType>
    <acceptor>
      <acceptorType>HILL_CLIMBING</acceptorType>
    </acceptor>
    <forager>
      <acceptedCountLimit>1</acceptedCountLimit>
    </forager>

    <!-- You can also configure phase termination -->
    <termination>
      <stepCountLimit>100</stepCountLimit>
    </termination>
  </localSearch>
</solver>

 类似资料:
  • 求解器必须处理一个规划实体和两个规划变量。它为会议分配一个时间间隔和一个房间。由于构造启发式的搜索空间很大,我不得不实现顺序移动选择。 这样做的问题是,求解器有时会指定一个没有可用房间的时间序列,所以当要分配房间时,求解器无法找到一个不打破硬约束的房间。 然后,局部搜索阶段能够找到一个解决方案,不打破任何硬约束,但我必须运行它很长时间,以获得一个好的解决方案质量。例如,求解器将返回远程会议分配,即

  • 在Optaplanner中,我注意到每个动作都有变量变化侦听器。和 SolverEventListener for bestSolutionChanged 在每个阶段后计算。但是,我找不到每个步骤末尾的变化。有什么建议可以听取施工启发式阶段的步骤变化吗?提前谢谢。

  • 我希望在产品页面上添加一个“立即购买”按钮,点击后重定向到结账页面,而不将产品添加到购物车中。我注意到在Woocommerce之前也有人问过一个类似的问题--在产品页面上添加到购物车和立即购买按钮 我认为最好的方法是创建另一个购物车和结账实例,但我只是不知道如何实现它,有人能帮助我吗? http://wordpress.org/extend/plugins/woocommerce/

  • 有没有一种方法可以将自定义移动放入构建启发式中?我正在从事一个项目,该项目接近optaplanner中的护士名册问题,但除了将员工分配到轮班任务之外,我还需要将员工分配到轮班中所需的小任务。所以当我将员工安排在轮班中时,我需要将员工安排在所有他可以完成的小任务中(有技能)。我不希望这是第二个计划实体,员工是计划变量,我只是希望当我将员工分配到一个班次时,循环处理该班次内的所有小任务(在班次的开始和

  • 我已经安装了以下版本,以使用硒与Chrome。chrome浏览器正在启动并打开所需的url,但立即被终止,窗口在几秒钟内关闭。请指导我需要做的任何更改。