【问题标题】:Functional approaches to designing the discrete side of hybrid systems设计混合系统离散端的功能方法
【发布时间】:2015-09-27 04:44:38
【问题描述】:

我正在用 Haskell 开发混合系统的控制器。

FRP 库(现在我正在使用netwire,但有几个很好的库,并且对未来的库进行了很多有趣的研究)为问题的连续时间方面提供了一个很好的解决方案。用信号名称、尺寸、首选单位等对它们进行扩充,可以得到一个具有模块化、自我描述性并且有一条直截了当的途径来确保正确性的系统。

我正在寻找为离散时间方面提供类似属性的信息、民间传说或论文。从某种意义上说,问题要容易得多,状态机经过充分研究且简单。在其他意义上它更难,我将简要解释一下。

正确性显然是最重要的,幸运的是它也很简单。

自我描述更成问题。您希望控制器不仅处于正确状态,而且能够告诉您它处于什么状态。以及它是如何到达那里的。以及它下一步可能去哪里。所以你可以给所有东西加上名字,它可以工作,但它与模块化有些冲突。您还希望能够从更简单的行为构建复杂的离散时间行为。但是当你问系统它处于什么状态时,一般来说,高层次的答案比低层次的答案更有趣(或者至少一样有趣)。你如何干净地得到这个?我尝试了一些幼稚的方法,并以几种不同的方式将自己包裹在意大利面条中,但似乎必须有优雅的解决方案?

我在自我描述方面遇到的另一个问题是我想要一个自我描述条件的列表(通常比较:已经 10 秒了吗?我是否在下一个航路点的 3 英尺范围内?有电池电量低于 15%?等)正在被监控,这可能会触发下一个状态转换。这里有一些棘手的问题是什么是理想的语义,因为似乎其中一些事件“从下到上”处理得更好(例如,您正在执行的任何低级别步骤的预期终止条件)和一些“从顶部down”(例如设备故障检测、地理围栏……)。即使您放松自我描述的目标,这也可能导致自己的意大利面。

除了诊断之外,此处准确的自我描述信息对于抽象解释也非常有用,通过猜测哪些事件可能在何时发生,将系统的状态投射到未来。许多事件条件会导致自己做出相当简单的猜测(例如,使用良好的速度、燃料消耗率、计时器)。其他更复杂,但可能仍然值得为某些应用程序开发预测(例如,来自运营商的预期订单、天气预报、移动感兴趣物体的预计轨迹)。如果能找到一种设计,不仅可以用名称注释条件,还可以用这类东西的函数来注释条件。

有没有人愿意分享这方面的经验?

【问题讨论】:

  • 很长一段时间以来我在这里看到的最有趣的问题。将非常感兴趣。
  • 类似Atom,也许吧?
  • 是与否,@Cactus。在 Atom 或类似的实现方面,除了正确性保证之外,可能还需要提供及时性保证,但是在抽象的一两个层次上,我们如何构建系统,以便除了做正确的事情之外,它们还可以告诉我们它们是什么他们正在做什么,他们为什么要这样做,他们接下来打算做什么?我们如何以模块化方式支持预测未来?

标签: haskell functional-programming state-machine robotics control-theory


【解决方案1】:

好的,所以我会说你的问题的“真正”答案是你所要求的一些东西是开放的研究领域 --- 特别是我认为你想要的一些自我描述的功能可能是必要的某种程度的“意大利面”仅仅是因为你试图解决的问题本质上是复杂的。

话虽如此,您对模块化的关注正是正确的方法。我想说,看看Keymaera,因为我相信它具有您正在寻找的功能,尽管它是在 Java 中。我还建议您查看 Keymaera 网站上的出版物页面,因为这应该可以为您提供对一般问题的宝贵见解。

如果您不喜欢 Keymaera 的方法,您也可以考虑使用 Timed Automata,这是另一个建模方向,应该足以描述您的问题。

【讨论】:

  • 非常有趣。他们似乎解决了很多我认为不可能的验证问题。这些问题并没有像业余爱好者那样困扰我,但是当我戴上工业控制的帽子时,它们肯定很有趣。我有很多新的阅读要做,还有一个新的理由来学习定理证明。谢谢。 :)
  • 还应该注意,这解决了静态预测所有未来的一些事情的更困难的问题。怀疑存在更简单的策略,用于使用粒子过滤器动态预测某些未来的某些事情。同意自我描述问题在某种程度上本质上是复杂的,或者换句话说,当程序必须只传达其动态语义而不是其背后的原因时,可能需要不是最自然的程序结构。至少你需要一个带有某些必需“cmets”的语法。
猜你喜欢
  • 2011-03-06
  • 1970-01-01
  • 2010-09-22
  • 1970-01-01
  • 2011-08-23
  • 2010-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多