当前位置: 首页 > 知识库问答 >
问题:

OptaPlanner Drools实现错误

元景天
2023-03-14

嗨,我刚刚开始将OptaPlanner与drools结合使用。然而,我有两个问题。我相信这取决于我对语法的理解。

当我尝试实例化求解器时,以下规则会引发一个错误。

//Soft constraints
rule "waistedArea"
    when
        $sheet : Sheet($area: (area * 10000))
        $usedAreaTotal : Number (intValue > 0 && intValue < $area ) from accumulate(
            Part(
                    sheet == $sheet,
                    $usedArea : requiredArea * 10000
                ),
            sum($usedArea)
        ) 
        $waste : ($area - $usedAreaTotal)
        eval($waste > 0)
     then
        insertLogical(new IntConstraintOccurrence("waistedArea", constraintType.NEGATIVE_SOFT, $waste,$sheet)
    end

乘法10000是从双精度值到int的临时转换,我们还不知道它的语法。

该规则旨在计算分配有许多组件的纸张的腰围值。

该规则抛出以下错误。

Message [id=1, level=ERROR, path=optaplanner-kie-namespace//Resources/DRLRools
/NestingRules.drl, line=71, column=0
   text=[ERR 102] Line 71:24 mismatched input '-' in rule "waistedArea"]
Message [id=2, level=ERROR, path=optaplanner-kie-namespace//Resources/DRLRools
/NestingRules.drl, line=0, column=0
   text=Parser returned a null Package]

任何解释都会有帮助。

共有1个答案

龙俊英
2023-03-14

您不能编写它,因为它不是“条件元素”:

$waste : ($area - $usedAreaTotal)

这就足够了:

eval($area > $usedAreaTotal)

我看不出有什么好的理由乘以10000——最后,您比较两个值,乘以10000不会改变关系。Number还有douleValue()

而且:它被称为浪费-腰部是你的皮带所在的地方:-)

 类似资料:
  • 问题内容: 最近,在运行Protractor测试时,我们已经开始在控制台上收到以下警告: 感觉它们是随机发生的,但不影响测试执行。 唯一的问题是它们污染了输出控制台,从而使跟踪茉莉花/量角器报告的正在执行的测试和测试结果变得更加困难。 有没有办法关闭这种警告? 使用量角器5.2.2,ChromeDriver 2.34。 我们发现此标志可以传递给可执行文件,但找不到启动chromedriver时配置

  • 问题内容: 有人在说我必须实施OnFragmentInteractionListener,这是一个错误,但是据我所知我正确地实现了它。任何帮助将不胜感激。 主要活动 导航片段 内容片段 错误 问题答案: 两者中的接口都包含一个具有相同签名的方法,并且正在实现一种方法来尝试覆盖这两个接口。 更改一个或两个方法的签名,然后在中实现两个方法。例如: 导航片段 内容片段 主要活动

  • 我很难协调以下文件中的内容: 当我尝试编译它时,我得到以下错误消息: 这很好,所以这意味着我应该能够通过明确指定财产权的对象类型来绕过这个问题? 除了现在的问题之外,当我使用编译时,我会收到以下错误消息: 似乎不管我做什么,我都会输,因为如果我小心界面上的类型规格并拼出所有内容,那么我就不能将实现专门化为只有1种类型。问题是有文件正是这样做的,如果我想让编译器找到所有的类型,因为我想尽可能显式,我

  • 我目前正在开发一个trie实现: 从文本文件中读取单词 逐个字符迭代该单词 将字符的按字母顺序排列的索引号附加到新节点并附加到根节点 我在第三步遇到了麻烦。 你看,我在第三步尝试做的是: null 对于第3步,我已经做了: 它设置root以便它现在是下一个节点 我在这些陈述中犯了什么逻辑错误吗?

  • 问题内容: 我在选择带有角度的元素时遇到困难。我一定在犯一些愚蠢的错误: 导致的错误: 转载于此小提琴 我究竟做错了什么?我包括了jQuery。这不行吗? 问题答案: 这是因为jquery需要 在 angular 之前 引用。JSFiddle先注册了Angular 1.0.2,然后将您添加为资源的jQuery版本注册了。 这样,Angular知道可以使用JQuery而不使用JQLite。完成此操作

  • 我正试图让OpenCV在我的Ubuntu机器上使用Python。我已经下载并安装了OpenCV,但是当我尝试运行以下python代码时(应该从网络摄像头捕获图像并将其推送到屏幕上) 我得到以下错误: 所以我按照他们的要求去做:安装软件包,移动到我安装OpenCV的文件夹,然后运行 但是当我试图运行python时,它会给我同样的错误。我是不是漏了什么?