java - 如何使用 OptaPlanner 和 Spring Boot 降低 SoftScore?

标签 java spring-boot drools optaplanner

我正在尝试在我的 .drl 文件中指定软约束规则。它应该从 PlanningSolution(Schedule 类)获取两个参数,然后用这些参数执行 Java 函数。遗憾的是,代码似乎没有被执行(即使我用普通的 -10 替换函数调用 getBlockNumberDifference ,也没有修改 SoftScore)。有人可以解决这个问题吗?

我有另一个规则,指定一个 HardConstraint,它也使用一个工作得很好的函数调用。

规划解决方案:

@PlanningSolution
public class Schedule {
    private Semester semester;

    @PlanningEntityCollectionProperty
    public List<Lecture> getLectureList() {
        return lectureList;
    }

    public void setLectureList(List<Lecture> lectureList) {
        this.lectureList = lectureList;
    }

    public Semester getSemester() {
        return semester;
    }

    public void setSemester(Semester semester) {
        this.semester = semester;
    }
}

规则:

import function  (...).getBlockNumberDifference;

//...

rule "rule"
    when
        Schedule ( $s : semester != null && $l : lectureList != null)
    then
        scoreHolder.addSoftConstraintMatch(kcontext, getBlockNumberDifference($l, $s));
end

测试:

public static int getBlockNumberDifference(List<Lecture> lectureList, Semester semester) {
        System.out.println("Calling Block number Difference " + lectureList.size() + " and " + semester.getBezeichnung());
        return -1;
}

我在版本 7.9.0 中使用 OptaPlanner 以及 Spring Boot 和 Java 8。

最佳答案

规划解决方案未插入 Drools IIRC 的工作内存中,因此该规则的 LHS(when 侧)永远不会匹配。

我在这一点上可能是错的 - 为了证明这一点,将其设置为 when Schedule() then System.out.println("not in wm");end 并看看您是否看到它出现。

关于java - 如何使用 OptaPlanner 和 Spring Boot 降低 SoftScore?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56701763/

相关文章:

java - 获取大量 `PrematureCloseException : Connection prematurely closed BEFORE response`

java - 将消息从 C++ 记录到 Java

java - Hibernate 为 OrderColumn 值插入 null

java - 我应该在哪里运行自定义 SQL 以在 Spring Boot 中的数据库中创建枚举类型?

java - 为什么我从 hello world SpringBoot 收到 WhiteLabel 错误?

java - Drools 集成与传统方式

java - 从 GestureOverlayView 生成位图

angular - 无法使用 Spring Security 5 注销

hibernate - 可能会对存储在关系数据库中的数据流口水(例如使用 HIbernate)

drools - 无法创建构造函数::Kie Workbench