我们在OptaPlanner的XML文件中添加了负面的软约束,用于课程课程问题,比如
<unavailablePeriodPenaltyList id="737">
<UnavailablePeriodPenalty id="738">
<id>0</id>
<course reference="66" />
<period reference="678" />
</UnavailablePeriodPenalty>
</unavailablePeriodPenaltyList>
但如何在xml文件中为课程课程问题添加积极的软约束?
使用哪个XML标记?
积极的软约束例子:B老师喜欢在星期一早上教学
答案 0 :(得分:1)
开箱即用,课程表示例仅支持许多约束(请参阅完整列表的文档)。你提到的一个新的不是其中的一部分。但它很容易添加(假设你是一个Java程序员):
XML中的条目只是特定实例的数据。
该数据已加载并在示例中表示为名为UnavailablePeriodPenalty.java的域对象。
curriculumCourseScoreRules.drl根据该域对象添加约束。
以下是该得分规则的样子:
// Availabilities: Each lecture in a period unavailable for that course.
rule "unavailablePeriodPenalty"
when
$unavailablePeriodPenalty : UnavailablePeriodPenalty($course : course, $period : period)
$lecture : Lecture(course == $course, period == $period)
then
scoreHolder.addHardConstraintMatch(kcontext, -1);
end
同样,您可以定义:
一个FavoritePeriodReward.java域对象(也在CurriculumCourseSchedule
中为它添加一个列表)
XML元素<FavoritePeriodReward>
以及奖励它的分数规则。
例如:
rule "FavoritePeriodReward"
when
$reward : FavoritePeriodReward($teacher : teacher, $period : period)
$lecture : Lecture(teacher == $teacher, period == $period)
then
scoreHolder.addHardConstraintMatch(kcontext, 1); // +1 instead of -1
end