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

当OptaPlanner的最佳解决方案已更新时,如何获得所选移动?

阙阳夏
2023-03-14

我们知道,如调试日志所示,OptaPlanner在选择一个步骤之前会进行多个步骤的计算,该步骤生成最高分以更新最佳解决方案,例如[main]debug o.o.c.ic.defaultconstructionheuristicsolverphase-step index(1147),time spend(4381),score(0hard/80504soft),selected move count(15)for constructing step...

我正在尝试获得所选择的移动(或至少获得一个通知),以便我可以捕获一些中间的计算结果。显然,打印出每一步的所有计算结果是不可行的,因为其中许多结果没有被选中。

我正在查看BestSolutionChangedEvent方法,但似乎它可能不符合我的目的,根据这个线程:如何知道Optaplanner求解已经结束?

有没有办法做到这一点?提前道谢。

共有1个答案

商鸿哲
2023-03-14

在回答实际问题之前,这真的有用吗?假设以下场景:

  • 步骤0,做完动作0
  • 后新的最佳得分
  • 步骤1,做完动作1后新的最佳得分
  • 步骤2,做完动作2后的最佳得分相同
  • 第3步,做动作3后的最佳得分相同
  • 步骤4,完成动作4后新的最佳得分

现在,如果你只是采取行动,导致新的最佳解决方案,你会得到什么?

  • 步骤0后新建最佳解决方案事件A,给出移动0
  • 在步骤1之后新建最佳解决方案事件B,给出移动1
  • 在步骤4之后新建最佳解决方案事件C,给出移动4//但不执行移动2和移动3,我们一开始就不会出现在此解决方案中。

所以那是没有用的,当然除非你只是想了解哪些动作是好的。但在这种情况下,看看基准标记的选择移动类型最佳得分差异随时间的统计,新的6.2。

 类似资料:
  • 我正在尝试解决类似于员工名册的问题。我面临的问题是,每次我运行求解器时,它都会生成不同的任务。这使得更难调试为什么选择特定案例而不是另一个案例。为什么会这样? 附注:我的任务有许多硬性限制,可能无法全部满足(大多数情况下,我仍然看到一些负面的硬性评分)。所以我的终止策略是基于< code > unimprovedSecondsSpentLimit 。会不会是这个原因?

  • 问题内容: 想象一下,我们必须依靠ajax请求来源。当所有回调都触发时,我想执行一些操作。除了这种方法外,如何做到这一点: 我在这里不喜欢的是,在这种情况下,我无法处理响应失败(例如,我无法设置响应超时)和整体方法(我想应该有一种方法可以使用更多功能)在这里编程) 有任何想法吗? 问候! UPD: 感谢您提供链式回调的解决方案。我在这里找到了一个很好的方法。这是评论中提出的内容: 稍作调整,即可等

  • 本文向大家介绍IONIC自定义subheader的最佳解决方案,包括了IONIC自定义subheader的最佳解决方案的使用技巧和注意事项,需要的朋友参考一下 IONIC subheader是我们常用的一个css 属性,但是这个subheader的高度是固定的,当然也是可以改变的,但是如果改了subheader的告诉,还要更改content的top值,稍微有些麻烦,如果是动态告诉的subheade

  • 问题内容: 至少有六打Django应用程序为Django提供OpenID身份验证: django-openid django-openid-auth 另一个django-openid-auth,似乎已经死了 django-authopenid django-socialauth(还提供对Twitter和Facebook帐户的身份验证) django-socialregistration(也具有Fa

  • 问题内容: 我们构建3层企业解决方案,通常由几个webapp和ejbjar模块组成,这些模块都与​​数据库通信并具有多个外部集成点。 每个模块通常需要自己的配置,这些配置可以在解决方案的生命周期内进行更改。部署它成为一场噩梦,因为现在我们必须记住18个属性文件以进行复制和配置,还需要设置数据源,队列,内存需求等。 我希望但不能乐观地找到更好的方法。我们考虑/使用过的一些选项,各有其优缺点: 使用多