0

我有一个 Optaplanner drools 文件,当我运行以下代码时:

// ############################################################################
// Hard constraints
// ############################################################################

rule "DevCanOnlyDoOneTask"
when
    $T1:Task(assignedDev==$D)
    $T2:Task(assignedDev==$D)

    (($T2.getAllottedStartTime()<=$T1.getAllottedStartTime())&&($T1.getAllottedStartTime()<$T2.getAllottedStartTime()+$T2.getDuration()))||(($T1.getAllottedStartTime()<=$T2.getAllottedStartTime())&&($T2.getAllottedStartTime()<$T1.getAllottedStartTime()+$T1.getDuration())) //line 21

then
    scoreHolder.addHardConstraintMatch(kcontext,-1000);
end

// ############################################################################
// Soft constraints
// ############################################################################

rule "MaximiseEarliestFinishTime"
when
    $TA: TaskAssignment($EFT: getEFT())        

then
    scoreHolder.addSoftConstraintMatch(kcontext,+$TA.getEFT());

我收到以下错误消息(注意我已经评论了上面代码中相关的位置):

08:08:41.613 [main] ERROR o.d.c.k.b.impl.AbstractKieModule - Unable to build KieBaseModel:defaultKieBase
[21,36]: [ERR 102] Line 21:36 mismatched input '<=' in rule "DevCanOnlyDoOneTask"
[36,66]: [ERR 102] Line 36:66 mismatched input '<eof>' in rule "MaximiseEarliestFinishTime"
[0,0]: Parser returned a null Package

我认为我使用的语法存在根本性错误,但我发现很难确定到底是什么。

多谢你们

4

1 回答 1

0
Line 36:66 mismatched input '<eof>' in rule "MaximiseEarliestFinishTime"

所有规则都必须以关键字结尾end

至于第 21 行,要么eval在它周围加上一个(有关更多信息,请参阅 drools 文档),或者更好的是,将这些限制作为$T2:Task. 此外,$Din$T1:Task还不存在,因此您可能想要定义它(绑定它)而不是==比较它。

于 2014-04-16T07:48:49.140 回答