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

Optaplanner-Drools规则列表列表成员?

方绪
2023-03-14

我正在享受Optaplanner的旅程。Java不是我的“母语”,但令我惊讶的是(陡峭?)Optaplanner学习曲线

到目前为止,我得到了什么:我已经制作了一个带有必要类的项目。为了回答我的问题,我将简化为:一个员工类、一个作业类、一个Skills类和时间表类,我想在其中获得我完美的Opta计划时间表。

我的员工类有一个变量List

我已经用一些虚拟数据初始化了。然后我运行以下规则:

rule "requiredSkills"
    when
        Employee($skills : skills)
        Job(reqskills not memberOf $skills)
    then
        scoreHolder.addHardConstraintMatch(kcontext, -1);
end

我认为(但在这里,流口水的曲线太陡了),这似乎是合乎逻辑的:如果员工的技能不是工作所需技能的一部分,那么这就是一个很难的限制。。

我的“计划”的结果总是:我输入的第一个员工作为虚拟数据链接到所有工作。。。

我的感觉是,与列表相比,使用memberOf不适用于列表。但我该如何解决这个问题,因为我的员工和我的工作都可能拥有/需要多种技能?


共有1个答案

康弘义
2023-03-14

我从不在OptaPlanner案例中使用drools构造not memberOf。也许是因为习惯,也许是因为它慢或脆弱)。

FWIW,这与optaweb员工排班中的技能要求非常相似,它只在DRL模式中使用普通java代码结构:

rule "Required skill for a shift"
    when
        Shift(
                employee != null,
                !getEmployee().hasSkills(getSpot().getRequiredSkillSet()))
    then
        scoreHolder.addHardConstraintMatch(kcontext, -100);
end
 类似资料:
  • 我是口水新手,我成功地创建了一个使用创建的规则的工作应用程序。我有一个简单的类,其中包含两个变量和。 我的规则实施为 如果用户为类型或语言插入一些奇怪的值,我有一个返回错误的特定规则。但最重要的是,我想知道是否可以返回插入规则中的所有可能变量的列表:例如和。

  • 我在试着处理drools中的列表。我正在传递一个请求,其中包含一个购买列表。我想做几个规则,包括检查大小是否正确,然后如果所有元素都相同,如果所有购买都经过授权。。。我有以下代码,但在使用列表时遇到了问题。这是正确的方法吗?尤其是在检查尺寸时?

  • 在为我的项目实现了一些规则之后,我做了一个“ScoreConsistencyCheck”,以确保规则得到了正确的实现。 表示实现我自己的方法,该方法将在我提前终止求解或通过配置终止后调用,输出预期分数。该方法的参数是一个实例,基于解决方案的状态计算预期分数,然后将其与来自解决方案实例的“分数”变量的分数进行比较。 当我使用时,它不会抛出异常,但是当我这样尝试时,我有时会在构建启发式或本地搜索的特定

  • 我有一个学生班,它有相关部门的列表。 我正在尝试用Drools编写规则。规则就像-如果一个学生属于某些部门,那么就采取行动。我无法找出正确的方法来做这件事。我在下面写的一个不起作用。我知道如果它的字符串列表有效。有没有办法在自定义对象上做包含。 终止 调用规则的代码 我正在使用Drools 6.2版本。

  • 我对口水有点陌生,我想在一个项目中了解更多,所以我在eclipse上用口水做了一个简单的程序。工作流程非常简单,我有一个珠宝产品模型,对于每件珠宝,我根据名称申请一个折扣。 这很好,但我确实希望看到事实列表,以及每个触发规则使用的事实。我有这个: 规则。日间行车灯 型号。Product.java 主要的DroolsTest。Java语言 输出: 我想要这样的东西: 有可能吗?我检查了Working

  • 想想有没有一种方法可以使用Drools API将drl文件转换为excel工作表? 我们目前使用的是Drools 5.3,但实际上可以使用任何版本。 提前感谢