首页> 中国专利> 从动态物理模型自动生成复杂工程系统的控制决策逻辑

从动态物理模型自动生成复杂工程系统的控制决策逻辑

摘要

在工程系统预测的可能的输入值组合之上迭代,对于可能的输入值组合,包括:为可能的输入值组合选择将在工程系统上执行的动作,包括:通过评估与工程系统相关联的目标函数并且使用可能的输入值组合和对应的多个动作,对工程系统的多个预测执行评分。从对应的多个动作中选择动作,所述选择至少部分基于所述多个预测的评分。生成规则——该规则指定当可能的输入值组合匹配时满足的对应的一个或多个规则条件集,以及与该规则相关联的对应动作作为所选动作。输出所生成的规则集以存储或进一步处理。

著录项

  • 公开/公告号CN114981733A

    专利类型发明专利

  • 公开/公告日2022-08-30

    原文格式PDF

  • 申请/专利权人 奥普塔姆软件股份有限公司;

    申请/专利号CN202180011307.X

  • 发明设计人 D·R·切里顿;

    申请日2021-01-22

  • 分类号G05B13/04(2006.01);G06G7/48(2006.01);G06N3/08(2006.01);G06N7/00(2006.01);

  • 代理机构中国专利代理(香港)有限公司 72001;中国专利代理(香港)有限公司 72001;

  • 代理人任一方;周学斌

  • 地址 美国加利福尼亚州

  • 入库时间 2023-06-19 16:34:57

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-09-16

    实质审查的生效 IPC(主分类):G05B13/04 专利申请号:202180011307X 申请日:20210122

    实质审查的生效

说明书

其他申请的交叉引用

本申请要求2020年1月30日提交的题为“AUTOMATIC GENERATION OF CONTROLDECISION LOGIC FOR COMPLEX ENGINEERED SYSTEMS FROM DYNAMIC PHYSICAL MODEL”的申请号为62/968,019的美国临时专利申请的优先权,该美国临时专利申请出于所有目的通过引用并入本文。

背景技术

计算机逻辑难以控制复杂系统。自动驾驶汽车和自动驾驶飞机将是重要和有用的,例如,减少劳动力支出,增强人类安全,以及将受伤的所有者运送到更靠近医疗设施。然而,汽车和飞机操作的物理环境使得用数字逻辑替换人类飞行员和驾驶员具有挑战性。

诸如交通工具道路之类的动态环境为自动导航呈现了巨大的复杂性集合。目前,生成可以有效地全力应对这些复杂性的控制决策逻辑具有挑战性。由于诸如处理能力、内存、存储和网络资源之类的计算资源的成本和/或在等待时间和/或吞吐量方面的慢响应,这些复杂性引起问题。

附图说明

本发明的各种实施例在以下详细描述和附图中公开。

图1是图示根据一些实施例的用于自动规则生成的编程计算机/服务器系统的功能图解。

图2是图示控制系统实施例的框图。

图3是图示基于规则的系统实施例的框图。

图4是反应式规则引擎实施例的图示。

图5是受监视系统中反应式规则引擎的实施例的图示。

图6是自主交通工具应用示例中的航道的图示。

图7A、图7B和图7C图示了用于股票交易的分级航道的示例。

图7D图示了用于医疗应用的分级航道的示例。

图8是用于自主交通工具示例的航道机动的图示。

图9是图示控制系统流水线分区实施例的框图。

图10是图示自动生成用于控制系统的控制决策逻辑的过程实施例的流程图。

图11是图示对可能的输入值组合进行迭代的过程实施例的流程图。

图12是图示为可能的输入值组合选择将在工程系统上执行的动作的过程实施例的流程图。

图13是图示迭代选择动作的过程实施例的流程图。

具体实施方式

本发明可以用众多方式实现,包括作为过程;装置;系统;物质的组成;体现在计算机可读存储介质上的计算机程序产品;和/或处理器,诸如被配置为执行存储在耦合到处理器的存储器上和/或由耦合到处理器的存储器提供的指令的处理器。在本说明书中,这些实现或者本发明可以采取的任何其他形式可以被称为技术。一般而言,在本发明的范围内,所公开过程的步骤次序可以变更。除非另有说明,否则被描述为被配置为执行任务的诸如处理器或存储器的部件可以被实现为被临时配置为在给定时间执行任务的通用部件,或者被制造成执行该任务的特定部件。如本文使用的,术语“处理器”指代被配置为处理诸如计算机程序指令的数据的一个或多个设备、电路和/或处理核心。

下文提供了本发明一个或多个实施例的详细描述,连同图示本发明原理的附图。结合这样的实施例描述了本发明,但是本发明不限于任何实施例。本发明的范围仅由权利要求书限定,并且本发明包含众多替代、修改和等同物。为了提供对本发明的透彻理解,在以下描述中阐述了众多具体细节。这些细节是出于示例的目的而提供的,并且本发明可以在没有这些具体细节中的一些或全部的情况下根据权利要求书来实践。出于清楚的目的,没有详细描述与本发明相关的技术领域中已知的技术材料,以免不必要地模糊本发明。

公开了从动态物理模型自动生成用于复杂工程系统的控制决策逻辑。如本文使用的,工程系统指代已经被工程化以向人类操作员(例如汽车或飞机的工程师)提供可预测行为的系统。作为使这些工程系统工程化的一部分,动态物理模型可以产生可接受和可预测的行为。公开了在逻辑的自动生成中利用用于综合这些工程系统的动态物理模型来控制这些相同的系统。

在一些实施例中,动态物理模型包括例如飞行模拟器的数字模拟包,并且可以包括捕获设计要求的目标函数,该目标函数给出结果有多优选的定量指示。公开了使用模拟器和目标函数来自动生成逻辑以进行控制。

公开了使用离散化对控制决策逻辑的自动生成进行细化。例如,虽然数字计算机具有将空速设置到例如300.0节、300.1节、300.2节之类的极高精度的能力,但是人类飞行员不一定以这样的精度使飞机飞行,并且随后飞机的工程系统允许飞行员以低得多的精度进行稳定飞行的目标。使用离散化将该精度降低许多数量级——例如以包括滑行速度(~50节)、起飞速度(~500节)和巡航速度(~350节)在内的少量速度使飞机飞行——可能足以进行重要领航场景的控制。

公开了使用流水线阶段对控制决策逻辑的自动生成进行细化。例如,从家驾驶汽车到剧院可以体现不同的目标。流水线分区可以解决这些目标中的每一个:确定当前交通拥堵和高速公路关闭以确定所选路径的长期/战略目标;用于沿着所选的路径行驶并且处理路障、交通堵塞或紧急交通工具的短期/战术目标;以及用于避免孩子在车流中突然冲出或卡车突然超车的近乎即时/具响应性的目标。

公开了使用删减(prune)函数对控制决策逻辑的自动生成进行细化。对于人类操作员而言,可能存在可以看起来无关或“愚蠢”的控制系统逻辑,以考虑哪一个可以用这样的删减函数来删减。例如,如果传感器检测到飞机在期望的高度以下飞行,则包括将升降舵降低一点、将升降舵降低很多以及将升降舵降低最大量的控制变量全部将降低飞机的机头并且进一步降低高度,并且因此可以被删减而无需进一步考虑。

图1是图示根据一些实施例的用于自动规则生成的编程计算机/服务器系统的功能图解。如所示出的,图1提供了根据一些实施例的为自动规则生成而编程的通用计算机系统的功能图解。如将清楚的,其他计算机系统架构和配置可以用于自动规则生成。

包括如下所述各种子系统的计算机系统100包括至少一个微处理器子系统,其也被称为处理器或中央处理单元(“CPU”)(102)。例如,处理器(102)可以由单芯片处理器或多核和/或处理器来实现。在一些实施例中,处理器(102)是控制计算机系统100的操作的通用数字处理器。使用从存储器(110)检索的指令,处理器(102)控制输入数据的接收和操纵以及数据在输出设备上的输出和显示,所述输出设备例如是显示和图形处理单元(GPU)(118)。

处理器(102)与存储器(110)双向耦合,该存储器(110)可以包括第一主存储区——通常为随机存取存储器(“RAM”),以及第二主存储区——通常为只读存储器(“ROM”)。如本领域中公知的,主存储装置可以用作通用存储区域和高速暂存(scratch-pad)存储器,并且还可以用于存储输入数据和经处理的数据。除了用于在处理器(102)上操作的过程的其他数据和指令之外,主存储装置还可以以数据对象和文本对象的形式存储编程指令和数据。还如本领域中公知的,主存储装置通常包括由处理器(102)用来执行其功能的基本操作指令、程序代码、数据和对象,例如编程指令。例如,取决于例如数据访问需要双向还是单向,主存储设备(110)可以包括任何合适的计算机可读存储介质,如下所述。例如,处理器(102)还可以直接并且非常快速地检索频繁需要的数据并将其存储在高速缓冲存储器(未示出)中。处理器(102)还可以包括协处理器(未示出),作为帮助处理器和/或存储器(110)的补充处理部件。

可移动大容量存储设备(112)为计算机系统100提供附加的数据存储容量,并且双向(读/写)或单向(只读)耦合到处理器(102)。例如,存储装置(112)还可以包括计算机可读介质,诸如闪存、便携式大容量存储设备、全息存储设备、磁设备、磁光设备、光学设备和其他存储设备。固定大容量存储装置(120)也可以例如提供附加的数据存储容量。大容量存储装置(120)的一个示例是eMMC或microSD设备。在一个实施例中,大容量存储装置(120)是由总线(114)连接的固态驱动器。大容量存储装置(112)、(120)通常存储由处理器(102)通常不主动使用的附加编程指令、数据等。将领会,如果需要,则大容量存储装置(112)、(120)内保存的信息可以以标准方式作为主存储装置(110)的一部分被并入,例如RAM作为虚拟存储器。

除了为处理器(102)提供对存储子系统的访问,总线(114)还可以用于提供对其他子系统和设备的访问。如所示出的,这些可以包括显示监视器(118)、通信接口(116)、触摸(或物理)键盘(104)以及一个或多个辅助输入/输出设备(106),一个或多个辅助输入/输出设备(106)包括音频接口、声卡、麦克风、音频端口、音频记录设备、声卡、扬声器、触摸(或指向)设备和/或如需要的其他子系统。除了触摸屏和/或电容式触摸界面之外,辅助设备(106)可以是鼠标、触笔、轨迹球或输入板,并且对于与图形用户界面交互有用。

通信接口(116)允许处理器(102)使用如所示的网络连接耦合到另一个计算机、计算机网络或电信网络。例如,通过通信接口(116),处理器(102)可以从另一个网络接收信息——例如数据对象或程序指令,或者在执行方法/过程步骤的过程中向另一个网络输出信息。通常被表示为将在处理器上执行的指令序列的信息可以从另一个网络接收并输出到另一个网络。接口卡或类似设备以及由处理器(102)实现(例如在处理器(102)上实行/执行)的适当软件可以用于将计算机系统100连接到外部网络,并根据标准协议传送数据。例如,本文公开的各种过程实施例可以在处理器(102)上实行,或者可以结合共享一部分处理的远程处理器跨诸如因特网、内联网或局域网之类的网络之上执行。贯穿本说明书,“网络”指代计算机部件之间的任何互连,包括因特网、蓝牙、WiFi、3G、4G、4GLTE、GSM、以太网、TCP/IP、内联网、局域网(“LAN”)、家庭局域网(“HAN”)、串行连接、并行连接、广域网(“WAN”)、光纤通道、PCI/PCI-X、AGP、VLbus、PCI Express、Expresscard、Infiniband、ACCESS.bus、无线LAN、HomePNA、光纤、G.hn、红外网络、卫星网络、微波网络、蜂窝网络、虚拟专用网(“VPN”)、通用串行总线(“USB”)、火线、串行ATA、1线、UNI/O或者任何形式的同质、异构系统和/或系统组连接在一起。未示出的附加大容量存储设备也可以通过通信接口(116)连接到处理器(102)。

