Java 如何在Optaplanner'中设置正向软约束(奖励);课程XML文件
我们在OptaPlanner的XML文件中为课程问题添加了负软约束,如Java 如何在Optaplanner'中设置正向软约束(奖励);课程XML文件,java,optaplanner,Java,Optaplanner,我们在OptaPlanner的XML文件中为课程问题添加了负软约束,如 <unavailablePeriodPenaltyList id="737"> <UnavailablePeriodPenalty id="738"> <id>0</id> <course reference="66" /> <period reference="678" />
<unavailablePeriodPenaltyList id="737">
<UnavailablePeriodPenalty id="738">
<id>0</id>
<course reference="66" />
<period reference="678" />
</UnavailablePeriodPenalty>
</unavailablePeriodPenaltyList>
0
但如何在xml文件中加入正向软约束来解决课程问题呢
哪个XML标记用于此目的
积极的软约束示例:教师B喜欢在周一上午授课开箱即用,课程示例只支持一些约束(完整列表见文档)。你提到的一个新的不是其中的一部分。但是很容易添加(假设您是Java程序员):
- XML中的条目只是特定实例的数据
- 该数据在示例中被加载并表示为名为的域对象
- 将基于该域对象添加约束
// 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域对象(也在
课程课程计划中为其添加列表)
- XML元素
- 以及奖励它的分数规则
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