在为我的项目实现了一些规则之后,我做了一个“ScoreConsistencyCheck”,以确保规则得到了正确的实现。
"ScoreConst encyCheck"
表示实现我自己的Java
方法,该方法将在我提前终止求解或通过配置终止后调用,输出预期分数。该方法的参数是一个解决方案
实例,基于解决方案的状态计算预期分数,然后将其与来自解决方案实例的“分数”变量的分数进行比较。
当我使用FULL_ASSERT
时,它不会抛出Score腐败
异常,但是当我这样尝试时,我有时会在构建启发式或本地搜索的特定步骤中获得分数差异。我的猜测是因为OptaPlanner不知道基于解决方案的预期分数是多少,它只关心FULL_ASSERT步骤分数与撤消操作完成后重新计算的分数相同。
因此,由于“ScoreConsistencyCheck”仅在求解结束后调用,我无法真正推断是什么情况导致了问题(如果它导致了任何问题),因为发生这种情况的移动和步骤未知。
因此,我正在寻找一种方法,在每次移动后显示我的预期分数(来自“ScoreConsistencyCheck”),以便我可以将其与OptaPlanner进行比较,并找到计算中遗漏的案例。要做到这一点,我需要一种方法,在每次移动后获得有效的解决方案。
经过一番搜索,我没能找到多少。然而,我发现在Optaplanner 7.0.0测试版中有一个记分验证器(使用Optaplanner 6.4.0),但情况是:
我的问题是:
我们有一个使用Drools规则的遗留Java/Spring项目。有什么方法可以在IntelliJ上调试规则文件,比如添加断点和单步执行规则逻辑?
我正在享受Optaplanner的旅程。Java不是我的“母语”,但令我惊讶的是(陡峭?)Optaplanner学习曲线 到目前为止,我得到了什么:我已经制作了一个带有必要类的项目。为了回答我的问题,我将简化为:一个类、一个类、一个类和类,我想在其中获得我完美的Opta计划时间表。 我的员工类有一个变量
我有一个java方法可以从所有不遵循给定首选项的TeamCalendar对象(pinned=true的规划实体)中创建constraintstream。 因此,我希望有一个约束流,表示每个部门存在多少这些差异。这是java代码: 在调试模式下运行时,第一个过滤器(tc- 我尝试了一些琐碎的选择: . groupBy(tc- 以及计数方法的替代方案: 。groupBy(TeamCalendar::g
嗨,我刚刚开始将OptaPlanner与drools结合使用。然而,我有两个问题。我相信这取决于我对语法的理解。 当我尝试实例化求解器时,以下规则会引发一个错误。 乘法10000是从双精度值到int的临时转换,我们还不知道它的语法。 该规则旨在计算分配有许多组件的纸张的腰围值。 该规则抛出以下错误。 任何解释都会有帮助。
我正在编写一项规则,以根据申诉的类别确定应接受的服务类型。 我写了一个jUnit联调来使用一个新创建的java对象来测试该规则,该对象名为“申诉DTO”。 我写了一个服务类来取消规则。 jUnit测试失败。 java.lang.NullPointerException在cm.grievance.rules.规则est.calculate资格(规则est.java:13) 我用KieContaine
我的要求是,触发第二条规则,然后停止进程而不触发第三条规则