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

Optaplanner:构造启发式阶段的步进变化侦听器

慕容成文
2023-03-14

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

共有1个答案

姜胤
2023-03-14

若要侦听步骤和阶段级别的事件,需要使用名为 PhaseLifecycle Listener 的内部侦听器。例如,内部基准测试器代码使用它:

StepScoreSingleStatisticListener listener = new StepScoreSingleStatisticListener();
((DefaultSolver) solver).addPhaseLifecycleListener(listener);
// solver.solve(...);
((DefaultSolver) solver).removePhaseLifecycleListener(listener);

实现可能如下所示:

private class StepScoreSingleStatisticListener extends PhaseLifecycleListenerAdapter {

    @Override
    public void stepEnded(AbstractStepScope stepScope) {
        ...
    }

}

警告:这是内部API,在未来的版本中不向后兼容,没有文档记录,不适合胆小的人,使用风险自负,你已经不在堪萨斯州了Dorothy,…:)

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

  • 当旋转手机或更改为深色模式(当我的活动重新创建时)时,用户将面临无法找到片段构造函数等问题。 无法启动活动组件信息{e.Quran.Qaz/e.Quran.Qaz.ui.Zhuz.QuranByPage}:androidx。碎片应用程序。片段$InstantiationException:无法实例化片段e.Quran。Qaz。用户界面。朱。PageFragment:找不到片段构造函数 在我的项目中

  • 通常在片段中,我在onAttach()中附加一个监听器,并在onDetach()中取消监听器。 是否需要在onDetach()中将侦听器设置为null? 虽然我这样做是因为它使代码看起来更加对称,但似乎没有必要这样做,因为片段已经被销毁了,因为根据片段的生命周期,之前已经调用了onDestroyView()和onDestroy()。 提前谢谢。

  • 将其添加到任何JavaFX应用程序的primaryStage: 最小化阶段。输出为“图标化:true” 恢复舞台。输出为“图标化:假” 将舞台最大化,然后将其最小化。输出为“图标化:true” 现在再次恢复舞台。输出应该是“图标化:false”,但它不会打印任何内容 因此,在去锥化最大化阶段时,不会调用我的图标化属性侦听器。我做错了吗,还是这是JavaFX中的一个bug?我使用的是Java 1.8

  • 我正在学习OptaPlanner库。我非常简单的测试似乎工作得很好。正如我在XML配置中指定的,计划运行在20秒后终止。 然后我添加 计划几乎立即终止,结果非常糟糕,甚至打破了硬约束。 在手册中我看到: 构造启发式自动终止,因此通常不需要在构造启发式阶段专门配置终止。 这与整个规划运行有关吗?如果是,那么为什么它需要终止?我认为构造启发式的重点是构造好的初始位置,然后开始规划。我观察到的情况不是这