辅助I/O设备接口(未示出)可以与计算机系统100结合使用。辅助I/O设备接口可以包括通用和定制的接口,其允许处理器(102)发送和更典型地接收来自其他设备的数据,所述其他设备诸如是麦克风、触敏显示器、换能器读卡器、磁带读卡器、语音或手写识别器、生物测定读取器、相机、便携式大容量存储设备和其他计算机。

此外,本文公开的各种实施例进一步涉及具有计算机可读介质的计算机存储产品,其包括用于执行各种计算机实现的操作的程序代码。计算机可读介质是可以存储数据的任何数据存储设备,该数据随后可以被计算机系统读取。计算机可读介质的示例包括但不限于以上提及的所有介质:闪存介质,诸如NAND闪存、eMMC、SD、压缩闪存;磁介质,诸如硬盘、软盘和磁带;光学介质,诸如CD-ROM盘;磁光介质,诸如光盘;以及专门配置的硬件设备,诸如专用集成电路(“ASIC”)、可编程逻辑器件(“PLD”)以及ROM和RAM设备。程序代码的示例包括例如由编译器所产生的机器代码或者包含更高级代码的文件(例如可以使用解释器执行的脚本)二者。

图1中所示的计算机/服务器系统仅为适合与本文公开的各种实施例一起使用的计算机系统的示例。适合用于这样的用途的其他计算机系统可以包括附加或更少的子系统。此外,总线(114)是服务于链接子系统的任何互连方案的说明。也可以利用具有不同子系统配置的其他计算机架构。

本文所述的工程系统被设计为根据动态物理模型操作。例如,制冷系统通过通常的制冷原理操作,简单地陈述为:运行压缩机通过将其热量转移出去而逐渐降低制冷空间中的温度。许多工程系统是模拟系统,因为现实世界是连续的。制冷是示例,因为由压缩机产生的温度和压力是连续值。

这样的系统的工程需要提供具有已知能力和功率要求的部件。因此,对于给定的待冷却空间和给定的制冷系统,如果其来自外部环境的热增益特性和起始温度是已知的,则可以使用计算机模拟来接收一个或多个输入,并以一定水平的准确度来预测制冷压缩机在给定时间段T内运行的效果。本质上,工程系统可能需要动态物理模型,该动态物理模型允许依据动态容量和资源要求二者来预测其性能。否则,系统可能不具有可预测的性能和成本,这在大多数应用中是不可接受的。

工程系统也可以具有目标函数,例如其正在多好地实现其期望的目标/设计要求的测量。在制冷系统的示例情况下,非正式地,目标函数是多好地以最小量的能量和设备上的磨损将温度维持在指定范围内和/或为制冷空间内的人类或其他物品提供最大舒适度的测量。作为工程系统设计的一部分,通常要具有目标函数并且开发动态物理模型,该动态物理模型通常作为计算机模拟与设计相对应并且然后评估其相对于目标函数的性能以查看设计是否足以满足要求。这样的计算机模拟可以具有API(应用编程接口)或其他接口,以允许除设计团队之外的第三方对系统建模。

在制冷系统的简单示例的情况下,控制逻辑简单,即如果温度过高,则打开压缩机电源,并且如果温度在足够低的情况下,则关闭压缩机电源。然而,对于具有更多控制变量的更复杂环境中的控制系统,生成控制算法要复杂得多。例如,用于使飞机飞行的控制算法涉及更多的自由度、更多的控制变量和受控系统的更复杂的行为,加之以诸如风、动态障碍物等之类的环境的显著复杂性。尽管如此,仍然存在可以应用的目标函数,即在没有障碍物的情况下维持期望的轨迹,并且当障碍物存在时避开障碍物。另一个示例是控制自主陆地交通工具。用于使飞机飞行的相同特性也适用于控制自主交通工具,尽管作为控制的一部分要关注经常存在更多障碍物以及更紧密接近的更多障碍物。

用于这些复杂控制系统的一种传统方法是以命令式代码手动编写控制软件(使用语句改变程序的状态,诸如C++),这可能导致对开发、维护和扩展昂贵的复杂代码。它也容易出错并且难以测试:存在巨大量的可能场景,远远超出了测试序列中所覆盖的实际数量。例如,考虑自主交通工具在输入变量方面可能遇到的基本上无限数量的场景,即使局限于道路上行驶。因此,实际上,测试可能仅覆盖了极小百分比的可能场景。

另一种传统方法是使用所谓的机器学习通过使用基于神经网络的实现来有效地自动生成控制软件。该方法将开发成本向下降低到提出场景的训练集并且然后针对该训练集训练神经网络的成本。然而,训练集本身是可能场景的极小的一小部分,因此训练实现了相当于非常有限的测试。

此外,所得的控制网络在其行为不可预测(除非输入与输入训练集之一完全匹配)的意义上是“黑盒”。例如,不存在标识针对其进行测试的边界条件的手段。相比之下,对于手动生成的过程,如果它包含“if”语句,诸如:

则测试可以被划分成温度高于极限和温度低于极限的这两种情况。如果在控制软件中对温度不存在其他依赖性,则用两个温度值进行测试就足够了,即在极限以上或在极限以下,至少验证控制软件在这两种情况下做了什么。不存在测试所有温度值的需要。对于具有某种复杂性的神经网络,标识这些边界条件和输入之间的依赖性是不可行的,因为输出是权重和浮点输入的复杂函数。

复杂控制系统的控制动作可能性通常非常简单,尤其是当被设计成由人类操作时。例如,对于自主陆地交通工具,控制基本上只是转向角、油门位置和刹车位置。因此,控制系统的真正复杂性在于决定如何设置控制这些动作的控制变量的决策逻辑,例如在给定输入条件下选择什么样的合适转向角。公开了当存在可计算的目标函数时,自动生成用于复杂工程系统的控制决策逻辑。

图2是图示控制系统实施例的框图。在一个实施例中,图2的控制系统(202)是如图1中所示的计算机系统。如图2中所示,控制系统(202)接受来自传感器(204)、当前系统(206)状态和其他模块(208)的诸如操作员命令输入和配置文件之类的输入,决定动作,并通过控制变量(210)的设置将该(一个或多个)动作输出到致动器。

图3是图示基于规则的系统实施例的框图。在一个实施例中,图3的控制系统(202)是图2的控制系统(202)。如图3中所示,当(一个或多个)特定条件(304)与规则条件匹配时,例如通过规则执行引擎(306),规则集指定由控制系统响应于该(一个或多个)特定条件(304)而执行的(一个或多个)动作(302)。特定条件可以是输入值组合,从传感器输入(204)、工程系统(206)/控制系统(202)和/或其他模块的状态(图2中的208)取得输入。该动作可以通过设置控制变量(210)来实现,例如设置管控飞行器(206)油门的PID(比例-积分-微分)控制器的设定点。

在图3中,对控制系统(202)决策逻辑进行管控的规则可以在控制系统(202)执行前自动生成。这些规则然后可以用于实现控制系统(202)。在各种实施例中,该实现可以使用常规的规则执行引擎(306)、表匹配实现、从规则编译成“

反应式规则引擎。类似地,规则引擎通常重复轮询整个规则集以检查为真的规则条件,以便检测可能触发的规则动作。然而,该方法受到在快速轮询的开销和检测可能触发动作的条件的延迟之间的典型折衷所影响。特别是,为最小化触发动作的延迟而进行的较高频率轮询引入了大量开销,而为减少该开销而进行的较低频率轮询增加了在条件变为真之后的触发延迟。用显式规则条件代码支持的替代方法是具有反应式实现,在该反应式实现中,输入属性改变触发了对依赖于该输入的规则条件的即时重新评估。因此,如果用于该动作的规则条件现在变为真,则可以在没有延迟的情况下执行该动作。下面描述了这样的反应式实现。

反应式规则引擎实现。规则引擎传统上重复轮询整个规则集以检查为真的规则条件,以便检测可能触发的规则动作。然而,该方法受到在快速轮询的开销和检测可能触发动作的条件的延迟之间的典型折衷所影响。特别是,为最小化触发动作的延迟而进行的较高频率轮询引入了大量开销,而为减少该开销而进行的较低频率轮询增加了在条件变为真之后的触发延迟。用显式规则条件代码支持的替代方法是具有

在一个实施例中,编译器输出实施反应式规则引擎的代码。它在以下意义上可以是反应式的:它直接对输入改变作出反应,并且执行与由于输入改变而变为真的规则条件相关联的动作(如果有的话)。

图4是反应式规则引擎实施例的图示。在一个实施例中,如图4中所示,反应式规则引擎被实现为“监听器”模块(404)。“监听器”或等效的“观察者”(404)是面向对象编程中的传统软件设计模式。本质上,监听器(404)是一个模块,当“被监听”对象(402)之一中感兴趣的某个属性已经改变时,该模块通过回调得到通知。因此,监听器(404)对元素属性(402)的改变做出反应,如果规则条件为真,则将规则实例添加到匹配集(406)。

存在用于在C++和其他语言中手动实现监听器模块的已确立的技术。总体而言,在一个实施例中,编译器部分使用其他技术生成用于元素类型和回调通知的代码,所述其他技术包括在2008年5月21日提交的题为“DYNAMIC COLLECTION ATTRIBUTE-BASED COMPUTERPROGRAMMING LANGUAGE METHODS”的申请号为12/154,354的美国专利申请中公开的技术,该美国专利申请出于所有目的通过引用并入本文。它进一步使用在2008年5月21日提交的题为“NOTIFICATION-BASED CONSTRAINT SET TRANSLATION TO IMPERATIVE EXECUTION”的申请号为12/154,399的美国专利申请中的技术生成监听器模块(404),该美国专利申请出于所有目的通过引用并入本文,其具有用于每个回调通知的回调过程,即用于评估可观察子条件所需的每个可修改属性。在该情境下,如果规则条件为真,则规则可以被视为在模型和动作标签的匹配集之间的约束,该约束要求用于规则的动作标签在匹配集的集合中。

在一个实施例中,生成监听器模块(404)以监听模型中实例化的每个元素(402a,402b,… ,402z)的每个输入属性。因此,在C++术语中,编译器定义了具有数据成员的类,该数据成员指向该模块需要监听或响应的每个元素,要么作为单个指针,要么作为指针的集合(如果存在相同类型的多个这样的元素的话)。对于每个输入属性

注意,尤其是对于更复杂的规则,对象之间的关系阐明和/或指示连接。编译器还在监听器模块中生成必要的数据成员和集合,以允许对这些规则条件进行评估。例如,在计算机网络模型的一个示例中,对应于物理网络中断开链路的规则条件需要知道“其他”接口、即在链路另一端的接口,以评估规则条件,如通过以下代码说明的:

在以上内容中,“notifier”对应于执行回调的接口元素,并且otherInterface是其连接到的接口(通过Link和Unilink对象间接连接),如通过getOtherInterface返回。因此,编译器可以生成代码来存储和维护该监听器模块中的集合,该集合可以保存连接的接口对。因此,当上述条件作为执行该回调函数的一部分被评估时,上述代码中的“otherInterface”变量被设置为“notifier”接口通过访问该集合而连接到的接口。

注意,

在一个实施例中,监听器模块(404)被实现为基类的派生类(在C++术语中),其定义并实现动作程序。例如,动作可以如下在C++中手动指定:

