gpt4 book ai didi

java - 基于时间运算符的累加/收集

转载 作者:行者123 更新时间:2023-12-01 09:35:25 27 4
gpt4 key购买 nike

我正在尝试编写一个基于时间运算符收集/累积值的规则。

rule "Zone6 Overlap"
when
$i1 : Instance ($e1 : event == " Vel : 20.99-23.98 km/h : " && $name1 : name) from entry-point "Stream"
$i2 : Instance ($e2 : event && $name2 : name && $e2 == $e1 && $name2 != $name1
&& this overlaps $i1) from entry-point "Stream"
then
System.out.println("** Overlap Event: Velocity Zone 6 ** \nPlayer1: " + $i1.getName() + "\nPlayer2: "
+ $i2.getName() + "\nEvent: " + $i1.getEvent() + "\n" + "Start Time (P1): "
+ $i1.getStart() + " - End Time: " + $i1.getEnd() + "\nStart Time (P2): "
+ $i2.getStart() + " - End Time: " + $i2.getEnd() + "\n");
end

这是我最初的规则,它设法获得两个持续时间的重叠。

我想要创建的规则的想法是看看足球比赛中球员的持续时间是否存在集体重叠。我想查看场上最多 9 名球员中是否有任何人以事件变量中指定为字符串的速度范围行进,并且这些速度同时全部重叠。

我已经尝试了一些有关累积和收集的方法,但在这些事件发生时如何收集这些事件并将它们返回到规则的右侧以便将它们打印到标准输出方面遇到了困难。

请帮忙。

谢谢。

最佳答案

应该可以创建一个规则来满足您的要求,但我认为您需要了解 Drools 中 overlaps 关键字的确切定义:

The overlaps evaluator correlates two events and matches when the current event starts before the correlated event starts and finishes after the correlated event starts, but before the correlated event finishes. In other words, both events have an overlapping period.

这意味着它不会匹配任何任意重叠,但前提是一个事件既在另一个事件开始之前开始,又在该事件结束之前结束。假设我们有以下 3 个事件:

A [11:19:00-11:19:30]
B [11:19:15-11:19:45]
C [11:19:20-11:19:40]

在这种情况下,A 在 B 和 C 之前开始,并且也在两者之前结束。这意味着 A 与 B 和 C 重叠。但是,B 不与 C 重叠,因为它在 C 之前开始,但在 C 之后结束。有关每个可用运算符的完整定义,请参阅 Drools fusion documentation .

如果符合您的用例,以下规则将收集与给定事件重叠的所有事件:

rule "Overlap"
when
$i1 : Instance ($e1 : event == "some event" )
$instances : List( size > 0 ) from collect ( Instance ( event == $e1, this != $i1,
this overlappedby $i1 ) )
then
System.out.println("** Overlap Event for: " + $i1.getName());
for (int i = 0; i < $instances.size(); i++) {
System.out.println("Overlaps: " + ((Instance)$instances.get(i)).getName());
}
end

正如您所看到的,它使用了overlappedby关键字,它是overlaps的反义词。

关于java - 基于时间运算符的累加/收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38998500/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com