Optaplanner 课程示例,curriculumCourseScoreRules.drl 的解释
Optaplanner Curriculum example, Explanation for curriculumCourseScoreRules.drl
我正在阅读 optaplanner 的课程示例,我似乎无法理解:
rule "conflictingLecturesSameCourseInSamePeriod"
when
// line 1
Lecture($leftId : id, $leftCourse : course, $period : period, period != null)
// line 2
Lecture(course == $leftCourse, period == $period, id > $leftId)
then
scoreHolder.addHardConstraintMatch(kcontext, -1);
end
问题是:
- 第 1 行中的 Lecture() 和第 2 行中的 Lecture 有什么区别?
- 我知道变量赋值发生在第 1 行,但在第 2 行,course
和 $leftCourse
、period
和 $period
以及 id
和$leftId
到目前为止,我似乎无法在文档中找到任何解释
$leftCourse : course
等绑定将 $leftCourse
建立为引用 Lecture
对象的字段 course
的变量。
第 1 行中的讲座由 id
标识;第 2 行中的一个具有更大的 ID。假设 id
值是主键,这个组合基本上匹配所有可能的无序对 Lectures,但是 ...
... 约束 course == $leftCourse
将配对限制为相同课程和 ...
...约束 period == $period
进一步将其限制为相等(非空)周期。
换句话说,计划排除了同一时期同一课程的两个不同讲座的作业。
我正在阅读 optaplanner 的课程示例,我似乎无法理解:
rule "conflictingLecturesSameCourseInSamePeriod"
when
// line 1
Lecture($leftId : id, $leftCourse : course, $period : period, period != null)
// line 2
Lecture(course == $leftCourse, period == $period, id > $leftId)
then
scoreHolder.addHardConstraintMatch(kcontext, -1);
end
问题是:
- 第 1 行中的 Lecture() 和第 2 行中的 Lecture 有什么区别?
- 我知道变量赋值发生在第 1 行,但在第 2 行,course
和 $leftCourse
、period
和 $period
以及 id
和$leftId
到目前为止,我似乎无法在文档中找到任何解释
$leftCourse : course
等绑定将 $leftCourse
建立为引用 Lecture
对象的字段 course
的变量。
第 1 行中的讲座由 id
标识;第 2 行中的一个具有更大的 ID。假设 id
值是主键,这个组合基本上匹配所有可能的无序对 Lectures,但是 ...
... 约束 course == $leftCourse
将配对限制为相同课程和 ...
...约束 period == $period
进一步将其限制为相等(非空)周期。
换句话说,计划排除了同一时期同一课程的两个不同讲座的作业。