也就是说,(生成的)RuleModule是ActionModule的派生类,可以对其进行显式编程,以便其能够访问由ActionModule提供的“受保护的”动作程序。然后,如较早前所述,可以为每个输入属性生成规则评估代码,并且对动作过程的调用只调用ActionModule中指定的那些,ActionModule通过继承并入Rule Module中。

在一个实施例中,可以通过手动编程提供监听器模块代码的所选部分。例如,通过在规则条件中指定“外部”,自动生成不为该规则生成规则条件,而是取而代之地假设/依赖于处理该条件的手动指定的代码。该规定认识到,对于特定的应用程序,通常需要一些超出编译器支持范围的特殊优化。

图5是受监视系统中反应式规则引擎的实施例图示。图5示出了被构造为监听器模块(404)和动作执行模块(408)的反应式规则引擎(400)如何连接到受监视系统(502至508)。在图5中,传感器(504)提供与受监视系统(502)相关联的值的测量,诸如温度、湿度、方位、速率等等。这些值由遥测系统(506)收集,遥测系统(506)递送这些值用于输入处理(508),该输入处理(508)可以对输入采取若干动作。例如,它可以将传感器输入值从一种测量转换为另一种测量,诸如从A/D单位转换为以摄氏度为单位的温度。它还可以在丢失值的情况下内插或外推传感器值,或者在可能由于传感器瞬变所致的尖峰或错误值的情况下平滑或校正传感器值。在这种情况下,它可以提供来自输入的计算值,诸如针对某个输入的加权移动平均值。它还可以将输入流离散成由阈值定义的少量离散值,诸如例如用于温度读数的冷、凉、暖和热。因此,反应式规则引擎(400)仅对横越阈值的温度改变进行反应。最后,它可以从监听器(404)保留输入值,直到某个指定的周期或回合,以支持规则的周期性轮询,而不是对每个输入改变进行反应,如稍后所述。也就是说,映射可以将反应式规则引擎限制为仅对阈值横越做出反应以减少噪声,保留输入值以减少噪声,等等。

在一个实施例中,如果多个规则条件依赖于同一输入属性,则编译器在同一回调函数中生成这些规则条件。

为了识别匹配集中不再有效的规则条件,周期性过程可以测试匹配规则条件的集合,并且如果其不再有效和/或当元素“条”改变时,可以从该集合中删除匹配规则条件的集合,其可以提示对集合中依赖于该元素的任何规则条件(RC)的重新评估。在其中任何时候仅有单个独立的规则条件应当为真的实施例中,与不同规则条件的匹配可以即时从匹配集中删除现有规则条件(如果有的话)。

在一个实施例中,作为优化,编译器可以识别模型中对象的情况,所述对象完全针对常量规则存在并且不对应于任何输入。例如,网络中的线缆通常不具有在其上的传感器,并且因此建模时没有输入指示器。它的存在仅为了提供指定一个或多个规则条件及其含义的情境。在这些情况下,编译器可以通过折叠关系来优化掉这些对象,以便直接对具有观察到的症状的对象进行评估。例如,在计算机网络的示例中,Link和Unilink对象可以被优化掉,并且接口之间的互连可以直接记录在Interface对象中。特别地,用该优化,接口包含属性“otherInterface ”,该属性“otherInterface ”指向它连接到的接口。在像“parent”这样的关系的特殊情况下,通过通常的parent反向指针,容易地从component元素中确定parent。

非二元关系可以被分解成二元关系,因此上述方法也可以用于处理三元关系/参数。当初始执行反应式规则引擎软件时,可以用实践中不存在的输入属性的初始值来实例化所生成的对象。然后,规则引擎过程和这些输入属性可以连接到实际的遥测技术,这使得这些输入属性被改变为不同的值,从而使得反应行为与如较早前描述的规则条件相匹配,并且然后调用相关的(一个或多个)规则(如果有的话)。

在一个实施例中,编译器优化回调函数中生成的代码,以减少执行时间和代码大小。例如,在上面的代码片段中,如果另一个规则条件需要“otherInterface”,则生成的代码将被优化为从上面的集合中访问该值一次,并将该值用于这两个规则条件。

作为另一个候选优化,在执行评估其余规则条件所必需的动作之前,可以首先测试涉及该通知输入属性的子表达式。例如,上述代码片段可以如下优化:

其中getOtherInterface是返回另一个接口的程序。

在“if”块内嵌套取得OtherInterface意味着仅当通知器的lossOfSignal属性为真时才执行getOtherInterface程序调用。在预期的常见情况下,该属性可能为假,从而节省了该调用的成本。

进一步的优化是识别正在被评估的规则条件中的公共子表达式。例如,对应于单向线缆断开的规则条件对应于在一端而不是另一端的信号丢失。也就是说,

通过识别公共子表达式,可以根据以下代码优化该规则条件:

在一个实施例中,编译器可以确定用于规则表达式的一个或多个参数可以根据一个或多个元素中的属性确定。例如,在网络的运行示例中,Interface实例可以具有指向它所连接到的Unilink实例的指针,并且Unilink实例可以具有指向它所连接到的接口的指针。另外,接口必须指定一个逆关系,诸如Interface中的connectedToBy关系。因此,编译器可以如下生成getOtherInterface的类似C++的实现:

该程序遵循这些指针,使用这些网络元件中的状态返回“otherInterface”,而不是具有接口对的单独集合,从而避免相关联的状态开销。

在一个实施例中,参考属性是集合。例如,在广播网络中,接口可以被视为连接到多个不同的接口。在这样的情况下,可以在迭代循环中评估规则条件,其中对于循环的每次迭代,“otherInterface”的值被设置为下一个其他接口。

在一个实施例中,可以将元素类型定义为另一元素类型的

而派生规则可以指定进一步导致SC2的子条件含义,因此它的条件表达式是:

在一个实施例中,可以通过指定它“扩展”现有规则条件,以相同类型指定规则条件,从而允许以与基本规则条件相同的元素类型定义派生规则条件。

派生规则条件与基本规则条件可以用于有效地指定子条件的部分匹配。或者相反,当一个或多个子条件缺失时,它可以用于避免规则条件未能匹配的情况,即使意图的场景非常可能是这种情况。例如,作为停止标志的对象的基本规则条件可以是具有观察到的八角形以及红色的子条件。派生的规则条件可以指定用单词“停止”刻记的标志的附加子条件。即使刻记不可以读取,对象仍然可以被识别为停止标志,但如果刻记可以读取,则对象以大的置信度被识别为停止标志。这些规则条件之间的派生关系提供了一个指示,当派生规则条件匹配时,该指示抑制与基本规则条件的匹配。

在一个实施例中,编译器可以基于推断自动生成派生规则条件,即子条件的反向传播,如上所述为症状的反向传播。特别地,编译器可以在可能为假的派生规则条件中添加观察到的子条件,从而将指定的规则条件与否则在观察到的子条件中重叠的使得它们触发的其他规则条件区分开。

上述优化可以用于优化用于处理基本条件和(一个或多个)派生条件评估的代码。在简单的情况下,代码被如下构造:

即,仅当基本规则条件成立时,才评估派生规则条件。

在一个实施例中,动作映射/冲突解决识别基本动作标签和派生动作标签二者存在的情况,并且仅执行与最具派生性的规则条件相关联的动作。

在一个实施例中,输入子条件可以依据实际输入属性被定义为表达式。例如,开关可以具有

在模型中,这可以表达为:

在具有输入子条件表达式的一个实施例中,作为优化,编译器生成代码,使得它在执行相关联规则评估之前针对通知执行与通知相关联的子条件是否为真的检查。也就是说,作为示例,如果通知了signalInLevel的改变,如果该值大于或等于“minSignalLevel”,则回调即时返回。

在如上述的一个实施例中,作为优化,编译器在调用回调之前生成评估该输入子条件的代码,并且仅在为真时调用回调程序。

编译器用于生成规则评估代码的方法可以如下描述:

步骤1填充OSS。在一个实施例中,OSS被表示为有向非循环图(DAG),DAG的叶子与规则条件RC相关联。

在上述步骤2中,假设标准编译器技术具有“if”和“else”语句的内部数据结构表示。此外,OSS只是表示子条件逻辑连接的数据结构,类似于在许多编译器内部的解析树结构。利用该表示,可以以与通常通过解析输入来构建这样的数据结构相同的方式,将附加语句添加到“if”语句的主体中。主要区别在于,规则条件嵌入在“if”或“else”语句中,该“if”或“else”语句以输入属性IA为条件,而不是像在普通编程语言中那样完全取决于解析的输入来放置。此外,编译器需要确定对评估规则条件所需的其他值的访问路径,例如,在我们的网络示例中,确定如何访问“otherInterface”。然而,该访问路径可以通过当前规则条件过渡到该子条件的关系以及从当前规则条件到这些其他子条件的关系来确定。特别地,对于每个其他子条件SCi,它使用逆关系来访问回到规则条件范围,并使用对这些其他子条件的隐含关系来构建访问每个子条件所需的数据的路径。在一个实施例中,编译器必须评估访问路径,部分是为了找到其他接口。因此,编译器可以使用DAG通过对关系取逆来确定该访问路径。

生成用于为去往条件的给定参数找到对应的一个或多个元素的代码的步骤是:

a.使输入子条件成为当前子条件

b.找到用于隐含当前子条件的关系的逆关系。(如图2中指定的connectedToBy关系所图示的,照此在模型中指示了逆关系。)

c.生成代码,该代码如下处理该逆关系中的每个元素(如果是集合,则为“for”循环;或者如果是单例(singleton),则为“if”条件(允许单例为空)):

i.取得隐含当前子条件的子条件,如果有的话。通常存在单个这样的子条件,所以这在这些情况下照此在代码中被指定。

ii.遵循该子条件所隐含的隐含关系,前进到输入属性,排除与刚刚遍历的逆关系相对应的关系。(在“otherInterface”的情况下,除了规则条件本身的情况外,不存在其他关系。)记录用作去往条件的参数的输入属性值。

iii.如果该子条件对应于规则条件,则参数生成完成。

iv.否则,在该子条件上递归调用该程序。

例如,在示例计算机网络的情况下,已知“lossOfSignalInEth14”的输入属性将由来自“lossOfSignalIn”子条件的名为“eth14”的接口暗示。后者没有其他含义。与隐含该子条件的关系的逆关系是connectedToBy属性,它然后提供入站Unilink对象。

该生成代码的该相同内部编译器数据结构表示可以用于执行各种优化变换,以使用标准编译优化技术以及模型中的结构和规范可能实现的其他技术来减小代码大小并且改进执行性能。

上述序列中所述的其余子条件的实现包括生成代码,以访问这些其他子条件所使用的值,与针对较早前的示例中的“otherInterface”所述的行一致。

在一个实施例中,模型以通用面向对象的语言表达,其中添加了

为了避免过多的回调开销,可以在对条件的输入属性中对输入值进行离散化,使得仅当值横越与条件相关的某个阈值时进行通知。例如,如果条件将温度指定为热作为子条件,则温度传感器可以提供仅指示“热”或“冷”的离散化属性。因此,不针对温度的每个微小改变发出通知,而是仅当输入值从“冷”改变为“热”时发出通知。

轮询和轮询优化。在一些应用中,规则引擎的反应式执行招致了过量的开销,因为输入值的快速改变,其中大多数不导致任何规则触发。例如,在一些应用中,仅当条件持续一段时间时才需要调用规则,而不是仅瞬时发生,因此规则触发很少发生和/或绝大多数反应不导致有用的处理。在规则被触发之后,指示触发的条件倾向于持续,直到条件被实质性地改变。在该假设的情况下,没有必要对每个输入改变做出反应。取而代之的是,规则引擎可以周期性地重新评估规则条件,而不是对每个输入改变做出反应。在一个实施例中,规则引擎可以调用相同的生成代码来周期性地评估所有规则条件。

