问题标签 [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.
drools - “交换搬家工厂”值得努力吗?
我注意到对于 Cloudbalancing 等问题,存在移动工厂来生成移动和交换。“移动移动”将云进程从一台计算机转移到另一台计算机。“交换移动”从它们各自的计算机交换任何两个进程。
我正在开发一个时间表应用程序。
- A
subjectTeacherHour
(学科和教师的组合) 只有 s 的一个子集,Period
可以分配给它们。如果 Jane 在一堂课上教了 6 个小时,则必须从该课程的可能 30 s 中为subjectTeacherHour
每个课分配6 个 s ;不像 cloudbalance 示例,其中一个进程可以移动到任何计算机。Period
Period
- 只有一个
subjectTeacherHour
可能被分配Period
(自然)。
它试图放置subjectTeacherHour
到符合条件的位置Periods
,直到找到最佳组合。
优点
手册似乎推荐它。
...但是,正如巡回锦标赛的例子所证明的那样,如果您可以通过使用一组特定的大动作来消除硬约束,您就可以赢得性能和可扩展性...
... `[大动作的版本] 评估了很多不可行的解决方案,这使其能够超越和超越简单版本....
...通常使用多个选择器,混合细粒度移动和粗粒度移动是一个好主意:...
虽然只能subjectTeacher
将一个分配给Period
,但求解器必须暂时打破这种约束,以发现交换两个特定Period
分配会导致更好的解决方案。这两个州之间的交换举动“消除了这堵砖墙”。
因此,交换行动可以帮助更快地产生更好的解决方案。
缺点
AsubjectTeacher
只有s 的一个子集,Period
它们可以被分配到。因此,在任何两个subjectTeacher
s之间找到相交(公共)小时有点困难(但可以以一种优雅的方式实现:从对象属性中找到重叠值的良好算法/技术?)。
它只会在时间和最优性方面给我带来很小的收益吗?
我还担心可能会导致两种动作的疯狂交互,导致陷入糟糕的解决方案。
drools - “not”关键字的概念意义;对象之间的评估
我试图在 Drools Planner 项目中找到一个BucketTotal
最小的对象。total
我从示例代码中改编了这个。
就我的推理而言,它的意思是“找到对象BucketTotal
,$b
使得不存在另一个大于的BucketTotal
对象”。total
total
$b
事实证明,这意味着相反(我更正了它)。
请解释 Drools 如何找到该声明的原因$b
。
drools - 将(标签)列表与另一个列表匹配并检测共同元素的存在
我的要求是匹配标签。在示例中,此特定HourConstraint
检查TeacherHour
分配给Hour(23)
.
具体来说,它会检查TeacherHour.attributes["tags"]
值["asst_ct","teacher_john_smith"]
并检测至少一个 match,在这种情况下是两个 match (both "asst_ct"
and "teacher_john_smith"
)。
问题:如何检测两个列表之间是否存在共同元素(真或假)?
Drools Expert 有memberOf
and contains
,但他们检查标量与集合,从不检查集合与集合。
我看到了两种可能的方式:
- 引入一个函数
boolean isIntersecting(list,list)
并告诉 Drools 使用它来进行真实性检查 - 实现
TeacherHour.attributes[]
为字符串而不是列表,以及HourConstraint.valueslist
可以匹配该列表的正则表达式
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
jboss - 如何在 jboss as 上运行 drools planner 项目?
我有一个桌面应用程序,它使用 drools planner 为我的教师生成日程安排。现在我想把它放在服务器上。因此,当我在服务器上调用该方法来创建计划时,我有 ClassNotFound 异常:
如何将 Drools 库添加到我的 EAR?或者我必须包括一些罐子,哪些罐子?
提前致谢,
达科
drools - 选择一组三个不同的对象
Drools Planner 使用它来选择两个不同的对象,确保规则不会针对给定的一对对象触发两次。如果o1
和o2
匹配,它只触发一次,而不是(o1,o2)
两次(o2,01)
。
如何选择一组三个不同的对象?什么是好的选择标准?
drools - 我可以为 IntConstraintOccurrence 提供负值吗?
我想在我的应用程序中同时启用正负软约束。A +2 意味着权重为 2 的正约束,a -1 意味着权重 1 的负约束。我可以提供一个负值作为 aNEGATIVE_SOFT
来暗示它是一个正的软约束吗?
否则,我如何设置启用正负软约束,而无需插入单独的规则NEGATIVE_SOFT
并POSITIVE_SOFT
取决于值?
drools - 满足 x out of y 约束
我正在制作一个时间表程序,该程序从(SubjectTeacherPeriod
计划实体)到Period
. 有一种情况,我需要:“对于 y 个周期,至少 x 个SubjectTeacherPeriod
必须匹配一个match_condition
”
例如,我想限制 3 个特定时期,其中至少两个由与 匹配的教师教授asst prof
。
这是持有这种约束的数据结构:
SubjectTeacherPeriod
Period
当然有
如何编写一个规则来评估列表Period
中的单个s以检查分配给这些s 的x 个s 是否满足匹配条件?SubjectTeacherPeriod
Period
如果我以错误的形式定义我的课程,请纠正我。
举个例子,这里有一个要评估以确定匹配的语句:eval(matches($stp_attrib,$match_condition))
如果混淆多于澄清,请抱歉使用伪代码。实际上是 List< String> ,因此SomeType
匹配条件是用Collections.disjoint
drools - 如何将两个计划实体同步到一个值
我想在两个计划实体之间同步计划值。在这种情况下,我想让两个SubjecTeacherPeriod
选择周期彼此“重合”,即使它们可能的值范围是不相交的。
例如Period
s1
和106
是兼容的,因为它们都是“星期一的第一个小时”。对于2
和 也是如此107
。
s2
我确实设置了在之后分配的计划实体难度s1
(我看到了日志)。但是它们被分配了不兼容的值。并且系统永远不会在求解器操作结束时从此类错误中恢复。
我怎样才能让它们同步?
在我提到“兼容”和“重合”的地方,我的意思是Period
s 有两个字段(星期几和星期顺序)相等。每个类(以及该类SubjectTeacherPeriod
中每个可能的句点)都有单独Period
的 s。
drools - 打破硬(或软)约束
就像问题说的那样。之后
我想查看违反的特定规则(带有值)。我怎样才能从解决方案中得到它们?