gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:08:53 24 4
gpt4 key购买 nike

我正在尝试在我的 .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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com