在一个实施例中,通过仅在每个周期开始时将输入属性更新为其当前值来提供规则的周期性评估和触发。这些更新引起依赖于因更新而改变的输入属性的规则条件在当前输入上被(重新)评估。因此,相同的规则引擎可以周期性地执行并且仍然正确地操作,而不是对每个输入属性的改变做出反应。事实上,取决于如何配置输入处理,相同的生成代码可能被调用成为反应式的,或者被周期性地调用。也就是说,输入处理可以被配置为在接收到输入时或仅在轮询周期间隔处更新输入属性。注意,上述处理假设在该应用中,当触发条件在下一个周期开始时不为真时,响应于对这些周期之间的输入的中间改变而不触发动作不是问题。也就是说,当动作的条件仅是在两个执行周期之间瞬时为真时,应用允许跳过该动作。在一个实施例中,这可以通过在一段时间内冻结所有输入并在以后的离散时间段内更新来完成。

在替代实施中,编译器生成程序

在一个实施例中,优化程序的实现,以最小化或避免重复的规则评估。例如,考虑与断开的链接相关联的规则条件的先前示例,该程序可以认识到对具有接口对(intfj,intfi)的规则条件的评估与对具有接口对(intfi,intfj)的规则条件进行评估是相同的,因此作为该程序执行的一部分,仅执行其中之一。该实施例可以生成单个优化的pollEvaluate过程,该过程在被调用时实现所有规则条件,输出为真的规则条件的指示。

总体而言,相同的代码生成技术可以用于生成规则引擎代码,该规则引擎代码用于执行的周期性轮询形式以及用于较早前所述的反应式执行,并且在一个实施例中动态切换。软件编程领域的普通技术人员可以认识到,除了这里详述的之外,还可以实现多种优化,从而在轮询执行形式的情况下允许高效执行。

作为规则集合的控制系统。图3中的控制系统(202)在逻辑上被实现为用于控制系统的规则集合,其中规则被构造为常规的条件-动作方法。规则执行引擎(306)接受允许它评估规则条件(304)的输入。然后,它周期性地或响应于输入改变(或两者)执行与评估为真的一个或多个规则条件相关联的动作(302),如图3中图示的,该动作将控制变量(210)设置为适当的值。规则动作的重复评估和执行的效果是根据对应的目标函数对系统(202)的有效控制。

在一个实施例中,定期评估规则条件(304),诸如每100毫秒。在一个实施例中,每当输入改变时,规则条件被重新评估。在一个实施例中,规则条件被定期重新评估,但也当特定输入改变显著量——诸如多于配置的阈值——时被重新评估。

在一个实施例中,规则条件评估由匹配机制实现,其中规则条件(304)映射到症状,并且根本原因对应于将采取的不同动作。因此,可以在可预测的时间段内执行规则条件评估。在替代的反应式实现中,规则条件可以自动生成为常规的命令式“if .. else”框,如本文所描述的。在任一情况下,匹配机制可以在几毫秒或更短时间内确定将执行的动作,这对于物理系统的控制而言是足够的,因为它们通常反应慢得多。

在一个实施例中,所述规则由程序自动生成,所述程序在输入值组合(304)之上迭代,并针对每个潜在输入变量值组合IC,选择预期实现关于系统目标函数的良好结果的动作A’(302),并且然后输出具有对应于该输入值组合的条件的规则,并且动作为该动作A’。

在一个实施例中,通过为具有输入条件IC的每个可信动作A预测系统在时间T2的新状态S ’,执行动作A’的选择,假设其处于对应于时间T1处的IC的状态,并且其采取动作A。在每个此类预测之后,其评估该新状态S’的目标函数,并记录结果。在记录了所有动作A的每个这样的新状态S’的目标函数值之后,它选择实现最佳目标函数值的动作A’。在一个实施例中,一个或两个迭代循环可以用伪代码描述为:

例如,如果自主飞机处于稍微低于目标高度的状态,则可能的动作包括修改襟翼、副翼和油门设置。减小油门很可能对目标具有负面效果,就像用襟翼放下机头一样,这是通过对这些动作选择的预测来确定的。仅仅抬高飞行器机头可能是有效的,只要这样做不使飞机有失速的危险。通过预测具有当前空速范围和该动作选择的飞行器行为来检测该行为。如果该动作将产生失速,则目标函数将给该动作分配低的评级。动作可以包括增加油门以及调整襟翼二者。因此,每个生成的规则被构造为对于给定的输入值组合和已经被确定为相对于该输入值组合的目标函数最佳的动作为真的条件。

上述预测对于工程系统(206)是可行的,因为在给定已知的输入集的情况下,这样的系统必须被设计成具有可预测的行为。例如,具有给定油门设置、姿态、乘客/货物重量、空速等的飞机响应于减小油门而具有合理可预测的行为。该预测通常通过使用预测模型来实现,该预测模型被定义为系统设计的一部分。不具有预测模型的系统具有不可预测的行为,这在许多应用中是不可接受的。许多工程系统(206)具有作为提供该预测的设计过程的一部分而开发的对其行为的合理准确的计算机模拟。该模拟确保系统的行为当被实际实现时将满足应用要求,因此不仅仅是可预测的行为,而是

在一个实施例中,该预测通过模拟系统(206)在时间上向前的行为来执行,假设当前/开始场景对应于输入条件IC和正在采取的动作A。该模拟通常由时间步进模拟程序实现,该时间步进模拟程序基于输入和上述系统模型使系统状态在时间上向前步进。不一定存在系统行为的封闭形式的数学模型。该模拟软件可以合理地包括数千行计算机代码,并且可以具有可用的API。

目标函数也在工程系统(206)中可计算,因为需要系统满足的可量化的性能测量,诸如制冷区域保持在温度范围内的简单情况。如本文所指代的“可计算”意指编写返回性能质量的某种数字度量的软件程序是可行的。在一些情况下,不一定存在该目标函数的封闭形式的数学函数。软件实现的目标函数实现可以合理地是对输入进行案例分析的几千行复杂的计算机源代码,并且可以具有可供第三方使用的API。

自动生成规则集的成本显著,但在控制系统(202)执行之前招致并且离线,因此不影响控制系统(202)的性能。

