问题标签 [drools-planner]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
220 浏览

drools - “交换搬家工厂”值得努力吗?

我注意到对于 Cloudbalancing 等问题,存在移动工厂来生成移动和交换。“移动移动”将云进程从一台计算机转移到另一台计算机。“交换移动”从它们各自的计算机交换任何两个进程。

我正在开发一个时间表应用程序。

  1. A subjectTeacherHour(学科和教师的组合) 只有 s 的一个子集Period可以分配给它们。如果 Jane 在一堂课上教了 6 个小时,则必须从该课程的可能 30 s 中为subjectTeacherHour每个课分配6 个 s ;不像 cloudbalance 示例,其中一个进程可以移动到任何计算机。PeriodPeriod
  2. 只有一个subjectTeacherHour可能被分配Period(自然)。

它试图放置subjectTeacherHour到符合条件的位置Periods,直到找到最佳组合。


优点

手册似乎推荐它。

...但是,正如巡回锦标赛的例子所证明的那样,如果您可以通过使用一组特定的大动作来消除硬约束,您就可以赢得性能和可扩展性...

... `[大动作的版本] 评估了很多不可行的解决方案,这使其能够超越和超越简单版本....

...通常使用多个选择器,混合细粒度移动和粗粒度移动是一个好主意:...

虽然只能subjectTeacher将一个分配给Period,但求解器必须暂时打破这种约束,以发现交换两个特定Period分配会导致更好的解决方案。这两个州之间的交换举动“消除了这堵砖墙”。

因此,交换行动可以帮助更快地产生更好的解决方案

缺点

AsubjectTeacher只有s 的一个子集Period它们可以被分配到。因此,在任何两个subjectTeachers之间找到相交(公共)小时有点困难(但可以以一种优雅的方式实现:从对象属性中找到重叠值的良好算法/技术?)。

它只会在时间和最优性方面给我带来很小的收益吗?

我还担心可能会导致两种动作的疯狂交互,导致陷入糟糕的解决方案。

0 投票
1 回答
662 浏览

drools - “not”关键字的概念意义;对象之间的评估

我试图在 Drools Planner 项目中找到一个BucketTotal最小的对象。total我从示例代码中改编了这个。

就我的推理而言,它的意思是“找到对象BucketTotal$b使得不存在另一个大于BucketTotal对象”。total total$b

事实证明,这意味着相反(我更正了它)。


请解释 Drools 如何找到该声明的原因$b

0 投票
1 回答
2821 浏览

drools - 将(标签)列表与另一个列表匹配并检测共同元素的存在

我的要求是匹配标签。在示例中,此特定HourConstraint 检查TeacherHour分配给Hour(23).

具体来说,它会检查TeacherHour.attributes["tags"]["asst_ct","teacher_john_smith"]检测至少一个 match,在这种情况下是两个 match (both "asst_ct"and "teacher_john_smith")。


问题:如何检测两个列表之间是否存在共同元素(真或假)?

Drools Expert 有memberOfand contains,但他们检查标量与集合,从不检查集合与集合。

我看到了两种可能的方式:

  1. 引入一个函数boolean isIntersecting(list,list)并告诉 Drools 使用它来进行真实性检查
  2. 实现TeacherHour.attributes[]为字符串而不是列表,以及HourConstraint.valueslist可以匹配该列表的正则表达式
0 投票
1 回答
345 浏览

drools-planner - 未初始化的计划值 [错误]

是否可以将具有未初始化计划值的计划实体设置为解决方案?

如果有可能,那怎么办?:)

请帮帮我:)

当我使用非空计划变量执行我的代码时,一切正常,但是当我在没有设置计划变量的情况下执行时,我有 [ Exception in thread "main" java.lang.NullPointerException]

这是我的代码:

// manList.add(null); // womanList.add(null);

// m.setMan(null); // m.setWoman(null); //m.setMan(manList.get(i)); //m.setWoman(womanList.get((i+j) % 10));

`

sovlerConfig-xml

0 投票
1 回答
241 浏览

jboss - 如何在 jboss as 上运行 drools planner 项目?

我有一个桌面应用程序,它使用 drools planner 为我的教师生成日程安排。现在我想把它放在服务器上。因此,当我在服务器上调用该方法来创建计划时,我有 ClassNotFound 异常:

如何将 Drools 库添加到我的 EAR?或者我必须包括一些罐子,哪些罐子?

提前致谢,

达科

0 投票
1 回答
326 浏览

drools - 选择一组三个不同的对象

Drools Planner 使用它来选择两个不同的对象,确保规则不会针对给定的一对对象触发两次。如果o1o2匹配,它只触发一次,而不是(o1,o2)两次(o2,01)

如何选择一组三个不同的对象?什么是好的选择标准?

0 投票
1 回答
202 浏览

drools - 我可以为 IntConstraintOccurrence 提供负值吗?

我想在我的应用程序中同时启用正负软约束。A +2 意味着权重为 2 的正约束,a -1 意味着权重 1 的负约束。我可以提供一个负值作为 aNEGATIVE_SOFT来暗示它是一个的软约束吗?


否则,我如何设置启用正负软约束,而无需插入单独的规则NEGATIVE_SOFTPOSITIVE_SOFT取决于值?

0 投票
1 回答
115 浏览

drools - 满足 x out of y 约束

我正在制作一个时间表程序,该程序SubjectTeacherPeriod计划实体)到Period. 有一种情况,我需要:“对于 y 个周期,至少 x 个SubjectTeacherPeriod必须匹配一个match_condition

例如,我想限制 3 个特定时期,其中至少两个由与 匹配的教师教授asst prof

这是持有这种约束的数据结构:

SubjectTeacherPeriodPeriod当然有


如何编写一个规则来评估列表Period中的单个s以检查分配给这些s 的x 个s 是否满足匹配条件?SubjectTeacherPeriodPeriod

如果我以错误的形式定义我的课程,请纠正我。

举个例子,这里有一个要评估以确定匹配的语句:eval(matches($stp_attrib,$match_condition))


如果混淆多于澄清,请抱歉使用伪代码。实际上是 List< String> ,因此SomeType匹配条件是用Collections.disjoint

0 投票
1 回答
103 浏览

drools - 如何将两个计划实体同步到一个值

我想在两个计划实体之间同步计划值。在这种情况下,我想让两个SubjecTeacherPeriod选择周期彼此“重合”,即使它们可能的值范围是不相交的。

例如Periods1106是兼容的,因为它们都是“星期一的第一个小时”。对于2和 也是如此107

s2我确实设置了在之后分配的计划实体难度s1(我看到了日志)。但是它们被分配了不兼容的值。并且系统永远不会在求解器操作结束时从此类错误中恢复。

我怎样才能让它们同步?


在我提到“兼容”和“重合”的地方,我的意思是Periods 有两个字段(星期几和星期顺序)相等。每个类(以及该类SubjectTeacherPeriod中每个可能的句点)都有单独Period的 s。

0 投票
1 回答
362 浏览

drools - 打破硬(或软)约束

就像问题说的那样。之后

我想查看违反的特定规则(带有值)。我怎样才能从解决方案中得到它们?