Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Optaplanner'中设置正向软约束(奖励);课程XML文件_Java_Optaplanner - Fatal编程技术网

Java 如何在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" />

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

<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