控制决策逻辑的自动生成(或

优化自动生成。至少存在使得本文描述的技术更实用的三个方面。自动生成可能似乎是不可行的:对于

使其更实用的方面有:

·输入的离散化;

·将控制分区成单独的控制阶段的流水线,其中每个阶段具有决策逻辑;和/或

·输入值组合的删减。

输入和输出的离散化。在一个实施例中,来自输入源的值被离散成小的/有限的范围集。例如,不是以米为单位提供到前方交通工具的实际距离作为对自主交通工具(AV)控制系统的输入,而是可以在5个离散范围之一中提供距离,诸如:远(1)、近(2)、非常近(3)、接近(4)、太接近(5)。

输入的离散化意味着输入值组合集减少到范围组合集。例如,在距离示例的情况下,原始距离当以米为单位提供时可以具有几十亿值中的任何一个,然而在上述示例中,离散化成范围将输入值的基数减少到5,即标识与到前方交通工具的距离相对应的范围的5个值中的一个。

离散化意味着规则有效地实现了对连续函数的阶跃函数近似。例如,在自主交通工具(AV)的示例中,存在连续的公式,它依据与前方交通工具的距离的连续值,该连续值确定了要施加的制动程度。距离的离散范围意味着使用由范围集定义的步长来近似该函数。该集中的范围越多,近似就越好,但是自动生成的成本也越大,因为这增加了要考虑的输入条件的数量。

离散化还可以应用于否则可能被视为连续的输出/动作。例如,制动压力在逻辑上是连续值。然而,它可以被离散化成各范围,例如:无制动、稍微制动、中等制动、紧急制动和非常紧急制动。同样,该方法是用这些离散的范围来近似连续函数,从而急剧减少自动生成程序考虑的动作数量,并且因此降低自动生成的成本。

对于离散动作,在控制系统执行期间规则条件(304)的快速重新评估以及与计算机计算时间相比诸如制动器、标志、油门等之类的物理致动器反应相对慢的事实,进一步有助于近似。例如,如果正确的制动程度实际上在中等制动和硬制动之间,则控制系统(202)的输出可以在这两个范围之间振荡。然而,如果制动系统的反应时间

在一个实施例中,每个动作(302)仅仅是一个或多个输出控制变量(210)的设置,该输出控制变量(210)指示各种致动器、所述致动器的PID控制器或类似装置的控制水平。例如,对于AV,控制变量可以是方向盘的角度和负值的油门和/或制动水平。在一个实施例中,重复地选择相同的动作(302)——例如方向盘的负15度角——除了维持相同的控制设置之外不具有任何效果。一般而言,动作(302)可以是等幂的,使得在针对规则评估的每个时间步长重复选择相同的动作在适当的时候维持相同的行为。例如,如果输入条件(304)指示加速到给定的速率并且油门设置正在提供足够的加速度来实现此,则在交通工具低于目标速率的每个时间步长,不应当增加油门。取而代之的是,动作(302)是用以实现期望的加速度的油门控制变量(210)的设置,并且因此不改变,除非当前设置没有实现达到目标速率的期望加速度。替代地,动作(302)可以使用现有的或新的PID控制器设定点作为控制变量(202),以例如提供在期望的加速度曲线中实现目标速率的专用方法。

在一些应用中,位置也与控制相关。例如,在飞行控制系统中,飞行器的位置和姿态很重要。特别地,飞行器的精确位置可以以对应于高度、经度和纬度的连续值给出。然而,高度可被离散化成用于输入到控制系统的范围集,从而如对于本文所述的其他输入而言减少了要考虑的值的数量。此外,通常可能的是提供相对于某个目标位置的离散化输入。例如,控制系统通常关注于使得飞行器遵循指定的飞行路径,即“航道”。因此,控制系统知道飞行计划指示飞行器应当位于的位置和它实际位于的位置之间的差异就足够了。该差异通常比所涉及的绝对值小得多。因此,可以使用范围集中较少数量的范围,并且仍然实现有效的控制。对范围集的更小基数意味着自动生成比尝试使用绝对值有更低的成本。

简化/离散化动态环境的航线结构。如本文所指的,航道是离散化的定向路径段,受控系统(206)可以在某些条件下穿过

如本文所述,基于规则的系统是用于构造自动化控制系统的直观的吸引人的方法,因为用于控制的通常手动方法通常依据规则被指定。例如,在自动驾驶汽车的应用领域内,手动驾驶受包括道路规则和安全驾驶规则在内的规则管控。类似地,在自动股票交易系统中,存在与交易相关联的规则,所述规则由市场平台本身以及运行交易应用的金融机构二者施加。类似地,对疾病或紊乱的医学治疗通常遵循规定的规则集,例如,如果患者已经服用了药物Y,则不应当被规定服用药物X。

当将基于规则的系统(“RBS”)应用于自动化控制时,要解决的第一个问题是,用于手动/人类操作的规则通常依据约束来陈述,而不是依据自动化RBS中使用的条件:动作公式来陈述。例如,标准的驾驶规则是:不超过速度限制。该规则没有指示交通工具应当行驶的速度,而是将它留给人类驾驶员来判断。该示例在如下意义上是约束:它陈述交通工具的速度总是小于或等于速度限制。约束在本文被称为系统应当努力实现的陈述和/或条件。对于自动化系统,规则需要提供该判断。也就是说,在条件:动作格式中需要存在规则,使得系统响应于规则变为真的条件,以触发实现该约束的动作。

在简单的公式中,基本规则可以很容易地表述为:

然而,在现实中,减速的条件复杂得多,包括在交通工具前进方向上突然出现的动态障碍物的潜在存在、前方的交通灯、进入相对急转弯等等。交通工具何时应当减速的现实条件可能相当复杂,并且难以做对。

在股票交易应用中出现类似的复杂情况。初始规则可能是:不允许投资组合具有在单个股票上多于其价值的百分之X。然而,实现此的条件:动作规则可能更复杂。特别是,用于增加股票仓位或选择购买量的规则可能需要避免数量超过投资组合价值的该百分之X。然而,如果一个股票的价值显著上升或者投资组合中其余股票的价值显著下降,则有可能再次超过该百分之X的阈值,并且需要纠正动作。确切的动作可能取决于各种因素,包括这些场景中的哪一个引起该约束成为问题。为澄清起见,在投资情境中使用术语“工具(vehicle)”标示作为“投资工具”的特定投资类别。

另一个挑战是动态环境/应用中的动作不是瞬时动作,而是可能需将在一段时间内发生,在此期间条件可能改变。例如,在医疗应用中,触发开始让患者服用特定药物的动作不即时产生结果。此外,即使在发起该治疗之后,患者的状况也可能突然改变,从而要求不同的治疗方案。如本文所指的,“突然”意指相对于所选治疗具有效果所需的时间。因此,由于需要考虑已经发起某些行为但尚未完成的动作,规则集可能进一步复杂。

RBS面临的另一个挑战是,这些应用可能具有无限数量的待采取的动作,并且因此具有无限数量的待评估条件以选择这些动作,和/或这些条件可能快速且不可预测地改变。例如,在存在许多其他独立控制的交通工具的环境中操作的自动驾驶交通工具必须实现不与这些其他交通工具碰撞的约束,即使它可能不预测这些其他交通工具的行为。类似地,在自动化股票交易系统中,股票本身的价格可能在控制系统的控制之外显著变化。

控制系统可以实现响应于这些动态改变的动作,以试图维持为控制系统指定的约束。一个挑战是,当可能存在可以出现的无限数量的动态场景并且因此在控制逻辑中要考虑无限数量的情况时,为该控制指定正确、高效和可靠的逻辑。由于在许多情况下动作可能不即时执行而在动作执行期间环境可能进一步改变的事实,该挑战进一步复杂。

通常存在基于环境知识的顶层计划的基础,在本文和导航上下文中称为“路线引导”。例如,自主交通工具(“AV”)可以使用例如基于GPS(“全球定位系统”)的常规交通工具导航技术来生成沿着合理的道路和交叉路口序列到达目的地的计划。在金融环境中,自动化交易平台可以通过股票市场导航投资组合。随着时间推移,股票市场本身是动态改变的股票集合。在医疗环境中,医疗计划可以将患者导航回到健康。

实质上,路线引导模块产生与关键道路和交叉路口处的动作相对应的航路点序列。类似地,可能存在基于P/E比率、不同的指数、交易策略等的自动股票交易的顶层计划,其中航路点是至少在一天的交易应用中在早上的交易打开到一天结束时的交易关闭。

然而,该类型的顶层计划不一定考虑到可能出现在航路点之间的环境的特定动态方面。例如,进入要左转的交叉路口的AV需要将在交叉路口之前切换到左转航道,并且然后在遵守交通工具必须避免与其他交通工具和障碍物碰撞的约束的同时商定转弯,即使它可能不准确预测其他交通工具和动态障碍物在它正在执行该计划的同时可能做什么。类似地,可能存在诸如利率的改变之类的股票市场改变,这可能是未被预测的,并且可能要求快速的反应加上约束,诸如不使在特定的工业部门中变得权重过大。如本文所指的,这种形式的导航是“动态导航”,因为它考虑了环境中的动态元素。

本文描述了一种用于在不招致生成短期计划或动作过程的开销的情况下对动态改变的环境进行快速反应的技术。实现该技术的实施例包括自动导航交通工具、自动股票交易平台、医疗或在动态环境中行使控制或识别的其他应用。如本文所指的术语“自动化动态导航”被定义为确定和维持到目标位置的路线或轨迹的过程。该轨迹可以出现在广义的

本文描述了一种控制系统(202),其使用基于规则的系统实现受控系统或“交通工具”(206)通过动态“航道”构造环境的自动动态导航,其中触发动作是动态选择和执行“航道机动”以实现该导航。也就是说,导航是通过响应于规则触发执行新的航道机动和中断现有的航道机动来实现的,其中规则条件响应于环境和交通工具的改变。

如本文所指的,“航道机动”是随着时间推移执行的相对于航道控制交通工具的动作。例如,简单的机动是将交通工具的速度维持在当前航道的中间。在一个实施例中,机动是在动作时间期间独立于对环境的动态改变而执行的动作。例如,对右邻航道的航道改变是用于AV的机动。

航道。航道是离散化的定向路径段,受控交通工具可以在特定条件下穿过

航道对将被导航的环境或空间强加结构。也就是说,交通工具被约束在一个航道上行驶或切换到另一个航道并且然后在该航道上行驶,而不是能够行驶到任何地方。例如,在六航道的分隔高速公路上,除非当交通工具正在改变航道时,否则交通工具在最右侧航道、中间航道或最左侧航道中行驶。因此,航道概念减少了短期中动作的选择。例如,交通工具可以在当前航道中行进,或者否则切换到另一个航道。作为附注,可以有可能的是指定航道构造的环境,在该环境中,对于交通工具而言不可能从一个目的地到达另一个目的地,但是这样做是没有用的。

航道构造限制了交通工具必须导航的选择。例如,在自动驾驶汽车的情况下,交通工具可能必须相对于航道导航,例如沿着当前航道,切换到相邻航道,或者在交叉路口转入另一个道路上的航道。

航道的限制可能意味着一些原本可以执行的导航计划可能不被考虑或支持。例如,如果道路被完全阻塞,则对于交通工具而言实际上可以有可能的是去往“偏离道路(off-road)”,并且仍然在不受约束的导航中到达目的地。然而,对于航道构造的导航,除非在阻塞周围提供航道,否则交通工具被迫停止,并且在没有人工干预的情况下可能无法使其到达目的地。

航道构造也可以意味着交通工具动态导航也可以假设其他交通工具也使用航道构造的导航。例如,交通工具控制可以假设正在接近的交通工具可以保持在其所在的航道上,并且不突然偏离到当前交通工具的航道上。通过做出该假设,航道可以允许一些本来将不可行的行驶。例如,考虑约束:交通工具不应当具有超过交通工具在行进时间D内减速V能力的与距离D处的另一交通工具的接近速度V。该约束仅仅限于与当前交通工具在同一航道上的其他交通工具。对基于航道的行为的该限制精确地是当相邻航道上存在交通工具快速接近时,允许驾驶员假设继续在当前航道上行驶是安全的。

航道限制可能对于安全导航至关重要,因为在不依赖于航道和相关联交通工具行为的情况下,实际上不可能处理许多常见场景。例如,双航道公路上迎面而来的交通工具通常在其自己的航道中以比如65英里每小时行驶。在给定高速接近的情况下,如果该迎面而来的交通工具突然转向进入其航道,则对于受控交通工具而言实际上不可能避免碰撞。如果不存在航道,如果迎面而来的交通工具可以选择在任何时间导航到道路上的任何地方,则交通工具可能不以任何显著的速度行进。类似地,如果本应停放的汽车突然驶出其航道,则经过停放的汽车的交通工具可能无法实际上避免碰撞。

在使用高清晰度(HD)地图的道路上交通工具导航的情况下,航道信息对于在该区域中行驶的交通工具是

图6是自主交通工具应用示例中的航道的图示。地图(602)图示了具有位置目标(606)的AV(604)。顶层计划(608)的示例包括当它在各种高速公路、道路和像入口匝道和出口匝道之类的过渡道路上导航时的一系列航路点。沿着该计划,AV(604)在具有两个相邻航道(614)、(616)的当前航道(610)中行进。

其他领域/应用中的航道。在股票交易领域中,存在基于股票到不同行业区段的分类的航道。通常情况下,其他市场参与者不突然将所有投资切换成另一个随机的股票集。取而代之的是,已知诸如炼油厂爆炸、利率改变和其他示例之类的某些动态事件影响特定的“航道”或行业区段。因此,投资组合可以通过认识到每个事件仅影响一个或多个投资航道以及与(一个或多个)那些航道相关联的约束来对动态事件做出反应。例如,在炼油厂的重大爆炸可能对经营炼油厂的公司产生负面影响,但对炼油厂“航道”中的其他公司有益,并且对高度依赖于石油的其他公司(诸如运输“航道”中的公司)产生负面影响。

与自动导航交通工具的情况不同,自动股票交易应用可以具有分级“航道”,消费品的顶级分级、干货部门的中级分级和特定股票/公司的低级分级。它还可以具有对应于如下各项的多个投资主题:同时有效控制多个工具/子工具,遵守这些工具/子工具之间的约束,诸如避免跨投资主题的每个“航道”之上在作为成长阶段的公司的太多公司中停留太久。

图7A、7B和7C图示了用于股票交易的分级航道的示例。在图7A中,工具/app(702)当前处于“技术服务”顶级分级航道(704),其与“电子技术”顶级分级航道(706)和“健康技术”顶级分级航道(708)相邻。换句话说,工具/app可以从航道(704)移动到诸如航道(706)/(708)之类的相邻航道。在图7B中,工具/app(702)当前位于“技术服务”顶级分级航道中的“云部门”中级分级航道(714)中。“云部门”中级分级航道714与“流式传输”中级分级航道(716)和“操作系统”中级分级航道(718)相邻。在图7C中,工具/app(702)当前位于“技术服务”顶级分级航道中的“云部门”中级分级航道中的“GOOG”低级分级航道(724)中。航道(724)与“AMZN”低级分级航道(726)和“MSFT”低级分级航道(728)相邻。

在这种情况下,股票交易可以被视为同时导航多个投资工具/子工具,其中这些工具之间具有约束,遵守这些工具间的约束以及环境和每个工具之间的约束。

图7D图示了用于医疗应用的分级航道示例。工具/app(752)当前处于“阿司匹林治疗方案”航道(754),其与两个“无治疗方案”航道(756)、(758)相邻,从而指示患者在开始新的治疗方案之前停止旧的治疗方案所花费的时段。一个“无治疗方案”航道(756)与指示一种可能的新治疗的“芬太尼治疗方案”航道(760)相邻,而其他“无治疗方案”航道(758)与“心脏手术治疗方案”航道(762)相邻。在没有限制的情况下,图7A、7B、7C和7D的图示意指通过以二维显示航道(像物理道路)来绘制与图6的AV应用的平行线。通过在多于两个的维度中构思,相同的原理可以被推广到例如三维航道集,其中“无治疗方案”航道(756)、(758)是相同航道,并且其他治疗方案(754)、(760)、(762)等都与“无治疗方案”相邻。在没有限制的情况下,

“相邻”的概念在特定于应用的术语和约束中定义。特别地,当受制于一些动态条件执行从L0到L1的航道机动可行时,航道L0与另一个航道L1相邻。例如,参考图7D,正在用芬太尼治疗并因此在航道(760)中的患者,在不经过“无治疗”航道(756)的情况下,可能不直接从该航道或治疗切换到阿司匹林治疗航道(754)。这是必需的,因为当患者开始服用阿司匹林时,如果患者在其系统内具有一些芬太尼,则药物之间可能存在不良的相互作用。此外,仅允许患者当其症状已经稳定时才从芬太尼航道切换。航道之间的相邻指定是航道构造的环境的一部分。

航道机动。“航道机动”在本文指代在一个或多个航道方面发生的动作。例如,改变到右航道是将交通工具从当前航道改变到右侧相邻航道的机动。因此,如上所述,“相邻航道”在本文指代可以用航道机动从当前航道可到达的航道,类似于驾驶中的物理二维航道。从该意义上而言,航道和它们的相邻区域服务于离散化环境,因此机动的数量也是方便有限和可实现的。例如,航道到相邻航道的改变是少量机动中的一个,并且是直接实现的。

在许多情况下,机动可能是相对于航道的静态预计算解决方案。例如,“改变航道”机动是静态的,其中航道是标准宽度——可以使用简化和标准的运动计划,可能由交通工具速度参数化。此外,机动不必考虑动态事件或障碍物。因此,当选择了新的机动时,AV可以采取瞬时动作来执行所选择的机动,而不必动态地生成机动序列或程序。

图8是用于自主交通工具示例的航道机动的图示。一般而言,通常存在受控系统可以执行的有限数量的动作,尤其是当动作由参数限定时。例如,工厂机器人可以向前伸、向上举、向下举等等。类似地,如图8中所示,交通工具(802)可以减速(810)、加速(808)、向左改变航道(812)、向右改变航道(814)、执行左转(816)、执行右转(818)等等。这些动作是有界的动作集,可能由速度、路况等参数化。因此,机动可以在控制软件中预设和/或在硬件中实现(例如,硬连线),并因此以快速响应来执行。

航道构造可以用于显著减少在任何给定时间要考虑的动作数量。例如,考虑从点A伸展到点B的平坦平原。在没有任何航道的情况下,点A和点B之间存在无限数量的潜在路径供选择。在点A和点B之间的每个方向上具有一个航道的情况下,动作被减少为停留在行驶航道上(减速、加速或维持速度)、改变到其他航道通过以及在通过之后改变回到行驶航道。

在医学情境下,存在有限数量的航道机动,因为存在已知安全的确立的治疗序列。例如,医生永远不应当在不知道改变的做出是否安全的情况下规定治疗计划中的突然改变。在股票交易领域中,存在有界数量的动作或机动要执行,诸如在市场上卖出、止损等等。此外,被要求将其资产的百分之10用于高科技大盘股增长的股票投资组合不可以用任意的其他股票替换投资组合中的一个这样的股票。取而代之的是,参考例如图7C,如果投资组合具有AMZN(726)的大量持有,则它仅可以用GOOG(724)或NFLX(730)来替换该股票,因为这些股票与AMZN(726)相邻。如较早前提及的,该相邻的示例是用二维来说明的。在现实中,可以存在与AMZN相邻的许多不同的股票,这在N维空间中可以被容易地处理。

在其中导航严格可能的每个可能的场景下,对于机动而言严格意义上不一定允许交通工具或机器人导航;人类驾驶员可能也不一定允许。例如,考虑静态障碍物和动态对象的之字形集合以某种快速模式移动通过交叉路口或类似的地方。从理论上讲可以有可能的是,安全导航通过该交叉路口,但是很少有人类将能够在该情形下导航。该情形非常不寻常,因此在给定能够在感兴趣的实际现实世界场景中安全驾驶的经济价值的情况下,没有自动处理的能力将是可接受的。

因此,存在基本航道机动集,例如在AV情境中:在当前航道中维持速度、减速、加速、改变到右航道、改变到左航道、右转、左转等。这些机动可以被细化为更具体的机动。例如,减速可以被细化为:突发紧急制动、紧急制动、逐渐制动和减速/切断油门。航道结构暗示着相对小的基本机动集,其可以被细化为更大更复杂的集。

相比之下,在没有航道结构的情况下,存在无限数量的可能动作。此外,条件的数量至少是动作的数量,所以规则条件的数量也是过多的,除非严格限制动作/机动的数量。特别地,在没有航道的情况下,要么产生无限数量的动作——诸如“向右移动1英寸”、“向右移动2英尺”、“向右移动3码”等等,要么动作被参数化而没有限制或者没有有意义的限制。例如,如果动作是向右移动X英尺,则非常大的值可能与小的值相比具有不同的实现,所以本质上难以实现。相比之下,在具有航道的情况下,向右改变航道用于小的移动,但是要向右走显著的距离,交通工具向右转,并且然后沿着向右的航道进行,并且然后可能向左转继续前进。

在一个实施例中,航道机动被实现为“可抢占的”,如本文所指的,即使正在执行另一个机动,也可以即时触发新的机动。新的机动能够接管并执行其机动,基于先前的机动考虑交通工具的中间状态。例如,改变到超车航道并加速的机动可以先前被触发,但是在该动作完成之前,检测到动态障碍物,该动态障碍物触发该机动减速并返回到行驶航道。该机动识别交通工具相对于行驶航道的当前位置,并基于交通工具相对于行驶航道的偏移来调整其转向动作。特别是,如果在触发该新的机动的点处交通工具仅稍微偏离行驶航道,则转向动作可能需要与在交通工具已经完全处于超车航道的情况下相比更不激进。

航道子条件。“航道子条件”在本文指代指示一个或多个航道相对于该交通工具或其他对象的状态的输入。例如,hasRightLaneClear是子条件,如果相对于该交通工具的右航道没有障碍物,则该子条件为真。这是航道子条件,因为它联系到航道的状态。

正如航道结构减少了航道机动的数量,它也减少了所需的航道子条件的数量。这是因为仅有的动作是相对于航道机动的,所以仅考虑相对于航道的子条件是可接受的。也就是说,如果仅有的动作选择是航道机动之一,则对于航道机动选择的条件应当是充分的,如果依据航道子条件来表述的话。在具有航道的情况下,感兴趣的条件向下减少到应当触发这些动作中的每一个的条件。例如,在当前行驶航道中减速的动作具有与当前行驶航道和可能的相邻航道的状态以及当前航道中交通工具的当前位置有联系的少量子条件。

由于大多数或所有相关子条件与当前航道或相邻航道相关联,并且与交通工具相关,因此通常更容易从交通工具上的传感器确定航道子条件。例如,hasRightLaneClear子条件相对于交通工具,并且可以由在交通工具右手边的交通工具上的传感器感测,所述传感器包括相机、微波、雷达和激光雷达。航道子条件也在受控交通工具的局部,使其更容易准确地感测。

航道结构还允许排除可能引起假阳性反应的子条件。例如,在没有航道的情况下,交通工具可能想要在无论何时存在具有对该交通工具的高接近速度的对象时进行感测。在具有航道的情况下,在稍微弯曲的双航道高速公路上,对面航道上的来车可能看起来具有如此高的接近速度:对于航道结构,交通工具可能识别到对面航道上存在来车,并且仅使用该子条件来阻止在对面航道上超车,并且不以其他方式对其做出反应。

可能的是假设其中航道子条件不充分的场景。例如,石头可能从与道路邻近的高高的悬崖上掉落下来,直接掉落到交通工具上。利用由航空传感器驱动的附加子条件,可以有可能的是避免该碰撞。然而,这些都是极端和不寻常的情况,其超出了人类/手动驾驶员通常可以处理的范围。然而,扩展交通工具上的传感器以检测航道上方相关的子条件,并因此将这些子条件视为附加的航道子条件可以是可行的,如在该极端示例中要求的。

对于环境的航道构造,RBS导航通过具有作为航道子条件的规则条件,触发作为航道机动的规则动作来实现。例如,在自动驾驶汽车的应用中,一个子条件可以是当前航道前方受阻。另外两个子条件可以是相邻的左航道和相邻的右航道空闲。最后一个子条件可以是即将向右手边转。在具有该子条件集的情况下,对于交通工具而言选择切换到右航道的机动而不是制动或切换到左航道是合理的。也就是说,上述规则可以实现为:

注意,该规则不需要leftLaneClear的子条件,并且因此该leftLaneClear的子条件不包括在航道子条件中。

一般而言,航道构造的环境导致相对有界的机动集和相对有界的子条件集要考虑,因此规则集具有合理的设计、验证和执行规模。

离散化的一般有效性。在离散化中增加范围的数量改进了对这些连续值的近似,其以增加自动生成的成本和匹配的成本为代价,后者是因为所涉及的规则的数量,并且反之亦然。然而,由于物理致动器的平滑效果以及规则条件的快速重新评估的效果,相对于物理反应而言是快速的,所以相对少量的离散范围就足够了。该充分性也是由致动器的单调性使能实现的。也就是说,更大的制动压力导致更强的制动/减速。

如这里所述,用于控制系统(202)的设计工程师具有包括以下各项的任务:

·指定输入的离散范围集和输出的离散动作,并在控制准确度和自动生成成本之间做出适当的权衡;

·提供工程系统的预测仿真模型/实现(206);和/或

·提供工程系统的目标函数的实现(206)。

通过这些,设计工程师然后可以自动生成为系统提供决策逻辑的规则集,该规则集然后可以被编译成可执行代码或者由规则引擎执行。

在一个实施例中,在计算机(图1的100)上运行的程序接受作为范围集、模拟器模块和目标函数的输入规范作为输入,并且然后自动生成控制决策逻辑规则。

流水线分区。图9是图示控制系统的流水线分区的实施例的框图。如图9中所示,控制被划分成三个单独的流水线阶段。在该实施例中,控制被划分成流水线阶段,每个阶段具有其自己的目标函数和其自己的表或生成的代码。在该实施例中,依据阶段考虑的时间帧长度来构造阶段。例如,对于三个阶段,第一阶段可以处理用于控制的长时间帧,第二阶段可以处理较短的时间帧,并且第三阶段可以处理最短的时间帧。

例如,对于诸如飞机(916)之类的工程系统,如图9中所示,第三阶段(902)可能涉及实现指定高度、姿态和取向的短期控制方面。在这种情况下,它仅涉及作为传感器输入的飞机(904)的飞行特性和环境方面,诸如高度、风速等。第二阶段(906)可以负责战术控制,诸如利用用于天气和障碍物的适当传感器输入(908)避免障碍物和天气干扰。它选择的动作在较长的时间段内发生。然后,第一阶段(910)涉及利用用于地图和定位(912)的适当传感器输入在较长的时间段内遵循给定路线的策略。它的动作在甚至更长的时间段内发生。

该排序是强加的,因为像(910)的较早期阶段是更高级的,并且主要为像(906)的后续阶段提供目标或建议,以在可行的情况下尝试实现。例如,飞机可以具有生成第一阶段(910)向左倾斜以与着陆带对齐的策略,而第二阶段(906)可以检测到该动作将使其置于与另一个飞行器碰撞的路线上。因此,第二阶段(906)将(暂时)覆写第一阶段(910)建议的动作。在其他情况下,像(902)的后期阶段对由像(906)的先前阶段选择的动作进行细化。例如,第二阶段(906)可以指示向左倾斜,而后续阶段(902)将此细化为对副翼、油门和方向舵和/或PID控制器的特定调整(914),所述特定调整具有对这些机构的设定点。

照此,分区成多个阶段可以在如下意义上视为功能分区:第一阶段(902)决定策略,第二阶段(906)决定战术,并且第三阶段(910)控制实际执行。可能只是这些不同的功能部件需要考虑不同的时间帧的情况。

注意,有时通过致动器或通过传感器进行分区是不可行的。受控系统需要基于统一的控制机制正确操作。例如,当着陆时控制飞行的无人机需要跨所有的致动器和来自所有其传感器的输入进行协调控制。

这种通过时间帧的长度分区成阶段可以在若干方面显著降低自动生成的总体复杂性。

首先,这意味着一些阶段不需要一些输入,从而减少了该阶段的自动生成必须处理的输入条件的基数。例如,在控制飞行器中的最后阶段(902)仅涉及根据飞行器的物理特性(904)使飞机飞行。它不需要指示其附近的(外部)障碍物的输入。取而代之的是,它依赖于来自先前阶段的输入,该输入提供了避开这些障碍物的动作选择,如图9中的(905)所示。因此,用于该最后阶段(902)的自动生成仅需要处理其自己的相关输入(904)加上单个先前阶段输入(905),而不是取决于该先前阶段检测潜在障碍物并且确定如何避开它们所需的所有输入。类似地,较早期阶段(910)可以经由输入(909)将高级动作传递给后期阶段(906),而不关心这些动作如何被实现。它可以为后期阶段(906)不能实现期望的动作做准备,或者是因为潜在的碰撞,或者是因为它超出了飞行器(916)安全执行的能力。

为了说明,如果控制系统(202)具有21个输入,则非分区控制需要考虑

第二,该分区降低了用于后期阶段的自动生成成本,因为在这种情况下,自动生成可以以来自先前阶段的建议动作开始,并且使用该动作来减少动作范围,以评估建议动作是否与具有当前IC的该当前阶段强加的控制约束不一致。例如,在使无人机飞行的情况下,第二阶段(906)可以采用建议的向左倾斜机动,如果这样做不使无人机置于碰撞或失速风险的话。然后,评估预期的常见情况更高效,因为除了当输入场景要求覆写建议的机动时,不需要考虑替代动作。

第三,该分区减少了每个阶段中要考虑的时间步长数量,并且因此减少了自动生成的成本,即,其将长期决策的时间粒度要求与短期要求解耦。例如,飞行器(902)姿态的短期控制需要高速率的控制动作,比如10 Hz。另一方面,长期控制(910)动作需要用于执行的长时间帧,诸如执行转弯以与着陆跑道对齐。在单个阶段中评估这两者意味着在长时间段内具有精细粒度的时间步长,这使得评估非常昂贵。分阶段意味着仅有后期的精细粒度阶段需要考虑精细粒度时间步长。

第四,分区还可以降低目标函数的成本。这是因为较早期阶段仅必须评估影响高级决策的良好性的粗略条件,并且后期阶段仅必须评估精细粒度条件。此外,如上所述,在每个阶段中存在要考虑的比一个组合阶段少的输入。

第五,该分区允许用于将被独立执行的每个阶段的控制的自动生成。例如,如果用于第二阶段(906)的模型被细化,则用于第二阶段的规则可以被重新生成,而不修改用于第一阶段(910)和第三阶段(902)的控制规则。因此,随着时间推移,维护控制系统的成本可以显著降低。

在一个实施例中,可以使用的另一个分区是单独的规则集,该单独的规则集描述动作的错误是什么并且随后消除该错误。可以使用其他技术,诸如在2018年7月16日提交的题为“INCORPORATING RULES INTO COMPLEX AUTOMATED DECISION MAKING”的美国临时专利申请62/698,672中公开的技术,该美国临时专利申请出于所有目的通过引用并入本文,以及在2019年7月15日提交的题为“将规则合并到复杂的自动决策中”的美国专利申请No62/154,354中公开的技术,该美国专利申请出于所有目的通过引用并入本文,例如使用规则来寻找所探索的选项的缺陷。也就是说,来自诸如检测缺陷(910)的阶段的输入可以覆写使用一个或多个输入(909)来探索动作的后续阶段(906)

删减动作。在一个实施例中,删减函数被用于从考虑中消除某些动作,以避免诸如用于模拟和完全评估的不必要的开销。例如,考虑飞机低于目标高度的情况,不需要模拟降低目标高度的控制设置,诸如襟翼设置或减小的油门设置。如同模型模拟和目标函数一样,删减函数的实现可以是特定于应用的。

在一个实施例中,删减函数将部分或全部输入子条件(图3中的304)取作输入,并返回与可以可能相对于目标函数有用的动作相对应的动作子集(图3中的302)。例如,对于AV,如果没有一个输入条件指示不安全的情形,则所有的突发紧急动作——诸如紧急制动、左和右突然转向——可以被排除在考虑之外。此外,如果不存在指示不安全情形的输入条件,如果存在来自上游模块的建议动作(诸如图9中的906),则将动作集合删减为仅仅那些与建议动作一致的动作和一些默认动作应当是足够的。例如,在AV的情况下,如果不存在不安全的条件并且上游策略模块建议合并入左航道,则AV可以合理地将其潜在动作的选择限制为合并入左航道或停留在同一航道中。

另一方面,如果存在不安全情形,则可以将动作删减到仅仅那些与突然紧急机动相对应的动作,诸如紧急制动和突然转向。除了节省计算之外,该删减的另外优点是,它确保当AV处于不安全的情形时选择突发紧急机动,而不是不太激进的机动。例如,存在如下风险:自动生成可能选择例如加速并且改变到左航道中以脱离不安全的情形,这将比仅仅在同一航道中制动更不安全。这不应当发生在理想的目标函数中,但是在实践中难以确保。为避免反应过度,不安全状况可以被划分成稍微不安全、不安全和非常不安全。然后,仅当场景非常不安全时才采取非常激进的突发紧急机动。

对称性。在一些应用领域中,对某些输入场景和规则存在对称性,可以利用所述对称性来降低自动生成成本。例如,对于飞行器,如果动作是向左倾斜,则存在将使得飞行器向右倾斜的对称的输入子条件集。生成向左倾斜动作规则的动作处理步骤可以识别出存在向右的对称动作,并且生成规则,其中条件是当前规则的条件的对称版本,并且动作是向右倾斜。例如,如果对于左侧规则的输入是“靠近右侧相邻的飞行器”,则对于右侧规则的对称条件是“靠近左侧相邻的飞行器”。

在一个实施例中,在为当前输入场景生成动作之后,动作处理生成对称条件,并且然后找到以查看该规则条件是否已存在于该点处生成的规则集中。如果不是,则它将该对称生成的规则添加到规则集。该优化减少/消除了在所有潜在动作之上进行迭代的成本,以及对于现有规则对称的动作的相关联评估。

在一个实施例中,基于当前输入条件,使用规则集对在自动生成过程中的考虑之下的当前场景进行分类,以帮助删减。例如,输入条件(304)可以被匹配以确定将由控制解决的“根本原因”问题,从而为动作选择(302)提供类别。可以有可能的是进一步在不安全和非常不安全的情况下分类。

优选地,删减将不消除可能是对于情形的良好选择的某些动作。例如,对于自主飞机,向左倾斜飞机是左转动作的一部分,尽管总体目标的一部分是维持飞机在水平飞行中。

预处理以删减输入条件。存在可能没有意义的输入值组合。例如,对于AV,可以合理地存在指示存在可行驶的相邻左航道的输入条件。然而,永远不应当是左航道可行驶而另一个输入条件指示存在相邻向左的交通工具的情况。一种方法是出于考虑删减这样无效的输入组合,从而降低规则生成的成本。

在一个实施例中,对输入值组合进行过滤或删减以检测并跳过那些无效组合。这里,“跳过”可以意味着自动生成发出匹配这种情况的规则,并且采取报告“不可能的”输入组合的动作,而不是对所有可能的动作执行正常的基于预测的评估。

一种替代方法是将不同的逻辑输入折叠成单个输入,以避免或减少可能导致无效输入组合的冗余。例如,继续上面的示例,预处理输入可以允许AV控制系统创建虚拟交通工具,该虚拟交通工具相邻指示何时不存在可行驶的左航道。然后,输入组合的数量减少了,因为消除了单独的“是可行使”输入子条件,从而降低了自动生成的成本。类似的方法可以用于强加与交通标志相关的行为。例如,不是具有指示红色交通灯的输入条件,而是预处理输入可以引入在当前虚拟交通工具之前停止的虚拟交通工具,从而与红灯应当做的一样强制停止。

在一个实施例中,在提供给生成的控制系统之前,输入预处理将单独的逻辑输入映射到另一个实际输入,从而减少自动生成需要考虑的输入组合的数量。

上述方法的该组合要求在将输入条件提供给生成的控制系统之前对输入条件进行一些预处理,但在许多情况下,预处理可能相对简单,并可能类似于在提供给生成的控制系统之前对输入进行离散化所需的预处理,如本文所述。

粗略近似预测模拟。规则自动生成中的显著成本是由预测步骤招致的,即在一些数量的时间步长之上预测所考虑的动作(302)的结果的计算。该成本与预测模拟中达到可以用于评估该动作的状态所花费的时间步长数量成比例。每个步骤可以递增地推进感兴趣的对象,更新它们的位置、速率和加速度或者感兴趣的这些对象的任何动态特性。在许多情况下,实际的控制系统也是时间步进的。例如,用于AV的控制系统可以每100毫秒更新其机动决策,从而确保其对一些突然/意外事件做出快速反应,例如发起突然转向以避开前方的突然障碍物。也就是说,基于所需的反应而不是足够准确的模拟所需的时间粒度来选择周期。

各种机动可能花费显著的时间段来完成。例如,AV航道改变可能需要3-5秒来完成。因此,一种天真的方法将是模拟30到50个时间步长来评估潜在的动作选择,因为该天真的方法具有相当大的计算成本。

在一个实施例中,可以通过采用与实际控制系统实现中使用的更大的时间步长来降低该模拟成本。例如,如果该模拟采用1秒时间步长而不是100毫秒时间步长,则用于模拟的时间步长数量仅仅为3-5,从而将成本降低了一个数量级。该方法降低了模拟的准确度,并且因此降低了截止到最后一个时间步长的模拟的位置、速率等的准确度。然而,在使用通过该优化生成的规则集的实际执行中,对于控制行为的效果,存在几点需要说明:

1.在实际执行中,控制系统仍然使用更精细的时间步进,比如100毫秒的时间步长,使得它仍然可以对意外事件或条件差异发生时保证不同动作做出快速反应;

2.如果一些动态对象的行为在实际执行期间以意外的方式改变,则即使在规则生成期间使用了精细粒度的时间步进模拟,实际的结果也可能与预测的结果有显著的不同。如果不是,则粗略的时间步进方法很可能足够准确。稍微的不准确的效果很可能意味着在其中这样做“几乎不”安全的一些情形下不可以选择机动。总之,通过系统不能非常准确地知道未来的事实引入了不可避免的不准确性。当关于未来的假设正确时,粗略粒度模拟是足够的,并且如果该假设不正确,则精细粒度模拟也不是更好的;和

3.输入的离散化通常引入一定水平的不准确性。例如,考虑AV,前方的交通工具可以被映射到7.5到10米的范围内,作为范围集中的一个范围。然后,自动生成模拟基于该范围的某个值,但不一定是实际距离。例如,模拟可以使用8.75米的中点进行模拟,因此用于模拟的初始条件中存在的潜在不准确性直到1.25米。还存在许多不准确性的其他来源,包括输入传感器的不准确性和模拟模型相对于实际物理实现的不准确性。可以注意到,如果在该示例中的实际距离接近边界之一,诸如接近10米远,则在现实中很可能在该范围和下一个更高的范围之间振荡,从而引起控制相应地调整,而如果它远离边界,诸如大约8.75米,则在规则生成中使用的估计是合理地准确的。也就是说,当估计最不准确时,后续时间步长很可能补偿。

一般而言,控制系统的充分性基于:

1.在给定当前场景的情况下,如输入条件所捕获的,不做出不良的决策;

2.根据随后的输入值所指示的改变的条件和行为的错误预测,快速修正其决策;和/或

3.给定输入、模型和未来行为中的所有误差/不准确性/不确定性来源,包括在该控制系统的控制之外的元素,不可能实现最优或极其准确的控制。

总之,通过使用粗略近似预测模拟作为动作评估的一部分,可以显著降低规则生成的成本。

选择输入范围集。如本文所述的一个方面是选择将被用于离散化输入的范围集。多个潜在范围由将被控制的系统(206)的工程特性预先确定/预定义。例如,用于无人机的起飞速度被定义为使系统工程化的一部分。类似地,对于给定的交通工具,AV可以实现的最大减速度也是已知的。此外,作为速度的函数,乘客舒适度的最大安全转向角也可以由对应的力对乘客的已知效果来定义。

由工程特性定义的这些范围也可以通过添加中间阈值进行细化,以稍微增加范围的数量。例如,从诸如责任敏感安全(RSS)安全模型之类的技术中性模型开始,存在与距前方交通工具的安全距离以及与不安全距离相对应的范围。然而,在不安全范围内,在前方交通工具突然施加最大制动的情况下,可以标识与不同碰撞严重程度相对应的两个或更多个(子)范围。通过该细化,自动生成可以基于场景有多不安全来选择不同的动作。例如,如果在前方交通工具突然施加最大制动的情况下的最坏情况是对前方交通工具的保险杠的某种轻微撞击,则风险相对低。

将输入值映射到右范围包括对照阈值检查连续输入值以将该值映射到范围,以及输出用于匹配范围的范围ID。仍然可以使用已知技术对输入值进行预处理,诸如平滑掉输入中的小故障,就像可以利用卡尔曼滤波器所做的一样。

总之,将输入离散化至合适的范围可能书写起来简单,并且选择适当的范围及其相关联阈值通过系统的工程特性和其他已知方面(诸如人类因素)简化。

规则组合。在一个实施例中,自动生成方法对照现有规则检查每个新规则,以查看它是否可以与现有规则组合。该组合减少了表格或相关联的规则条件代码的空间,并且还减少了规则条件评估的计算成本。

例如,如果新规则Rj在条件和动作方面除了一个二元子条件之外与现有规则Ri相同,则这两个规则Ri和Rj可以由新规则Rk替换,新规则Rk对该子条件“不关心”。如本文指代的“不关心”术语是数字逻辑意义上的术语,也称为冗余、不相关和/或与特定分析不需要的术语相对应的无关值。然后,例如,规则评估可以使用三元匹配。

另一个规则组合方法是确定除了一些输入子条件IC的值之外,规则Ri和Rj相同,并且除了该输入子条件IC具有不同的对应动作之外,规则Rk与Ri和Rj相同。在这种情况下,规则Ri至Rj可以被组合成单个规则Rij,并且Rk可以被指定为具有比Rij更高的匹配优先级。可以组合这三个规则,使得当输入条件匹配Rij以及Rk时,组合的规则匹配,并且当输入子条件IC对应于Rk时,将使用Rk。当代码作为“if ... else”框的嵌套框生成时,该组合技术也适用,如利用下面的伪代码说明的。

作为示例,在给定输入条件集的情况下,飞行器的动作除了当高度在将其放置在接近地面的范围中时之外可以是相同的。然后,低的高度对应于Rk,并且所有较高的高度对应于Rij。该组合方法可以扩展到处理多个特定值加上“不关心”的情况。

另一个组合方法是识别何时规则子集在动作方面相同,并且至多在输入上的一个“不关心”指定方面逐对不同,并且否则相对于其他规则是唯一的。在这种情况下,该规则子集可以被组合成单个规则,并且匹配可以使用具有最大不匹配为

在一个实施例中,根据在输入子条件和掩码之间定义的某个距离度量,如果输入子条件在距离阈值内,则可以通过指定

其中N是其中掩码为真并且条目为假的输入子条件的数量,或反之亦然,P是条目“未知为真”并且掩码为真的输入子条件的数量,并且R是其中条目已知并且掩码条目未知的输入子条件的数量。在这些参数前面的常数可以在寄存器或变量中指定,并且因此可以取决于应用需要动态改变。可以实现许多其他距离度量和相关联参数。在一个实施例中,当近似匹配操作将输入子条件中的每个条目与掩码匹配时,它递增地计算距离,并且一旦计算的距离超过距离阈值,就确定不匹配。在一个实施例中,距离度量被指定为相对百分比而不是绝对值。

例如,可以通过选择最小数量的匹配或匹配百分比来组合规则子集,其中后匹配过程从这些选择的近似匹配之中选择最佳匹配。

并行化自动规则生成。在一个实施例中,规则集的自动生成是通过基于一些标准对输入值组合分区来并行执行的。例如,如果前三个输入变量可以各自取10个值,则一千个处理器中的每一个可以被分配给这些输入变量的特定三元组值,因此是1000个可能的三值组合之中的一个,并且被分配任务为对具有这前三个输入变量的该设置的输入场景进行评估。因此,这1000个处理器中的每一个都可以并行执行以生成规则子集,其中每个处理器都在考虑与其他处理器分离的输入场景。

在最终的步骤中,所有1000个规则子集可以合并为最终的规则集。在简单的方法中,这些规则子集仅仅被附加到主规则集中。在实施例中,上述规则组合作为该合并的一部分来执行,从而减少最终的规则集中的规则总数。

该并行执行可以在许多应用中极大地改进处理速度。例如,如果用于自主交通工具设计的自动规则生成的严格顺序执行需要三年的连续处理,则用1000个处理器并行化该执行将把执行时间减少到近似一天,从而使得对模型的迭代细化和校正可行。给定应用数千个处理器来承载复杂的决策逻辑控制应用的现代可行性,该并行化能力意味着甚至更昂贵/更详细的控制模型也可以变得实际,尤其是给定计算的成本可能仍然远低于这些控制系统的人工开发。

图10是图示自动生成控制系统的控制决策逻辑的过程实施例的流程图。在各种实施例中,图10的过程可以由如图1中所示的计算机来实行。在一个实施例中,图10的结果自动生成的控制决策逻辑最终可以由图2的控制系统(202)在执行时实行。

步骤(1002)在工程系统预测的可能输入值组合之上迭代。在一个实施例中,预测是一种机制(例如,软件、硬件、固件或组合),其给定工程系统处于初始状态,基本上确定给定工程系统的模拟动作的后期状态。例如,飞行模拟器和用于第三方接口的对应API可以是预测机制的示例。在一个实施例中,工程系统被设计成具有可预测的性能,这相对于由目标函数捕获的应用要求是令人满意的。

在一个实施例中,目标函数包括计算集,该计算集提供工程系统是否按照期望做出行为的指示,和/或目标函数量化在模拟行为和期望行为之间的差异。目标函数的示例是对于飞机上乘客的安全性/舒适度的测量。

在步骤(1004)中,输出生成的规则集,以进行存储或进一步处理。在一个实施例中,至少部分地通过使用所生成的规则集来进一步处理所生成的规则集,以便用于控制工程系统的控制系统的后续执行。

图11是图示对可能的输入值组合进行迭代的过程实施例的流程图。在一个实施例中,图11的过程由如图1中所示的计算机实行和/或作为图10中步骤(1002)的一部分。

在步骤(1102)中,针对在所有可能的输入值组合之上迭代的可能的输入值组合,选择将在工程系统上执行的动作。在一个实施例中,针对可能的输入值组合,选择将在工程系统上执行的第二动作,例如通过所有动作的迭代的一部分。在一个实施例中,该动作包括设置控制器的设定点,例如用于飞机上油门的PID控制器。在一个实施例中,选择将执行的动作至少部分基于预测和目标函数。

在一个实施例中,选择动作包括:针对可能的输入值组合在潜在动作之上迭代;以及根据目标函数选择潜在动作作为具有优选结果的动作。在一个实施例中,针对可能的输入值组合在潜在动作之上迭代包括:假设采取了所考虑的潜在动作,预测工程系统从与所考虑的可能的输入值组合一致的初始状态到后续时间的行为;以及根据目标函数评估预测的状态。

在一个实施例中,步骤(1002)和(1102)可以用伪代码描述为:

在一个实施例中,通过从与时间上向前的可能输入值组合一致的状态模拟工程系统,来执行对工程系统行为的预测。

在步骤(1104)中,生成规则——该规则指定当可能的输入值组合匹配时满足对应的规则条件集,以及与规则相关联的对应动作为所选动作。例如,如果自主飞机处于稍微低于目标高度的状态,则可能的动作包括修改襟翼、副翼和油门设置。减小油门很可能对目标具有负面效果,就像用襟翼放下机头一样,这是通过对这些动作选择的预测来确定的。仅仅抬高飞行器机头可能是有效的,只要这样做不使飞机有失速的危险。通过预测具有当前空速范围和该动作选择的飞行器行为来检测该行为。如果该动作将产生失速,则目标函数将给该动作分配低的评级。动作可以包括增加油门以及调整襟翼二者。因此,每个生成的规则被构造为对于给定的输入值组合和已经被确定为相对于该输入值组合的目标函数最佳的动作为真的条件。

图12是图示为可能的输入值组合选择将在工程系统上执行的动作的过程实施例的流程图。在一个实施例中,图12的过程由如图1所示的计算机执行和/或作为图11中步骤(1102)的一部分。

在步骤(1202)中,使用可能的输入值组合和对应的多个动作,通过评估与工程系统相关联的目标函数,对工程系统的多个预测执行评分。例如,给定有风的环境,多个预测可以包括给定增加油门的第一动作和给定减少油门的第二动作将预测的内容。预测可以包括:常规的时间步进模拟;以及更简单的预测功能,例如利用飞行器,如果升降舵下降,则飞机失去高度。

在步骤(1204)中,评估与工程系统相关联的目标函数,以至少部分基于多个预测结果从对应的多个动作中选择动作。在一个实施例中,规则由程序自动生成,该程序在输入值组合之上迭代,并且对于每个潜在的输入变量值组合IC,选择预期实现关于系统目标函数的良好结果的动作A’,并且然后输出具有对应于该输入值组合的条件的规则,并且动作是该动作A’。

图13是图示迭代选择动作的过程实施例的流程图。在一个实施例中,图13的过程由如图1中所示的计算机实行和/或作为图11中步骤(1102)的一部分。

在迭代中,步骤(1302)选择下一个动作A。步骤(1304)使用所选动作A执行预测,使用目标函数对预测结果进行评分。如果动作A具有比先前保存的动作更好的评分,则步骤(1306)将该动作A保存为候选动作。在一个实施例中,通过针对具有输入条件IC的每个可信动作A预测系统在时间T2的新状态S’来执动作作A’的选择,假设它在时间T1处于对应于IC的状态并且它采取动作A。在每个这样的预测之后,对该新的状态S’评估目标函数并记录结果。在记录了所有动作A的每个这样的新状态S’的目标函数值之后,它选择实现最佳目标函数值的动作A’。图13中没有示出的一个替代方案是保存每个动作的所有评分,并在可能的动作之上的迭代终止时选择具有最佳评分的动作。

在一个实施例中,输入值被离散化成更少数量的可能值。在一个实施例中,输入值被离散化成更少数量的可能值,并且这些离散化的值被用于在输入值组合之上的迭代中,以代替实际的输入值。

在一个实施例中,控制决策逻辑被划分成流水线阶段。在一个实施例中,生成的规则集对应于流水线阶段之一。在一个实施例中,可能的输入值组合对应于流水线阶段之一。在一个实施例中,对应于第一流水线阶段的所选动作被包括作为对应于第二流水线阶段的第二可能输入值组合的一部分。在一个实施例中,使用删减函数来消除一些可能的输入值组合。

尽管出于理解清楚性的目的,对前述实施例以一些详细进行描述,但是本发明不限于所提供的细节。存在实现本发明的许多替代方式。所公开的实施例是说明性的,并且不是限制性的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号