0

我们在 OptaPlanner 的 XML 文件中为课程问题添加了负软约束,例如

<unavailablePeriodPenaltyList id="737">
    <UnavailablePeriodPenalty id="738">
            <id>0</id>
            <course reference="66" />
            <period reference="678" />
    </UnavailablePeriodPenalty>
</unavailablePeriodPenaltyList>

但是如何在 xml 文件中为课程问题添加正软约束?

哪个 XML 标记用于此目的?

正向软约束示例:B老师喜欢在星期一早上上课

4

1 回答 1

1

开箱即用的课程课程示例仅支持许多约束(请参阅文档以获取完整列表)。你提到的一个新的不是其中的一部分。但是很容易添加(假设您是 Java 程序员):

  • XML 中的条目只是特定实例的数据。

  • 该数据在示例中被加载并表示为名为UnavailablePeriodPenalty.java的域对象。

  • courseCourseScoreRules.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
于 2013-10-05T15:25:10.183 回答